深度学习进阶文档深度页
梯度问题与权重初始化
通过与激活匹配的初始化维持前向激活和反向梯度尺度。
学习目标
- 识别消失/爆炸
- 计算 fan_in
- 匹配激活初始化
为什么需要这个概念
网络更深不代表更容易优化。
- 避免训练初期失效
- 解释 Xavier/Kaiming
学习前需要掌握
梯度内容待补充激活函数内容待补充
背景与问题
网络更深不代表更容易优化。
概念定义
深层雅可比连乘可使梯度消失或爆炸;初始化控制训练起点的方差。
直观理解
每层都稍缩小或放大,经过很多层会指数变化。
核心原理
tanh/sigmoid 常用 Xavier,ReLU/LeakyReLU 常用 Kaiming;输出层单独处理。
PyTorch 默认初始化通常合理,无证据时不盲目覆盖。
数学表达
核心公式
ReLU 的 Kaiming 起点。
变量含义
fan_in每个输出接收的输入数
计算步骤
- 1sqrt(2/256)
代码对应位置
示例 1梯度问题与权重初始化 · PyTorch 示例:验证梯度问题与权重初始化的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
fan_in | 每个输出接收的输入数 |
完整数值示例
fan_in=256
已知条件
- ReLU
- 1
sqrt(2/256)
std≈0.0884
处理前后对比
计算与实现步骤
- 1
检查激活
- 2
计算 fan
- 3
初始化隐藏层
- 4
初始化输出层
- 5
监控激活/梯度
代码实现
示例 1
梯度问题与权重初始化 · PyTorch 示例
梯度问题与权重初始化 · PyTorch 示例
PyTorch
example_01.py用途:验证梯度问题与权重初始化的输入、计算和输出。
layer=nn.Linear(256,64)
nn.init.kaiming_normal_(layer.weight,mode='fan_in',nonlinearity='relu')
nn.init.zeros_(layer.bias)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证梯度问题与权重初始化的输入、计算和输出。
Step 1 · 1–3 行
权重按 Kaiming
layer=nn.Linear(256,64)
nn.init.kaiming_normal_(layer.weight,mode='fan_in',nonlinearity='relu')
nn.init.zeros_(layer.bias)预期输出或运行结果
权重标准差接近 0.088。
常见错误 · 4 条
- 每 epoch 重置
- 激活不匹配
- 输出层照搬
- 初始化后替换 Parameter
实际应用
- 深层 MLP/CNN
常见错误
每 epoch 重置
激活不匹配
输出层照搬
初始化后替换 Parameter
文档来源
13_梯度问题与权重初始化原始文档
学习资料/deeplearning/13_梯度问题与权重初始化.md- §1 深度问题
- §2–3 消失爆炸
- §6–9 Xavier/Kaiming
- §11 示例
常见问题
初始化要猜最终参数吗?
不需要,只要保持可训练尺度。
LeakyReLU 要传什么?
实际 negative_slope。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。