在尝试在原来的loner网络结构中加入一层网络时,遇到了下图所示的报错:
在经过一系列检索之后,发现主要的解决方式有以下几种:
- 查找涉及到的inplace操作,如+=,-=,nn.ReLU(inplace=False)等;
- 查找用索引对tensor进行修改的操作,在修改时加上 .clone();
- 修改pytorch版本(根据你的环境慎改,别把自己的环境改崩了
上面几种方法都试了但没能解决问题,主要是我的代码中并没有明显的inplace操作;报这个错主要还是调用backward的时候有个变量被修改了,主要根据这一点去找bug,看什么变量被修改了。最后发现是前一层网络在更新的时候,会把后一层网络的参数修改,造成这个inplace错误,修改一下优化的顺序,问题解决。
主要参考: