1 为何要用BatchNormalization
为了让深层网络更容易训练,有两种方法:
使用更好的优化器:如 SDG+Momentun等;
改变网络结构,比如加入BN层,处理网络数据,让网络数据服从标准的高斯分布,均值为0,方差为1的分布;
2 使用BatchNormalization的优点
在每次NN的输入时,都要进行数据的预处理,一般是让数据是0均值和单位方差的,这样对于训练是有好处的;
但是当数据走过几层后,基本就不可能保持这个特性了,BN层要做的事情是在每一层的开始,加上这个操作,但是有的数据可能会因此丢失一些信息,所以要加上beta和gama来恢复原始数据,这里的beta和gamma是可学习的;
3 BatchNormalization处理数据过程
(1)求均值
mini-batch: ;
(2)求方差
(3)归一化
(4)计算输出(scale and shift)
和
是两个关键超参数,对归一化后的分母进行缩放和平移,通过网络自己学习平移和缩放保留一定的特征;
方差和均值是可以动态调整的,可以通过momentum来调整(加入基于momentum的指数衰减,进行动态调整)






![[论文笔记]C^3F,MCNN:图片人群计数模型](https://img-blog.csdnimg.cn/e9025f1d6d7f4b349e9bae36b1cfe15f.png)
![[oeasy]python0141_自制模块_module_reusability_复用性](https://img-blog.csdnimg.cn/img_convert/a227eff5be6dce210c71892f74258df2.png)








![[计算机图形学]材质与外观(前瞻预习/复习回顾)](https://img-blog.csdnimg.cn/ba749dca309e42a6a4960b009787bbeb.png)


