[深度学习] inplace operation 的错误 -> 训练模型方向导致
admin
2024-05-22 06:05:16

项目场景:

在深度学习的时候,项目需要用到拮抗网络的知识, 就按照文字上的要求进行建模,结果发生了Inplace operation
研究了半天也不知道Inplace 到底在哪里, 后来终于发现了原因,所以赶紧记下来。

Created with Raphaël 2.3.0oencoderclassifierw

问题描述

训练的时候, 我们需要先训练特征提取,再训练分类器,但是由于项目用到了GAN,也就是advesarial learning, 即加入“噪音”之后,需要再次训练encoder 让他可以在Domain变化的情况下分不清图片来自于哪个domain以实现Domain invariance。

所以我们一开始的想法就是先去训练classifier 等他训练好了,冻住它的所有参数,再去训练encoder ,结果就发生了inplace operation的报错,


原因分析:

后来发现这其实是反向传播的问题:
如果先训练B 再训练A 的话, 就会发生Inplace operation 的错误,因为先训练B,反向传播进行计算,他会计算这一条链直到一开始o的梯度,并且进行保存。之后A 进行反向传播的时候那肯定会更新梯度,但是一更新,由于pythone 用的是Inplace operartion 那B的参数也会受到影响。 即使冻住了B 也没有用。冻住只是不再计算,但是这个问题是之前存储需要输出的值变化了, 所以就会报错,

但是如果先A 再B , 就没有问题,因为A 先反向传播参数进行计算更新,B再计算,就直接用这些再计算A 时,已经存好的值,这样B的更新也不会影响到A 的参数变化


解决方案:

先train A 再 train B,

相关内容

热门资讯

Hi!在这里一站式游黄浦 第六届长三角国际文化产业博览会于11月20-22日在国家会展中心(上海)举办。今年上海九个区和临港新...
北京八达岭长城门票预约攻略 一、八达岭长城门票官方预约平台全知晓 二、八达岭长城门票其他预约途径大揭秘 三、八达岭长城门票预约注...
泡人参酒别瞎选!用这种酒,营养... 作为一个对泡酒颇有研究的老炮儿,这些年我尝试了各种泡酒配方,要说最经典的,还得是人参泡酒。身边不少中...
南京一蛋糕店标明详细成本引热议... 南京一蛋糕店标明详细成本引热议,店家:让大家吃得放心南京一蛋糕店标明详细成本