Python深度学习框架教程_PyTorch快速上手

PyTorch上手关键在于掌握张量和自动微分:张量是数据基石,支持GPU加速与梯度追踪;用nn.Module搭建模型需定义层与forward逻辑;训练循环含数据加载、前向计算、损失计算、反向传播、参数更新五步。

PyTorch 上手不难,关键在理解张量(Tensor)和自动微分(Autograd)这两个核心机制。只要掌握数据定义、模型搭建、训练循环三步,就能跑通一个完整流程。

张量:PyTorch 的数据基石

所有数据都以 torch.Tensor 形式存在,类似 NumPy 数组,但支持 GPU 加速和梯度追踪。

  • 创建张量:用 torch.tensor([1, 2, 3])torch.randn(2, 3)(随机初始化)
  • 启用梯度:加 requires_grad=True,例如 x = torch.tensor(2.0, requires_grad=True)
  • 运算即构建计算图:执行 y = x ** 2 + 3 * x 后,y 会记录依赖关系,为反向传播做准备

用 nn.Module 搭建模型

自定义模型需继承 torch.nn.Module,并在 __init__ 中定义层,在 forward 中写前向逻辑。

  • 常见层:线性层 nn.Linear(784, 128)、激活函数 nn.ReLU()、Dropout nn.Dropout(0.5)
  • forward 方法里不要调用 .backward().zero_grad(),那是训练循环的事
  • 小技巧:用 model.train()model.eval() 控制 Dropout/BatchNorm 行为

训练循环:五步走清清楚楚

一个标准训练步骤包含数据加载、前向计算、损失计算、反向传播、参数更新。

立即学习“Python免费学习笔记(深入)”;

  • torch.utils.data.DataLoader 加载批量数据,支持 shuffle 和多进程
  • 损失用内置函数,如 criterion = nn.CrossEntropyLoss(),输入 logits 和真实标签即可
  • 反向传播:先 loss.backward(),再用优化器(如 torch.optim.SGD(model.parameters(), lr=0.01))调用 step()
  • 别忘了每轮开始前清空梯度:optimizer.zero_grad()

保存与加载模型

推荐保存模型参数(state_dict),而不是整个模型对象,更轻量、更灵活。

  • 保存:torch.save(model.state_dict(), "model.pth")
  • 加载:先实例化模型,再 model.load_state_dict(torch.load("model.pth"))
  • 若要连优化器状态一起保存(比如继续训练),可打包成字典:torch.save({"model": model.state_dict(), "optimizer": opt.state_dict()}, ...)

不复杂但容易忽略:确保训练时模型在训练模式、验证时切换到评估模式;GPU 上运行记得把数据和模型都调用 .to(device);调试初期可先用小数据集和单步训练验证流程是否通顺。