首页 > 解决方案 > 为什么不使用 retain_graph=True 会导致错误?

问题描述

如果我需要通过神经网络反向传播两次并且我不使用retain_graph=True,我会得到一个错误。

为什么?我意识到保留用于第一次反向传播的中间变量以用于第二次反向传播是很好的。但是,为什么不简单地重新计算它们,就像它们最初是在第一次反向传播中计算的那样?

标签: pythonneural-networkdeep-learningpytorch

解决方案


默认情况下,PyTorch 不存储中间梯度,因为 PyTorch 的主要功能是动态计算图,因此在反向传播之后,图将被释放,所有中间缓冲区都将被销毁。


推荐阅读