Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放

Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放,第1张

Pytorch-RuntimeError:尝试第二次向后浏览图形,但缓冲区已被释放

问题出在我的训练循环中:它不会在批次之间分离或重新包装隐藏状态?如果是这样,则

loss.backward()
尝试一直反向传播直到时间开始,该时间适用于第一批而不适用于第二批,因为第一批的图形已被丢弃。

有两种可能的解决方案。

1)在批次之间分离/重新包装隐藏状态。至少有三种方法可以做到这一点(我选择了这种解决方案):

 hidden.detach_() hidden = hidden.detach()

2)将loss.backward()替换为,

loss.backward(retain_graph=True)
但知道每个连续的批处理都将比前一个批处理花费更多的时间,因为它将必须一直反向传播直到第一个批处理的开始。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5647305.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存