如何解决这两个用于玩具MNIST示例的推理代码之间有什么区别
我发现这两个代码之间的精度值不同。 我认为这些是相同的代码,但给出不同的值。 为什么两个代码的结果不同?
[代码1]
def mytest(model,data_loader):
with torch.no_grad():
corrected_sample = 0
for x_test,y_test in data_loader:
x_test,y_test = x_test.to(device),y_test.to(device)
x_test = x_test.view(-1,28*28).float()
prediction = model(x_test)
#predicted_class = prediction.max(1)[1]
predicted_class = torch.argmax(prediction,1)
corrected_sample += (predicted_class==y_test).float().sum().item()
accuracy = corrected_sample / len(data_loader.dataset)
print("Accuracy : {}".format(accuracy))
data_loader_test = torch.utils.data.DataLoader(mnist_test,batch_size=1,shuffle=False)
mytest(model,data_loader_test)
准确度:0.92232
[代码2]
with torch.no_grad():
x_test = mnist_test.test_data.view(-1,28*28).float().to(device)
y_test = mnist_test.test_labels.to(device)
prediction = model(x_test)
correct_prediction = torch.argmax(prediction,1) == y_test
accuracy = correct_prediction.float().mean()
print("Accuracy ",accuracy.item())
精度0.8826999664306641
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。