Keras版Faster-RCNN代码学习(Batch Normalization)2

本文是Keras版Faster R-CNN系列的第二部分,重点讨论Batch Normalization的作用和原理。Batch Normalization通过加速训练、控制过拟合以及增强网络对权重初始化的不敏感性,提高了模型的性能。在Keras中,它被用于调整卷积层的激活值,使其均值接近0,标准差接近1。此外,文中还提供了一个名为`FixedBatchNormalization.py`的示例,展示了如何在ResNet中应用固定的Batch Normalization。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Keras版Faster-RCNN代码学习(IOU,RPN)1
Keras版Faster-RCNN代码学习(Batch Normalization)2
Keras版Faster-RCNN代码学习(loss,xml解析)3
Keras版Faster-RCNN代码学习(roipooling resnet/vgg)4
Keras版Faster-RCNN代码学习(measure_map,train/test)5

Batch Normalization介绍

参考文献:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift
参考知乎魏秀参给出的答案:深度学习中 Batch Normalization为什么效果好?

根据我的了解,Batch Normalization在卷积神经网络中,是对每个核卷积出来的一个batchsize中所有图片的feature map上的值进行归一化后再进行激活,所以叫批标准化。
【Tips】BN层的作用
1)加速收敛 (2)控制过拟合,可以少用或不用Dropout和正则 (3)降低网络对初始化权重不敏感 (4)允许使用较大的学习率
可以把它看做一个自适应重参数化的方法,主要解决训练非常深的模型的困难。当然也不是万能的,对RNN来说,Batch Normalization并没有起到好的效果。
主要是把BN变换,置于网络激活函数层的前面。在没有采用BN的时候,激活函数层是这样的:

Y=g(WX+b)

也就是我们希望一个激活函数,比如sigmoid函数s(x)的自变量x是经过BN处理后的结果。因此前向传导的计算公式就应该是:

Y=g(BN(WX+b))

其实因为偏置参数b经过BN层后其实是没有用的,最后也会被均值归一化,当然BN层后面还有个β参数作为偏置项,所以b这个参数就可以不用了。因此最后把BN层+激活函数层就变成了:

Y=g(BN(WX))

Keras中的Batch Normalization

keras.layers.normalization.BatchNormalization(axis=-1, momentum=0.99, epsilon=0.001, center=True, scale=True, beta_initializer='zeros
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值