model.eval()
является своего рода переключателем для некоторых определенных c слоев / частей модели, которые ведут себя по-разному во время обучения и вывода (оценки) времени. Например, Dropouts Layers, BatchNorm Layers et c. Вы должны отключить их во время оценки модели, и .eval()
сделает это за вас. Кроме того, общая практика оценки / проверки заключается в использовании torch.no_grad()
в паре с model.eval()
для отключения вычисления градиентов:
# evaluate model:
model.eval()
with torch.no_grad():
...
out_data = model(data)
...
НО, не забудьте вернуться в режим training
после шага оценки:
# training step
...
model.train()
...