深度学习进阶文档深度页
PyTorch Autograd 与计算图
前向动态记录运算,反向沿图计算并累加叶子参数梯度。
学习目标
- 区分叶子/非叶子
- 解释梯度累加
- 使用 detach/no_grad
为什么需要这个概念
数百万参数无法手工维护导数。
- 理解 loss.backward
- 安全控制图生命周期
学习前需要掌握
链式法则内容待补充
背景与问题
数百万参数无法手工维护导数。
概念定义
requires_grad 控制追踪;grad_fn 描述反向节点;叶子参数把结果累积到 .grad。
直观理解
前向留下运算路线,反向沿路线逐站计算局部导数。
核心原理
标量 loss 从上游梯度 1 反传;图默认一次 backward 后释放。
detach 切断路径,no_grad 临时不记录,inference_mode 面向纯推理。
数学表达
核心公式
每个参数获得同形状梯度。
变量含义
θ参数集合.grad叶子梯度缓冲
计算步骤
- 1第一次 grad=3
- 2第二次累加 4
代码对应位置
示例 1PyTorch Autograd 与计算图 · PyTorch 示例:验证PyTorch Autograd 与计算图的输入、计算和输出。
变量解释
| 变量 | 含义 |
|---|---|
θ | 参数集合 |
.grad | 叶子梯度缓冲 |
完整数值示例
梯度累加
已知条件
- (w×3).backward
- (w×4).backward
- 1
第一次 grad=3
- 2
第二次累加 4
grad=7
处理前后对比
计算与实现步骤
- 1
前向建图
- 2
标量 loss
- 3
backward
- 4
检查 grad
- 5
清梯度
- 6
step
代码实现
示例 1
PyTorch Autograd 与计算图 · PyTorch 示例
PyTorch Autograd 与计算图 · PyTorch 示例
PyTorch
example_01.py用途:验证PyTorch Autograd 与计算图的输入、计算和输出。
w=torch.tensor(2.,requires_grad=True)
(w*3).backward();print(w.grad)
(w*4).backward();print(w.grad)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
验证PyTorch Autograd 与计算图的输入、计算和输出。
w- 模型权重或当前待优化参数。
Step 1 · 1–3 行
计算损失对参数的梯度,对应数学表达中的 ∇J;梯度只给出局部变化方向。
w=torch.tensor(2.,requires_grad=True)
(w*3).backward();print(w.grad)
(w*4).backward();print(w.grad)预期输出或运行结果
tensor(3.),随后 tensor(7.)。
常见错误 · 4 条
- 忘清梯度
- item 后 backward
- 日志保存带图 Tensor
- 滥用 retain_graph
实际应用
- 训练
- 梯度惩罚
- 敏感性分析
常见错误
忘清梯度
item 后 backward
日志保存带图 Tensor
滥用 retain_graph
文档来源
12_自动微分与反向传播详解原始文档
学习资料/deeplearning/12_自动微分与反向传播详解.md- §1 自动微分
- §2 动态图
- §3 叶子
- §5 累加
- §7 图释放
- §8–10 图控制
常见问题
eval 会关闭 Autograd 吗?
不会。
detach 与 clone 区别?
detach 切图;clone 复制但保留梯度关系。
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。