248 字
1 分钟
CNN-BatchNorm
2026-06-28
无标签

这一部分单独拿出来讲讲,因为后面和 Transformer 的 Layer Normalization 有些类似。

→ 卷积层 → 激活函数 → 池化层 → 归一化层(多用batch norm实现)

关于norm#

一般norm都遵循下面的计算公式:

x^=xμσ2+ϵy=γx^+β\hat{x} = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \quad y = \gamma\hat{x} + \beta

Batch Normalization#

输入特征图 XRB,C,H,WX\in\mathbb{R}^{B, C, H, W},其中 BB 是 batch size,表示喂了多少样本(特征图数量),CC 是特征维度(通常指通道数),HH 是高度,WW 是宽度。

对于每个特征维度 cc,跨batch计算均值和方差:

μc=1BHWi=1Bj=1Hk=1WXi,c,j,k,σc2=1BHWi=1Bj=1Hk=1W(Xi,c,j,kμc)2\mu_c = \frac{1}{BHW} \sum_{i=1}^{B} \sum_{j=1}^{H} \sum_{k=1}^{W} X_{i,c,j,k}, \quad \sigma_c^2 = \frac{1}{BHW} \sum_{i=1}^{B} \sum_{j=1}^{H} \sum_{k=1}^{W} (X_{i,c,j,k} - \mu_c)^2

得到两个 CC 维向量 μRC\mu\in\mathbb{R}^{C}σ2RC\sigma^2\in\mathbb{R}^{C},然后广播成 B×C×H×WB\times C\times H\times W 的矩阵,进行归一化:

X^i,c,j,k=Xi,c,j,kμcσc2+ϵYi,c,j,k=γcX^i,c,j,k+βc\hat{X}_{i,c,j,k} = \frac{X_{i,c,j,k} - \mu_c}{\sqrt{\sigma_c^2 + \epsilon}} \quad Y_{i,c,j,k} = \gamma_c\hat{X}_{i,c,j,k} + \beta_c

Batchsize#

BN强依赖 Batch 中其他样本(跨样本统计)。一般来说,Batch size 越大,BN 的效果越好。Batch size 太小,BN 的效果会变差,甚至可能不收敛。

CNN-BatchNorm
https://biscuit0613.github.io/posts/ml/cnn-batchnorm/
作者
Biscuit
发布于
2026-06-28
许可协议
CC BY-NC-SA 4.0
高动态范围成像:多曝光融合与Tone Mapping
GAN-介绍