概述
具体问题如下:
RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation: [torch.FloatTensor [2, 64, 96, 2]], which is output 0 of SelectBackward, 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).
解决方法如下:
首先定位问题,根据提示[torch.FloatTensor [2, 64, 96, 2]], 我通过debug定位问题的位置 找到如下的代码片段:
然后整个代码有五处这类型的代码 所以都有可能导致这类的问题存在
因此根据大佬的建议 进一步定位问题的位置 搞清楚到底哪部分出问题,然后有了一下的代码去替换上述的位置的代码,准确定位问题:
然后定位得到确实出问题的四处代码,之后寻找方法解决inplace的问题,找到如下的链接:
PyTorch中的拷贝和就地操作总结_Chris_34的博客-CSDN博客_pytorch拷贝
之后修改代码解决问题;
总结:总的一个过程为,发现问题,定位问题,解决问题,最终的解决方案如上所示。
最后
以上就是妩媚白猫为你收集整理的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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复