5. Pytorch:no_grad()
5.1. eval 和 no_grad
model.eval()
会保留所有网络层的计算数据。
Autograd 机制也在工作,执行
loss.backward()
仍然计算变量的梯度。其作用是使 Dropout 层失活(p = 1.0),同时改变 BatchNorm 的行为,采用全局的均值和方差。
with torch.no_grad()
Autograd 机制不工作,无法进行梯度计算。
可以加速前向推理,节约内存。
提特征时两者配合使用。
5.2. 参考资料
‘model.eval()’ vs ‘with torch.no_grad()’