PyTorch 从 v1.9 版本开始引入了新的功能 torch.inference_mode
,它被描述为“类似于 torch.no_grad
… 在这种模式下运行的代码通过禁用视图跟踪和版本计数器的增加来获得更好的性能。”
如果我在测试时只是评估我的模型(即不进行训练),有没有什么情况是 torch.no_grad
比 torch.inference_mode
更可取的?我计划将所有前者的实例替换为后者,并期望使用运行时错误作为防护措施(即我相信任何问题都会以运行时错误的形式显现,如果没有以运行时错误的形式出现,那么我认为使用 torch.inference_mode
确实是更可取的)。
关于为什么开发推理模式的更多细节可以在 PyTorch 开发者播客 中找到。
回答:
是的,在推理模式不会引发运行时错误的所有情况下,torch.inference_mode
确实比 torch.no_grad
更可取。请查看这里。