Trying to backward through the graph a second time, but the saved intermediate results have already

错误含义:在第二次反向计算的时候,计算图已经被释放

错误代码:

p_s = F.log_softmax(fusion_output[i] / 4, dim=0)
                    p_t = F.softmax(kl_store[pred[i]] / 4, dim=0)
                    temp_loss=F.kl_div(p_s.detach(), p_t.detach(), reduction='sum') * (4 ** 2) 

正确代码:

p_s = F.log_softmax(fusion_output[i] / 4, dim=0)
                    p_t = F.softmax(kl_store[pred[i]] / 4, dim=0)
                    temp_loss=F.kl_div(p_s.detach(), p_t.detach(), reduction='sum') * (4 ** 2) 

如果按照错误提示直接修改loss.backward(retain=TRUE)容易导致存储过多的计算图。所以我找了下代码,发现p_s忘记detach了,加上就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值