在进行反向传播时报了下面一个错误:
可能的情况:
一、参考博客https://blog.csdn.net/DuinoDu/article/details/80435127
找到网络中的in-place操作:
x = x + 1 # not inplace
x += 1 # inplace
把第二种写法替换成第一种。
二、也就是我遇到的情况,进行in-place操作,就比方说y加上x,y的值就改变了,就可以用y.add_(x)
这样y就直接被改变了。Torch里面所有带"_"的操作,都是in-place的。例如x.copy_(y)
找到我代码中使用“_”的操作,
output = output.masked_fill_(re_gtruth.eq(1), 0)
### 改成下面写法
output = output.masked_fill(re_gtruth.eq(1), 0)
还是基本功的问题。
目前只知道这两种可能情况,其他情况以后遇到再更新。