model.eval()
负责改变batchnorm、dropout的工作方式,如在eval()模式下,dropout是不工作的。
torch.no_grad()
负责关掉梯度计算,节省eval的时间。
只进行inference时,model.eval()
是必须使用的,否则会影响结果准确性。 而 torch.no_grad()
并不是强制的,只影响运行效率。
一般写为:
# evaluate model:
model.eval()
with torch.no_grad():
...
out_data = model(data)
...
标签:no,data,torch,pytorch,eval,model,grad
From: https://www.cnblogs.com/odesey/p/16993432.html