解决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的原因。
方法1:将inplce=True的地方全部改为False,主要是在ReLU处,经过修改发现对我没有用。
方法2:将所有的a+=b的地方改为a=a+b,对我没有用。
方法3:将代码中nn.Sigmoid函数删除掉,用其他的归一化方法。解决问题。
方法4:参考别的大佬文章,都是sigmoid函数处出错,大佬链接因为我的代码已经运行起来了,就不想暂停,下次再跑试验一下这个方法。
来源地址:https://blog.csdn.net/qq_43733107/article/details/128553473
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341