- Layer type: BatchNorm
- 头文件位置:./include/caffe/layers/batch_norm_layer.hpp
- CPU 执行源文件位置: ./src/caffe/layers/batch_norm_layer.cpp
- CUDA GPU 执行源文件位置: ./src/caffe/layers/batch_norm_layer.cu
- BatchNorm层的功能:对minibatch的数据作归一化(Normalized)。
- Layer type: Scale
- 头文件位置:./include/caffe/layers/scale_layer.hpp
- CPU 执行源文件位置: ./src/caffe/layers/scale_layer.cpp
- CUDA GPU 执行源文件位置: ./src/caffe/layers/scale_layer.cu
- Scale层的功能:。
为什么BatchNorm要和Scale结合起来使用
首先batchnorm论文中,这个操作想实习的功能如下:
1) 输入归一化 x_norm = (x-u)/std, 其中u和std是个累计计算的均值和方差注意还有滑动系数。
2)y=alpha×x_norm + beta,对归一化后的x进行比例缩放和位移。其中alpha和beta是通过迭代学习的。
而caffe中的BatchNorm层实现了功能一,Scale层实现了功能二。
caffe中bn和scale的公式
参数解释
layer {
bottom: "conv1"
top: "conv1"
name: "bn_conv1"
type: "BatchNorm"
batch_norm_param {
use_global_stats: true
}
param {
name: "bn_conv1_0"
lr_mult: 0
}
param {
name: "bn_conv1_1"
lr_mult: 0
}
param {
name: "bn_conv1_2"
lr_mult: 0
}
}
layer {