BN使用

来源:互联网 发布:巨人网络借壳过程 编辑:程序博客网 时间:2024/05/22 06:48

一、简介

转载来自:http://blog.csdn.net/sunbaigui/article/details/50807398

如果将googlenet称之为google家的inception v1的话,其Batch Normalization(http://arxiv.org/pdf/1502.03167v3.pdf)文章讲的就是BN-inception v1。

它不是网络本身本质上的内容修改,而是为了将conv层的输出做normalization以使得下一层的更新能够更快,更准确。


二、网络分析


caffe官方将BN层拆成两个层来实验,一个是https://github.com/BVLC/caffe/blob/master/include/caffe/layers/batch_norm_layer.hpp,

另外一个是https://github.com/BVLC/caffe/blob/master/include/caffe/layers/scale_layer.hpp。

其具体使用方法可以参考:https://github.com/KaimingHe/deep-residual-networks/blob/master/prototxt/ResNet-50-deploy.prototxt

中的BatchNormScale


BN-inceptionv1训练速度较原googlenet快了14倍,在imagenet分类问题的top5上达到4.8%,超过了人类标注top5准确率


//-----------------------------------------------------------------------------------------------------//

在Caffe中使用Batch Normalization需要注意以下两点,

1. 要配合Scale层一起使用,具体参见http://blog.csdn.net/sunbaigui/article/details/50807398以及Residual Network

2. 训练的时候,将BN层的use_global_stats设置为false,然后测试的时候将use_global_stats设置为true,不然训练的时候会报“NAN”或者模型不收敛 —— 这个其实挺难注意到的

原创粉丝点击