代码:
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()将模型转换为评估模式
1条答案
按热度按时间xxslljrj1#
解决了!谢谢@coder00!您需要通过调用model_ft.eval()将模型转换为评估模式