深度学习进阶文档深度页
Layer Normalization
对每个样本最后若干特征维统计,不依赖其他 batch 样本。
学习目标
- 识别统计维
- 匹配尾部形状
- 比较 Pre/Post Norm
为什么需要这个概念
序列和小 batch 场景不适合依赖 batch 统计。
- Transformer 核心组件
- 理解 normalized_shape
学习前需要掌握
张量轴内容待补充归一化公式内容待补充
背景与问题
序列和小 batch 场景不适合依赖 batch 统计。
概念定义
LayerNorm 不维护 running stats,训练和评估对同一输入公式相同。
直观理解
每个 token 自己在隐藏维上校准,不借用其他样本。
核心原理
对 [N,L,D] 使用 LayerNorm(D),每个 n,l 独立对 D 维统计。
normalized_shape 必须匹配输入尾部维度;仍有可训练 γ/β。
数学表达
核心公式
每个 token 对 D 维归一化。
变量含义
D隐藏维μ_nl单 token 均值
计算步骤
- 1每个 token 用 128 个数
- 28×20 组统计
代码对应位置
示例 1Layer Normalization · PyTorch 示例:验证Layer Normalization的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
D | 隐藏维 |
μ_nl | 单 token 均值 |
完整数值示例
序列 LN
已知条件
- [8,20,128]
- 1
每个 token 用 128 个数
- 2
8×20 组统计
160 组均值
处理前后对比
计算与实现步骤
- 1
选择尾部维
- 2
逐样本统计
- 3
归一化
- 4
仿射
- 5
残差结构放置
代码实现
示例 1
Layer Normalization · PyTorch 示例
Layer Normalization · PyTorch 示例
PyTorch
example_01.py用途:验证Layer Normalization的输入、计算和输出。
ln=nn.LayerNorm(128)
x=torch.randn(8,20,128)
print(ln(x).shape)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证Layer Normalization的输入、计算和输出。
Step 1 · 1–3 行
输出中间参数、形状或最终指标,用于核对代码是否符合预期。
ln=nn.LayerNorm(128)
x=torch.randn(8,20,128)
print(ln(x).shape)预期输出或运行结果
torch.Size([8,20,128])。
常见错误 · 4 条
- NCHW 直接 LN(C)
- normalized_shape 错
- 以为无参数
- 确认样本轴、特征轴以及 X 与 y 的第一维完全对应。
实际应用
- Transformer
- 小 batch 序列
常见错误
NCHW 直接 LN(C)
normalized_shape 错
以为无参数
文档来源
14_归一化方法_BatchNorm与LayerNorm原始文档
学习资料/deeplearning/14_归一化方法_BatchNorm与LayerNorm.md- §10 LayerNorm 统计
- §11 多维 shape
- §12 train/eval
- §13 Pre/Post Norm
常见问题
LayerNorm eval 会变吗?
公式不变。
为何 Transformer 常用 LN?
不依赖 batch 组成。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。