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, cent