批量归一化BatchNorm

为什么使用归一化

批量归一化BatchNorm
对一sigmoid的函数来说,处在边角位置的点更新慢,并且离散度高不利于聚合。

Nomalization将输入的值控制在有效的范围之内。得到以0为均值,1为方差的值。
批量归一化BatchNorm
不进行归一化的化,loss函数求解梯度左图较比之右图更加的曲折。

pytorch实现归一化

批量归一化BatchNorm

不同Norm选取方式

批量归一化BatchNorm
蓝色为一次选取的一个Norm。

BN

批量归一化BatchNorm
对于三个通道作为BN,z为BN公式
批量归一化BatchNorm

pytorch实现

批量归一化BatchNorm
批量归一化BatchNorm
2d的BN大小为16

批量归一化BatchNorm
批量归一化BatchNorm

批量归一化BatchNorm
在测试的时候,μ,σ为全局的而非batch的;又由于有没有后向传播,所以没有β,γ的更新

使用BN对比

批量归一化BatchNorm

优势

  • 收敛速度加快
  • 更得到更好的解
  • 主要的优势是更加的稳定