keras中的BN层Dropout层的小坑(方差-learning_phase)

BN层Dropout层都是为了防止模型过拟合而设计的结构,特别是BN层,在其出现之后模型的表现又上升了一个台阶,但是在实际的使用过程中会发现训练和预测的时候这两个层总是出岔子

那么是什么岔子:
首先来解决好解决的:

1、Dropout层-问题

需要先知道的是Dropout层在训练的时候是随机让一定比例的节点失活,不参与该批次的训练,但是在预测的时候,所有的节点参与预测,只是每个节点的值乘以设置的比例为输出。这样一看认为dropout层的设计很完美,但是仔细看就会有些问题,那就是方差的问题。
我们假设训练集和测试集的数据分布是一样的,那么你想想,如果有两种方式对同一份数据做处理,第一种方式是直接扔到一部分的节点,然后其余节点的输出值的和为最终结果,第二种方式为使用全部的节点,但是使用输出的值乘以某一个比例(0-1之间)的和为最终结果,这只是一个很粗糙的比喻,因此我们就可以认为使用训练时候的方差大于预测时候的方差,那么这时候怎么办呢?有前人给出解决方案了,直接冻结Dropout层,或者冻结大部分层只留全连接层,然后用训练集再训练一两个批次即可。

2、BN层-问题:

keras版本:‘2.1.0’

一开始我也认为BN层没有任何的问题&#
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值