认识 PyTorch:张量、自动微分与模型的关系
PyTorch 入门:先验证一个标量的梯度
用极小的 CPU 计算分清安装、前向运算与梯度累加。
PyTorch 入门:先验证一个标量的梯度知识学习CN编辑简报更新 2026-09-23
你将学会
- 选择对应的安装包
- 先算出预期答案
- 有意观察累加
开始前需要
- 基本 Python 与微积分知识
- 供后续练习使用的独立环境
把数学预期与实际输出分开记录,用可解释的失败帮助学习。
先看结论
- 安装成功与设备可用需要分别检查。
- 已知导数让排错更具体。
- 有意识地清空梯度。
选择对应的安装包
仓库 README 将二进制包用户引向官方安装说明。请按操作系统和加速器选择构建,不要照搬另一台机器的 CUDA 安装命令。
使用独立环境,记录 Python、torch 和设备信息。成功安装库不能证明加速器驱动可用,也不能证明下载的模型与当前环境兼容。
先算出预期答案
令 x 等于 3,并开启 requires_grad,然后计算平方。导数是 2x,所以预期梯度是 6;这个练习不需要下载数据集或预训练权重。
使用浮点输入并先在 CPU 上运行。如果结果不符,应检查实际执行的代码和环境,再考虑批量输入、混合精度或 GPU 等额外因素。
有意观察累加
第二次调用 backward 前重新计算前向表达式,并保留 x.grad,数学预期就会累加为 12。把 x.grad 设为 None 后再做新一轮计算,预期重新得到 6。
这些都是推导值,不是本次会话测得的输出。默认 backward 通常会释放计算图,不要为了省一步而对同一个已使用结果重复调用反向传播。
如何选择
| 比较维度 | 方案 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
在 CPU 检查标量导数。
- 3
重新前向计算后观察梯度累加。
可复制示例
python
import torch
x = torch.tensor(3.0, requires_grad=True)
(x*x).backward()
(x*x).backward()
print(x.grad) # 数学预期 12
x.grad = None
(x*x).backward()
print(x.grad) # 数学预期 6常见问题
必须有 GPU 吗?
不需要,标量 CPU 练习已经足够。
为什么要重新计算前向表达式?
默认反向传播会释放计算图,新的前向计算会建立新图。
资料来源
- PyTorch / README.md来源核查 2026-09-23
- PyTorch / torch/autograd/__init__.py来源核查 2026-09-23