断言`cur_target> = 0&& cur_target< n_classes'失败了

时间:2017-12-19 15:08:01

标签: python-3.x neural-network classification pytorch

我是神经网络的新手,我正在尝试用Pytorch训练一个简单的神经网络,标记数据作为分类器。该数据包含6个功能和3个标签。不幸的是,当我运行代码时,错误代码:

  

断言`cur_target> = 0&& cur_target< n_classes'失败。

我已经阅读了有关此主题的所有可能的主题,并且没有找到解决方案来解决这个问题。

我的标签是0,1和2,我的要素数据的数值范围是〜-12到~2000。

有什么想法吗?

#hyperparameters
hl = 10
lr = 0.01
num_epoch = 500

#build model
class Net(nn.Module):

    def __init__(self):
        super(Net, self).__init__()
        self.fc1 = nn.Linear(6, hl)
        self.fc2 = nn.Linear(hl, 3)

    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x
net = Net()

#choose optimizer and loss function
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(net.parameters(), lr=lr)

#train
for epoch in range(num_epoch):
    X = Variable(torch.Tensor(xtrain).float())
    Y = Variable(torch.Tensor(ytrain).long())

    #feedforward - backprop
    optimizer.zero_grad()
    out = net(X)
    loss = criterion(out, Y)
    loss.backward()
    optimizer.step()

    if (epoch) % 50 == 0:
        print ('Epoch [%d/%d] Loss: %.4f' 
                   %(epoch+1, num_epoch, loss.data[0]))

1 个答案:

答案 0 :(得分:0)

为我工作

xtrain = [[ 1.0721,  0.7327, -0.3655,  1.0686, -0.5575,  1.0052],
          [ 0.5194, -0.0946,  0.0181,  0.6665,  0.0231,  0.3278],
          [-0.2119, -0.5824, -0.8057,  0.5669, -1.3236, -0.1913]]
ytrain = [0, 1, 2]

如果我设置ytrain = [0, 1, 3],我会收到你的错误。我要说检查你的标签确实只包含0,1和2。 也可能是您的数据形状与图层的形状不匹配(另请参阅https://discuss.pytorch.org/t/solved-assertion-cur-target-0-cur-target-n-classes-failed/8034/2)。

相关问题