【pytorch】one of the variables needed for gradient computation has been modified by......

运行 loss.backward() 的时候报错
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation…
经过网上提示,发现没有用
于是自己找了原因。慢慢发现是自己的每次网络输入出的问题。

源代码

	  ite[j, n - 2 : n] = temp
      # my_step=torch.randn(1,1,n).to(device)
      # output = model(my_step)
      output = model(ite[j])

运行到后面 loss.backward() 就报错了。
采用注释的代码发现不是网络问题,是输入问题。
修改成:

	  # ite[j, n - 2 : n] = temp
      my_step=torch.cat((ite[j, : n - 2],temp),dim=0)
      # my_step=torch.randn(1,1,n).to(device)
      output = model(my_step)

可以运行了。

总结:一般我们在训练网络的时候,输入数据是事前准备好的,按照batch_size取到放进网络就好,但是难免有时候会想要动态的修改输入数据,再训练,我这里就是修改了一下输入,所以出了问题。究竟底层原因是啥也不是很清楚,个人想法是放入GPU的输入数据不要轻易更改,可以另外新建变量的方式进行修改其中部分的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值