BN原理以及C++实现

author:张一极

date:2022年11月27日14:18:07

Batch normalization

原理:

将输入batch数据归一化为均值为0,方差为1的数据

然后通过beta和gama数据反归一化(乘上方差,加上均值),再输出。

(1) Input:  Values of x over a mini-batch: B={x1m} Parameters to be learned: γ,β Output: {yi=BNγ,β(xi)}μB1mi=1mxi// mini-batch mean σB21mi=1m(xiμB)2// mini-batch variance x^ixiμBσB2+ϵ // normalize yiγx^i+βBNγ,β(xi) // scale and shift 

C++实现:

image-20221127143441317

1.输入beta以及gamma,计算batch data的均值和方差,通过均值和方差进行归一化操作。

2.使用beta以及gamma进行反归一化操作

倍乘beta,加上gamma,得到最后输出结果:

image-20221127142708910

BN作用

1.减少梯度消失和加大学习率,提高训练速度

2.减少离散点影响