认识 PyTorch:张量、自动微分与模型的关系
做一个 PyTorch 梯度检查笔记本
把数学预期与实际输出分开记录,用可解释的失败帮助学习。
做一个 PyTorch 梯度检查笔记本知识学习CN编辑简报更新 2026-09-23
你将学会
- 从小函数开始
- 验证容易混淆的行为
- 保留有用的失败
开始前需要
- 基本 Python 与微积分知识
- 供后续练习使用的独立环境
把数学预期与实际输出分开记录,用可解释的失败帮助学习。
先看结论
- 这是建议的学习练习。
- 预期与观察是不同证据。
- 容差变化需要解释。
从小函数开始
为 x 的平方和短向量求和建立练习,运行前先写下解析导数。每次结果旁边都记录形状、数据类型和设备,方便之后复现差异。
这是建议的学习项目,本系列没有执行这个笔记本。先使用 CPU,不下载外部模型和数据集,可以减少意外输出背后的干扰因素。
验证容易混淆的行为
对比 backward 的字段累加和 autograd.grad 的返回值。每一轮都重新前向计算,并安排一次设为 None 的清理,把预期值和实测值放在不同列。
再加入有限差分检查,明确步长和容差,并解释数值近似会受到精度影响。不要要求所有浮点试验都严格相等,也不要隐去不符合预期的结果。
保留有用的失败
展示失败时保留代码、环境和差值。若需要修改容差,应说明依据,不能为了让结果全绿而不断放宽限制,使检查失去辨别能力。
完成后的笔记本应能解释每个导数的来历,以及它是被存储还是被返回。GPU 计时、模型训练和生产部署需要各自独立的验收项目。
如何选择
| 比较维度 | 方案 A | 方案 B |
|---|---|---|
| Best when | You need predictable behavior and easy auditing | You need adaptive optimization and have reliable telemetry |
| Main risk | May leave performance on the table | Can become difficult to explain or debug |
实施步骤
- 1
先写数学预期。
- 2
对比累加字段与导数返回值。
- 3
保留失败并说明容差依据。
可复制示例
json
{"function":"x*x","x":3,"analytical_gradient":6,"observed_gradient":null,"executed":false}常见问题
需要下载模型吗?
不需要,小型数学函数就够了。
怎样算完成?
检查可复现,并能解释导数、存储位置和数值容差。
资料来源
- PyTorch / torch/autograd/__init__.py来源核查 2026-09-23
- PyTorch / README.md来源核查 2026-09-23