我是神经网络的新手,我正在尝试用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]))
答案 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)。