错误: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的原因。
方法1:将inplce=True的地方全部改为False,主要是在ReLU处,经过修改发现对我没有用。
方法2:将所有的a+=b的地方改为a=a+b,对我没有用。
方法3:将代码中nn.Sigmoid函数删除掉,用其他的归一化方法。解决问题。文章来源:https://www.toymoban.com/news/detail-714240.html
方法4:参考别的大佬文章,都是sigmoid函数处出错,大佬链接因为我的代码已经运行起来了,就不想暂停,下次再跑试验一下这个方法。
文章来源地址https://www.toymoban.com/news/detail-714240.html
到了这里,关于解决RuntimeError: one of the variables needed for gradient computation has been modified by an inplace的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!