当我BCELoss
用作我的神经网络的损失函数时,得到ValueError: Target and input must have the same number of elements
.
这是我的测试阶段代码(这是一个非常典型的测试阶段代码):
network.eval()
test_loss = 0
correct = 0
with torch.no_grad():
for data, target in test_loader:
data, target = data.to(device), target.to(device)
output = network(data)
output = output.to(device)
test_loss += loss_function(output, target).item() # error happens here
_, predicted = torch.max(output.data, 1)
correct += (predicted == target).sum().item()
变量的形状output
是[1000, 10]
因为有10
目标类(在MNIST数据集中),变量的形状target
是[1000]
因为它包含测试批次的目标类(测试的批量大小设置为10
)。那么,问题是如何应用BCELoss
作为CNN
网络的损失函数?
ps 我使用的数据集是图书馆提供的MNISTtorchvision
数据集。
ps这里提供的类似问题的答案并没有为我的案例提出解决方案。