【发布时间】:2019-08-11 22:02:31
【问题描述】:
如果我需要通过神经网络反向传播两次并且我没有使用 retain_graph=True,我会收到错误消息。
为什么?我意识到保留用于第一次反向传播的中间变量以用于第二次反向传播是很好的。但是,为什么不简单地重新计算它们,就像它们最初在第一次反向传播中计算的那样?
【问题讨论】:
标签: python neural-network deep-learning pytorch
如果我需要通过神经网络反向传播两次并且我没有使用 retain_graph=True,我会收到错误消息。
为什么?我意识到保留用于第一次反向传播的中间变量以用于第二次反向传播是很好的。但是,为什么不简单地重新计算它们,就像它们最初在第一次反向传播中计算的那样?
【问题讨论】:
标签: python neural-network deep-learning pytorch
默认情况下,PyTorch 不存储中间梯度,因为 PyTorch 的主要功能是动态计算图,因此在反向传播后,图将被释放,所有中间缓冲区将被销毁。
【讨论】: