卷积神经网络基础---批量归一化(BN层、 Batch Normalization)

卷积神经网络基础---批量归一化(BN层、 Batch Normalization)

1. BN层的作用

  1. BN层使得神经网络能够设定较高的初始学习率,加速模型收敛过程;
  2. 将数据进行归一化处理,即在网络的每一层输入的时候,插入了一个归一化层,然后再进入网络的下一层。这样能提高网络的泛化能力,使得网络能够使用误差更小的L2损失函数。

为什么要将数据进行归一化处理?
因为一旦训练数据与测试数据的分布不同,网络的泛化能力就会大大降低;此外,一旦每批训练数据的分布各不相同,那么网络就要在每次迭代都去学习适应不同的分布,这样将会大大降低网络的训练速度。

2. 源码

m = K.mean(X, axis=-1, keepdims=True) //计算均值  
std = K.std(X, axis=-1, keepdims=True) //计算标准差  
X_normed = (X - m) / (std + self.epsilon) //归一化  
out = self.gamma * X_normed + self.beta //重构变换  

3. 在超分辨率处理过程中BN层的缺点

神经网络最后重建的SR图像在色彩、对比度、亮度上要求和输入一致,改变的仅仅是分辨率和一些像素细节。但是任何图像经过BN层后,其色彩的分布都会被归一化。也就是说,它破坏了图像原本的对比度信息,因此BN层的加入会影响SR的结果,导致不可预测的伪影。
但是在ResNet使用了BN层,这是因为ResNet中引入了一种叫残差网络结构,其和普通的CNN的区别在于从输入源直接向输出源多连接了一条传递线来来进行残差计算。在ResNet网络中,图像的对比度信息可以通过跳转连接直接传递,所以也就不必担心BN层的破坏。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cloudeeeee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值