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

错误:RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [6,128,60,80]], which is output 0 of SoftmaxBackward, is at version 1; expected version 0 instead. Hint: enable anomaly detection to find the operation that failed to compute its gradient, with torch.autograd.set_detect_anomaly(True).
变量的计算中包含了inplace操作,在SoftmaxBackward出。

报错位置:损失反向传递时,猜测可能在计算梯度时发生错误。错误原因可能是inplace的原因。
解决RuntimeError: one of the variables needed for gradient computation has been modified by an inplace_第1张图片
方法1:将inplce=True的地方全部改为False,主要是在ReLU处,经过修改发现对我没有用。

方法2:将所有的a+=b的地方改为a=a+b,对我没有用。

方法3:将代码中nn.Sigmoid函数删除掉,用其他的归一化方法。解决问题。

方法4:参考别的大佬文章,都是sigmoid函数处出错,大佬链接因为我的代码已经运行起来了,就不想暂停,下次再跑试验一下这个方法。
解决RuntimeError: one of the variables needed for gradient computation has been modified by an inplace_第2张图片

你可能感兴趣的:(pytorch踩坑,深度学习,python,人工智能)