PyTorch 多个网络反向传播时出现梯度计算错误

本文讲述了作者在使用PyTorch实现MADDPG算法时遇到的RuntimeError,原因在于没有正确地顺序计算actor和critic网络的损失并进行反向传播。解决方法是将每个网络的loss计算和backward操作分开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

torch具体报错内容如下

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [128, 1]], which is output 0 of AsStridedBackward0, is at version 
2; expected version 1 instead. Hint: enable anomaly detection to 
find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).

我现在正在做的算法是关于强化学习MADDPG,需要用到两个网络actor和critic

经过调试之后发现,我在计算出critic loss之后并没有进行critic网络的反向传播,而是开始计算actor loss。两个网络的loss都计算完毕后才开始进行反向传播就会出现上述报错。

解决方法就是将两个网络的loss和backward都单独封装计算即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值