#pytorch #mnist
#pytorch #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
Комментарии:
1. Какова форма
mnist_test.test_data
? Ваша модель находится в режиме оценки?2. Форма mnist_test.test_data равна [10000,28,28]. При попытке режима eval «model.eval()» не имеет значения. модель просто «nn.Linear (784,10, смещение = True)».
3. Можете ли вы показать нам полный код? (должно быть достаточно коротким) Я не могу найти здесь ничего неправильного.