PyTorch `torch.no_grad` 与 `torch.inference_mode`

PyTorch `torch.no_grad` vs `torch.inference_mode`

PyTorch 在 v1.9 中具有新功能 torch.inference_mode,即“analogous to torch.no_grad...代码 运行 在此模式下通过禁用视图获得更好的性能跟踪和版本计数器颠簸。"

如果我只是在测试时评估我的模型(即不训练),是否存在 torch.no_grad 优于 torch.inference_mode 的情况?我计划用后者替换前者的每个实例,我希望使用 运行 时间错误作为护栏(即我相信任何问题都会显示为 运行 时间错误,如果它不会作为 运行 时间错误出现,那么我认为使用 torch.inference_mode).

确实更可取

the PyTorch Developer Podcast 中提到了有关为什么开发推理模式的更多详细信息。

是的,在推理模式不会引发运行时错误的所有情况下,torch.inference_modeindeed preferabletorch.no_grad