深度学习前向过程也影响模型结果

记录深度模型训练的一大坑

  最近一直在做深度模型的实验,使用的基模型是resnet50.

根究对模型的设计,模型在参数更新时会受到来自4方面的不同梯度的影响。可能就是影响太多,对模型的效果反而有了负面的影响,接下来的工作是减少对模型影响的梯度,逐个实验。

loss = raw_loss + part_loss + concat_loss

损失函数包括3个部分,模型的输入有两个来源,raw image 和 part image,分别对应raw_loss, part_loss; concat_loss是raw 和 part的特征连接后的概率对应的损失。

下面将模型还原为原始的基模型:

按照模型更新的反向传播原理,令loss仅保留raw_loss就可以实现。然而结果证明这样并不能得到基模型的结果。卒。。

然后开始怀疑代码逻辑是否有问题,一顿实验。。。

后来,询问大佬同学,得知,很有可能是BN的问题,原理如下:

BN发生在forward的过程中,且是自动发生的。模型的参数是通过backward(), step(),更新的

我为什么会出现这个问题,我的伪代码如下:

p1 = model(raw_image)
p2 = model(part_image)

loss = cross_entropy(p1,y)

大致就是这个逻辑。就是对model而言,有两个流的image输入,虽然最后损失只用到了raw image,但是part image的输入已经在前向的BN过程中对模型造成了影响,所以这样得不到基模型的结果。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值