Pytorch小批量预测错误

jgwigjjp  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(144)

代码:

firstItem, first_y = dataset[0]
secondItem, second_y = dataset[4444]
thirdItem, third_y = dataset[55555]
 
print(f"expected: {[first_y, second_y, third_y]}")

X = firstItem.unsqueeze(0)
X = torch.cat((X, secondItem.unsqueeze(0)), 0)
X = torch.cat((X, thirdItem.unsqueeze(0)), 0).cuda()
 
 
with torch.no_grad():
    pred = model_ft(X)
    print(f"predicted: {pred.argmax(1).cpu().numpy()}")

我从数据集中得到3个项目,并通过模型处理它们。
因此,该代码的输出:

expected: [0, 12, 89]
predicted: [ 0 12 89]

一切都很完美!期望值等于预测值。
现在让我展示一下我不懂的魔术。我们只处理2个项目而不是3个项目。

firstItem, first_y = dataset[0]
thirdItem, third_y = dataset[55555]
 
print(f"expected: {[first_y, third_y]}")

X = firstItem.unsqueeze(0)
X = torch.cat((X, thirdItem.unsqueeze(0)), 0).cuda()
 
 
with torch.no_grad():
    pred = model_ft(X)
    print(f"predicted: {pred.argmax(1).cpu().numpy()}")

和输出:

expected: [0, 89]
predicted: [202  89]

不明白为什么在这种情况下预期和预测的项目是不一样的。如果我们只处理一个值,那么结果会是相同的(错误的预测)

**已解决!**感谢@coder00!您需要通过调用model_ft.eval()将模型转换为评估模式

xxslljrj

xxslljrj1#

解决了!谢谢@coder00!您需要通过调用model_ft.eval()将模型转换为评估模式

相关问题