Files
python/Pytorch/readme.md
2025-09-09 15:10:57 +08:00

125 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

好问题 👍!如果你想系统学习 **PyTorch**可以按模块分层次来学。我给你整理一个「PyTorch 学习清单表」,从最核心到常用扩展,覆盖 80% 以上的开发需求。
---
# 📑 PyTorch 学习清单
| 模块 | 关键内容 | 说明 / 示例 |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
| **1. 基础torch.Tensor** | - 创建 Tensor`torch.tensor`, `torch.randn`, `torch.zeros`<br>- Tensor 属性(`shape`, `dtype`, `device`<br>- 基本运算(加减乘除、索引切片、矩阵运算 `mm/matmul`<br>- 广播机制 | PyTorch 的核心数据结构,几乎所有操作都基于它 |
| **2. 自动求导torch.autograd** | - `requires_grad=True`<br>- `backward()` 自动求梯度<br>- `grad` 属性<br>- `with torch.no_grad()` | 深度学习训练依赖的自动微分机制 |
| **3. 神经网络模块torch.nn** | - `nn.Module` 基类<br>- 常用层:`nn.Linear`, `nn.Conv2d`, `nn.Dropout`, `nn.BatchNorm`<br>- 激活函数:`ReLU`, `Sigmoid`, `Tanh`<br>- 容器:`nn.Sequential`, `nn.ModuleList`<br>- 常用损失函数:`MSELoss`, `CrossEntropyLoss` | 用来快速构建神经网络 |
| **4. 优化器torch.optim** | - `SGD`, `Adam`, `RMSprop`<br>- 常见用法:`zero_grad()`, `step()`<br>- 学习率调整:`optim.lr_scheduler` | 负责更新模型参数 |
| **5. 数据加载torch.utils.data** | - `Dataset` 自定义数据集<br>- `DataLoader` 批处理 & shuffle & 多线程<br>- 内置数据集MNIST 等,来自 `torchvision` | 解决大规模数据训练的问题 |
| **6. GPU 加速** | - `.to(device)``.cuda()`<br>- `torch.device("cuda" if torch.cuda.is_available() else "cpu")` | 利用显卡进行加速 |
| **7. 模型保存与加载** | - 保存参数:`torch.save(model.state_dict())`<br>- 加载参数:`model.load_state_dict(torch.load(...))` | 模型训练完要持久化保存 |
| **8. 高阶工具** | - `torch.nn.functional`(函数式 API`F.relu`<br>- `torch.distributed`(分布式训练)<br>- `torch.jit`(模型加速 & 部署)<br>- `torch.autocast`(混合精度训练) | 提升性能、扩展能力 |
| **9. 扩展库** | - `torchvision`(图像)<br>- `torchaudio`(语音)<br>- `torchtext`NLP | 方便调用现成模型和数据 |
---
# 🔑 学习顺序推荐
1. **Tensor 基础**(先当作 NumPy 替代品来玩)
2. **autograd 自动求导**(理解梯度流)
3. **nn.Module + optim + loss**(最小训练循环)
4. **Dataset + DataLoader**(学会批处理)
5. **GPU 加速**.cuda / .to
6. **保存 / 加载模型**
7. **扩展功能**(半精度训练、分布式、多模态库)
---
👉 总结一句话:
> 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`,它就会自动构建计算图,帮你算梯度。
* 常用的就是:
```python
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`
* 使用套路:
```python
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 主干逻辑。