我的问题是 BatchNormalization (BN) 正在规范化什么。
我在问,BN 是分别对每个像素的通道进行归一化,还是对所有像素一起归一化。它是在每个图像的基础上还是在整个批次的所有通道上进行的。
具体来说,BN 正在运行X
。说,X.shape = [m,h,w,c]
。因此axis=3
,它在“c”维度上运行,即通道数(对于 rgb)或特征图的数量。
因此,可以说这X
是一个 rgb,因此有 3 个通道。BN 是否执行以下操作:(这是 BN 的简化版本,用于讨论维度方面。我知道 gamma 和 beta 是学习的,但在这里不关心。)
对于每image=X
一个m
:
- 对于每个像素 (h,w),取相关 r、g 和 b 值的平均值。
- 对于每个像素 (h,w),取相关 r、g 和 b 值的方差
- Do
r = (r-mean)/var
,g = (g-mean)/var
, &b = (b-mean)/var
, 其中 r, g, & b 分别是红色、绿色和蓝色通道X
。 - 然后对 中的下一张图像重复此过程
m
,
在 keras 中,BatchNormalization 的文档说:
axis:整数,应该归一化的轴(通常是特征轴)。
例如,在带有 的
Conv2D
图层之后data_format="channels_first"
,设置axis=1
为BatchNormalization
。
但是它在每个维度上到底在做什么呢?