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()、Dropoutnn.Dropout(0.5) -
forward方法里不要调用.backward()或.zero_grad(),那是训练循环的事 - 小技巧:用
model.train()和model.eval()控制 Dropout/BatchNorm 行为
训练循环:五步走清清楚楚
一个标准训练步骤包含数据加载、前向计算、损失计算、反向传播、参数更新。
本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目,让您快速入门TP5项目开发。
立即学习“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);调试初期可先用小数据集和单步训练验证流程是否通顺。









