看到过很多人解释BN层的帖子,综合了一下,加上自己的理解,记录下我对BN层的理解。
1、What is BN?
BN层的计算步骤如下图所示:

- 计算每一个batch的均值;
- 计算每一个batch的方差;
- 使用1和2中计算得到的均值和方差,对数据进行归一化操作,获得0~1分布;
- 尺度变换与偏移:归一化之后的
基本会被限制在正态分布下,使得网络的表达能力下降,由此引入
保留学习到的特征。
BN层的本质是利用变化改变方差大小和均值位置,使数据更加符合真实数据的分布,保证了模型的非线性表达能力。
2、HOW?
BN是在batch的维度上进行norm,归一化维度为[N,H,W],对batch中的channe