6.3 KiB
6.3 KiB
好问题 👍!如果你想系统学习 PyTorch,可以按模块分层次来学。我给你整理一个「PyTorch 学习清单表」,从最核心到常用扩展,覆盖 80% 以上的开发需求。
📑 PyTorch 学习清单
模块 | 关键内容 | 说明 / 示例 |
---|---|---|
1. 基础(torch.Tensor) | - 创建 Tensor(torch.tensor , torch.randn , torch.zeros )- Tensor 属性( shape , dtype , device )- 基本运算(加减乘除、索引切片、矩阵运算 mm/matmul )- 广播机制 |
PyTorch 的核心数据结构,几乎所有操作都基于它 |
2. 自动求导(torch.autograd) | - requires_grad=True - backward() 自动求梯度- grad 属性- with torch.no_grad() |
深度学习训练依赖的自动微分机制 |
3. 神经网络模块(torch.nn) | - nn.Module 基类- 常用层: nn.Linear , nn.Conv2d , nn.Dropout , nn.BatchNorm - 激活函数: ReLU , Sigmoid , Tanh - 容器: nn.Sequential , nn.ModuleList - 常用损失函数: MSELoss , CrossEntropyLoss |
用来快速构建神经网络 |
4. 优化器(torch.optim) | - SGD , Adam , RMSprop - 常见用法: zero_grad() , step() - 学习率调整: optim.lr_scheduler |
负责更新模型参数 |
5. 数据加载(torch.utils.data) | - Dataset 自定义数据集- DataLoader 批处理 & shuffle & 多线程- 内置数据集(MNIST 等,来自 torchvision ) |
解决大规模数据训练的问题 |
6. GPU 加速 | - .to(device) 或 .cuda() - torch.device("cuda" if torch.cuda.is_available() else "cpu") |
利用显卡进行加速 |
7. 模型保存与加载 | - 保存参数:torch.save(model.state_dict()) - 加载参数: model.load_state_dict(torch.load(...)) |
模型训练完要持久化保存 |
8. 高阶工具 | - torch.nn.functional (函数式 API,如 F.relu )- torch.distributed (分布式训练)- torch.jit (模型加速 & 部署)- torch.autocast (混合精度训练) |
提升性能、扩展能力 |
9. 扩展库 | - torchvision (图像)- torchaudio (语音)- torchtext (NLP) |
方便调用现成模型和数据 |
🔑 学习顺序推荐
- Tensor 基础(先当作 NumPy 替代品来玩)
- autograd 自动求导(理解梯度流)
- nn.Module + optim + loss(最小训练循环)
- Dataset + DataLoader(学会批处理)
- GPU 加速(.cuda / .to)
- 保存 / 加载模型
- 扩展功能(半精度训练、分布式、多模态库)
👉 总结一句话:
PyTorch 的主线是 Tensor → autograd → nn → optim → data → GPU → save/load。
要不要我帮你整理成一个「一周 PyTorch 学习计划」?每天学一点,1 周能把这张表过一遍,快速入门。
对!你抓住重点了 👍
在 PyTorch 开发里,常用的核心模块主要有这几个(按层次来看):
🔹 1. torch
基础
torch.Tensor
→ 所有数据的核心类型- 常用操作:索引、切片、加减乘除、矩阵运算(
torch.mm
、torch.matmul
)
👉 可以把它理解成「比 NumPy 更强的张量库」。
🔹 2. torch.autograd
(自动求导)
-
这是 PyTorch 的「魔法」: 只要
requires_grad=True
,它就会自动构建计算图,帮你算梯度。 -
常用的就是:
x = torch.randn(3, 3, requires_grad=True) y = x.sum() y.backward() print(x.grad)
👉 用于 反向传播,深度学习训练的关键。
🔹 3. torch.nn
(神经网络模块)
- 提供 层、损失函数、容器,让你快速定义网络。
nn.Module
→ 所有网络的基类nn.Linear
、nn.Conv2d
、nn.ReLU
、nn.CrossEntropyLoss
等就是日常必备。
👉 可以理解为「把 autograd
封装起来,让写网络更方便」。
🔹 4. torch.optim
(优化器)
-
用于更新参数。
-
常见优化器:
optim.SGD
optim.Adam
-
使用套路:
optimizer = optim.Adam(model.parameters(), lr=1e-3) optimizer.zero_grad() loss.backward() optimizer.step()
🔹 5. (扩展)常用工具
-
torch.utils.data
Dataset
/DataLoader
:数据加载、批处理、多线程
-
torchvision
/torchaudio
/torchtext
- 提供数据集 & 常用模型(ResNet, BERT 等)
✅ 总结(开发最常用三件套)
- 建模 →
torch.nn
- 求梯度 →
torch.autograd
- 更新参数 →
torch.optim
基本上你会发现:
80% 的 PyTorch 代码就是在围绕 Tensor → autograd → nn → optim → data 这几个模块转。
要不要我帮你写一个「PyTorch 最小训练框架」,几乎涵盖 autograd
、nn
、optim
、data
的核心套路?这样你看完能秒懂 PyTorch 主干逻辑。