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. 参考资料

  1. ‘model.eval()’ vs ‘with torch.no_grad()’