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={x1…m} Parameters to be learned: γ,β Output: {yi=BNγ,β(xi)}μB←1m∑i=1mxi// mini-batch mean σB2←1m∑i=1m(xi−μB)2// mini-batch variance x^i←xi−μ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.减少离散点影响