[深度学习] 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,

相关内容

热门资讯

“六一”亲子游热度飙升,成年子... “六一”国际儿童节即将来临,不少家庭游客已提前预订亲子旅游产品,根据同程旅行、去哪儿、途牛等OTA(...
柯尔鸭花车、科学魔法秀、卡皮巴... 华声在线5月28日讯(全媒体记者 曾冠霖)六一儿童节临近,长沙亲子游市场持续升温。5月28日,记者从...
“六一”儿童节去哪玩?广西各大... “六一”国际儿童节临近,广西各大景区、场馆推出门票优惠与丰富的亲子活动,涵盖山水休闲、萌宠互动、非遗...
旅行社责任险报价:一年几千元,... 旅行社问责任险报价时,很多人第一反应是:"一年多少钱?最低能做到多少?"但在保游网看来,旅行社责任险...