神经网络有各种归一化算法,BN,LN,IN,GN。
1. Batch Normalization
实现流程:对Tensor为[N, C, H, W], 把第1个样本的第1个通道,加上第2个样本的第1个通道, 加上第N个样本的第1个通道,求平均,得到通道1的均值。(注意是将累加和除以NxHxW,得到均值)
计算方差过程类似。
对于N本书,BN相当于把所有书的第x页加起来,计算平均值。
2. Layer Normalization
BN的一个缺点是需要较大的batchsize才能合理估计出训练数据的均值和方差,可能导致内存的大量消耗。
而layer Normalization 的一个优势是不需要批训练,在单条数据内部就能归一化。
LN对于每个样本的C、H、W维度上的数据求均值和方差。
对于N本书,LN相当于把每一本书的所有字加起来,计算平均值。
3. Instance Normalization
IN是对每一个样本上的一个通道计算平均值,只在channel 内部求均值。
对于N本书,相当于把一页书中的所有字加起来,再除以该页的总字数。
4. Group Normalization
GN相当于把一本C页的书,平均分成G份, 每份称为有若干页的小册子,求每个小册子的均值和方差。