【问题标题】:RuntimeError: Assertion `cur_target >= 0 && cur_target < n_classes' failedRuntimeError: 断言 `cur_target >= 0 && cur_target < n_classes' 失败
【发布时间】:2019-09-22 16:00:23
【问题描述】:

我明白了:

RuntimeError: Assertion `cur_target >= 0 && cur_target

运行此代码时:

    criterion = nn.CrossEntropyLoss()
    #Define the optimizer
    optimizer=optim.SGD(net.parameters(),lr=0.01,momentum=0.9)
    epochs=20
    for epoch in range(epochs):
        print ("epoch #", epoch)
        running_loss=0.0
        for i, data in enumerate(train_loader,0):
            inputs,labels=data
            inputs,labels= inputs.to(device),labels.to(device)
            optimizer.zero_grad()   
            #train
            output=net(inputs)
            loss=criterion(output,labels)

    print ("loss: ", loss.item())
    running_loss+=loss.item()
    loss.backward()
    optimizer.step()
    print ('Finished Training')

【问题讨论】:

  • 我面临同样的问题,但仍未解决。我也不知道怎么解决。
  • 你没有指出这个模块来自哪个库。这在 Python 或 Anaconda 中不是问题,它在包含发出消息的代码的库中(快速谷歌搜索建议使用 Pytorch?)

标签: python python-3.x machine-learning pytorch cross-entropy


【解决方案1】:

例外情况是您的标签之一超出范围。 也许他们从 1 而不是 0 开始?尝试打印出来。

【讨论】:

    【解决方案2】:

    我遇到了这个确切的错误(是的,它来自 Pytorch),我会发布我的解决方案,以防其他人可以从中受益。

    我的错误是因为我只有 2 个输出到分类器,但数据有 3 个标签。

    通过确保分类器给出 3 个类来修复。

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 2018-06-02
      • 1970-01-01
      • 2017-11-20
      • 2021-04-09
      • 2014-01-16
      • 2018-01-30
      • 2011-04-02
      • 2014-12-18
      相关资源
      最近更新 更多