官方文档:http://caffe.berkeleyvision.org/tutorial/layers.html
网络结构文件中主要有三个文件
deploy.prototxt solver.prototxt train_val.prototxt
一、BatchNorm层的参数:
1.在训练时所有BN层要设置use_global_stats: false(也可以不写,caffe默认是false)
2.在测试时所有BN层要设置use_global_stats: true
use_global_stats: false是使用了每个Batch里的数据的均值和方差;
use_global_stats: true是使用了所有数据的均值和方差。
影响:
1.训练如果不设为false,会导致模型不收敛
2.测试如果不设置为true,会导致准确率极低
batch normal其实做了两件事:
1) 输入归一化 x_norm = (x-u)/std, 其中u和std是个累计计算的均值和方差。
2)y=alpha×x_norm + beta,对归一化后的x进行比例缩放和位移。其中alpha和beta是通过迭代学习的。
因此,BatchNorm和Scale层配合使用。
caffe中的BatchNorm层实现的是第一件事
Scale层做了第二件事。其参数bias_term=True这个偏置就对应二件事里的beta