RuntimeError: one of the variables needed for gradient computation has been modified by an inplace o

在进行反向传播时报了下面一个错误:

可能的情况:

一、参考博客https://blog.csdn.net/DuinoDu/article/details/80435127

找到网络中的in-place操作:

x = x + 1 # not inplace
x += 1 # inplace

把第二种写法替换成第一种。

二、也就是我遇到的情况,进行in-place操作,就比方说y加上x,y的值就改变了,就可以用y.add_(x)这样y就直接被改变了。Torch里面所有带"_"的操作,都是in-place的。例如x.copy_(y)

找到我代码中使用“_”的操作,

output = output.masked_fill_(re_gtruth.eq(1), 0)
### 改成下面写法
output = output.masked_fill(re_gtruth.eq(1), 0)

还是基本功的问题。

目前只知道这两种可能情况,其他情况以后遇到再更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值