【问题标题】:`THIndexTensor_(size)(target, 0) == batch_size' failed. at d:\projects\pytorch\torch\lib\thnn\generic/ClassNLLCriterion.c:54`THIndexTensor_(size)(target, 0) == batch_size' 失败。在 d:\projects\pytorch\torch\lib\thnn\generic/ClassNLLCriterion.c:54
【发布时间】:2018-05-09 13:49:36
【问题描述】:

我正在尝试在犬种数据集上训练我的神经网络。在前馈之后,在损失计算期间它会抛出这个错误:

RuntimeError: Assertion `THIndexTensor_(size)(target, 0) == batch_size' failed.  at d:\projects\pytorch\torch\lib\thnn\generic/ClassNLLCriterion.c:54 

代码:

criterion =nn.CrossEntropyLoss()
optimizer=optim.Adam(net.parameters(),lr=0.001)


for epoch in range(10):  # loop over the dataset multiple times
        running_loss = 0.0
        print(len(trainloader))
        for i, data in enumerate(trainloader, 0):
            # get the inputs
            inputs, labels  = data

            # wrap them in Variable
            inputs, labels = Variable(inputs).float(), Variable(labels).float().type(torch.LongTensor)


            # zero the parameter gradients
            optimizer.zero_grad()

            # forward + backward + optimize
            outputs = net(inputs)

            loss = criterion(outputs, labels)
            loss.backward()
            optimizer.step()
            # print statistics
            running_loss += loss.data[0]
            if i % 2000 == 1999:    # print every 2000 mini-batches
                print('[%d, %5d] loss: %.3f' %
                      (epoch + 1, i + 1, running_loss / 2000))
                running_loss = 0.0

print('Finished Training')

此行产生错误:

loss = criterion(outputs, labels)

什么问题??

【问题讨论】:

  • 你能打印出outputslabels的形状吗?在loss = criterion(outputs, labels) 之前使用print(outputs.size(), labels.size())。那么我们将能够提供帮助。
  • 这里是 "print(outputs.size(), labels.size())" torch.Size([2500, 120]) torch.Size([4])的结果

标签: machine-learning neural-network deep-learning conv-neural-network pytorch


【解决方案1】:

我认为问题在于您缺少张量 labels 上的批次维度。错误说0th维度的大小不等于批量大小。

尝试改变这个:

loss = criterion(outputs, labels.unsqueeze(0))

请注意,outputs 张量应该比 labels 张量多一个维度,对应每个标签的分数,labels 应该只包含正确标签的索引。

【讨论】:

    猜你喜欢
    • 2018-03-10
    • 2021-04-04
    • 2018-04-11
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2018-01-27
    • 2022-12-12
    • 2021-03-11
    相关资源
    最近更新 更多