PyTorch 零基础速成指南:3 天从环境搭建到实战项目
第一天:环境搭建与 Tensor 基础
1. 环境配置(30分钟)
-
安装 PyTorch :
推荐使用 Conda 或 Pip 安装稳定版(Stable),根据硬件选择 GPU(CUDA)或 CPU 版本。例如:bash# GPU 版本(需 NVIDIA 显卡) conda install pytorch torchvision torchaudio cudatoolkit=11.7 -c pytorch # CPU 版本 pip install torch torchvision torchaudio
-
验证安装 :
运行import torch; print(torch.__version__)
和torch.cuda.is_available()
确认环境正常。
2. Tensor 核心操作(3小时)
-
创建 Tensor :
pythonimport torch # 从列表/Numpy 创建 t1 = torch.tensor([1, 2, 3]) t2 = torch.from_numpy(np.array([4, 5, 6])) # 特殊初始化 zeros = torch.zeros(3, 3) # 全零矩阵 rand = torch.rand(2, 2) # 随机矩阵
-
运算与广播 :
支持加减乘除、矩阵乘法(@
或torch.mm
)、广播机制(自动扩展维度)。 -
GPU 加速 :
使用.to('cuda')
将 Tensor 移至 GPU,如x_gpu = x_cpu.cuda()
。
3. 与 Numpy 互转
python
np_array = t1.numpy() # Tensor → Numpy
torch_tensor = torch.from_numpy(np_array) # Numpy → Tensor
第二天:Autograd 与神经网络基础
1. 自动微分(Autograd)
-
梯度计算 :
pythonx = torch.tensor(2.0, requires_grad=True) y = x ** 2 + 3 y.backward() # 计算梯度 print(x.grad) # 输出 dy/dx = 2x → 4.0
-
链式法则 :
多层网络可通过backward()
自动计算复合函数梯度。
2. 构建神经网络
-
定义模型 :
pythonimport torch.nn as nn model = nn.Sequential( nn.Linear(10, 5), # 全连接层(输入10维,输出5维) nn.ReLU(), # 激活函数 nn.Linear(5, 1) # 输出层 )
-
损失函数与优化器 :
pythoncriterion = nn.MSELoss() # 均方误差 optimizer = torch.optim.SGD(model.parameters(), lr=0.01) # 随机梯度下降
3. 数据加载(Dataset & DataLoader)
python
from torch.utils.data import DataLoader, TensorDataset
dataset = TensorDataset(X_tensor, y_tensor) # X_tensor 为特征,y_tensor 为标签
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
第三天:项目实战(图像分类)
1. 使用预训练模型(ResNet)
python
from torchvision import models
model = models.resnet18(pretrained=True) # 加载预训练权重
model.fc = nn.Linear(512, 10) # 修改输出层(假设10分类任务)
2. 训练流程
python
for epoch in range(10):
for inputs, labels in dataloader:
outputs = model(inputs)
loss = criterion(outputs, labels)
optimizer.zero_grad() # 清空梯度
loss.backward() # 反向传播
optimizer.step() # 更新权重
print(f'Epoch {epoch}, Loss: {loss.item()}')
3. 模型保存与部署
python
torch.save(model.state_dict(), 'model.pth') # 保存权重
loaded_model = models.resnet18()
loaded_model.load_state_dict(torch.load('model.pth')) # 加载权重
学习资源推荐
- 官方教程 :PyTorch 60分钟入门(含代码示例)。
- 实战项目 :
- Kaggle 上的 MNIST 手写数字识别(适合新手)。
- 使用
torchvision.datasets.CIFAR10
实现图像分类。
- 常见问题 :
- GPU 内存不足 :减小
batch_size
或使用梯度累积。 - 过拟合 :添加 Dropout 层(
nn.Dropout(0.5)
)或数据增强。
- GPU 内存不足 :减小
总结:通过三天系统学习,你已掌握 PyTorch 的核心操作、神经网络构建及项目部署能力。下一步可探索:
- 高级技巧 :自定义 Dataset、混合精度训练(
torch.cuda.amp
)。 - 领域拓展:自然语言处理(BERT)、目标检测(YOLO)。
- 性能优化 :使用
torch.jit
加速模型推理。
(附:完整代码示例可参考 PyTorch 官方 GitHub)