断言 `cur_target >= 0 && cur_target < n_classes' 失败
Posted
技术标签:
【中文标题】断言 `cur_target >= 0 && cur_target < n_classes\' 失败【英文标题】:Assertion `cur_target >= 0 && cur_target < n_classes' failed断言 `cur_target >= 0 && cur_target < n_classes' 失败 【发布时间】:2018-06-02 01:25:40 【问题描述】:我是神经网络的新手,正在尝试在 Pytorch 中训练一个简单的神经网络,并将标记数据作为分类器。数据包含 6 个特征和 3 个标签。不幸的是,当我运行代码时,错误代码:
断言 `cur_target >= 0 && cur_target
我已阅读有关此主题的所有可能主题,但尚未找到可以为我解决此问题的解决方案。
我的标签是 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]))
【问题讨论】:
跟随错误。验证您的标签是否正确。xtrain
和 ytrain
是什么?它们的形状如何?
【参考方案1】:
适合我
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)。
【讨论】:
以上是关于断言 `cur_target >= 0 && cur_target < n_classes' 失败的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 断言失败:(-215:断言失败)npoints >= 0 &&(深度 == CV_32F || 深度 == CV_32S)