神经网络笔记(四)——Spatial Batch Normalization & Spatial Group Normalization
目录
这里我们跟着实验来完成Spatial Batch Normalization和Spatial Group Normalization,用于对CNN进行优化。
Spatial Batch Normalization
回忆之前普通神经网络的BN层,输入为,输出形状也为,其作用是将输入进行归一化然后输出。在这里,对于来自卷积层的数据,其输出形状也为,其中是一个mini-batch的数据数量,是特征映射(feature map)的数量,有几个感受野就会产生几个特征映射,而则给出特征映射的大小。
如果特征映射是由卷积运算产生的,我们希望对各个特征C映射进行归一化,使得每个特征映射的不同图片(N)和一张图片内的不同位置(H,W)的统计学特征(均值、标准差等)相对一致。也就是说,spatial batch normalization为C个特征通道中的每一个都计算出来对应的均值和方差,而这里的均值和方差则是遍历对应特征通道中N张图片和其空间维度(H,W)计算得出的。可以理解为之前的D是这里的,之前的N在这里则是。
前向传播
对输入转置为维度,转化成普通的BN层输入并传递给普通(vanilla)BN层的前向传播函数,再对输出转化成对应的。代码如下:
|
|
反向传播
|
|
Spatial Group Normalization
Spatial Group Normalization可看作解决Layer Normalization在CNN上的表现不能够像Batch Normalization一样好的问题的方案。
前向传播
仿照论文中的代码实现:
|
|
反向传播
参考了这篇博客。求导并不复杂,代码实现起来难度较大。
|
|