RuntimeError: Trying to backward through the graph a second time, but the buffers have already been

遇到的问题记录:

这个错误的意思是在进行反向传播时,前面缓冲区里的计算图已经被释放了。在前向传播过程中每进行一次计算都会被加入到缓冲区的计算图中,而反向传播时,根据计算图中需要进行梯度传递的部分进行反向梯度计算。我遇到的这个问题是在同时迭代更新两个网络的过程。当第一个网络进行backward之后,相应的计算图就已经被释放了,而两个网络的训练损失有部分重叠,所以当第二个网络backward时,就会出现这个问题。

解决的方法是将重叠部分的损失进行重新计算用于第二个网络。注意两个网络的损失要分开计算,在计算过程中注意张量的使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值