从最简单的线性回归开始,把 PyTorch 训练模型的四步走清楚:数据、模型、损失函数和优化器。
这一篇主要整理自
liuer_pytorch/1-4.ipynb,以及我自己写过的pytorch_learning/pytorch_1.py、pytorch_learning/pytorch_5.py。它们共同在做一件事:用一个最简单的任务,把"训练神经网络"这件事拆开。
1. 为什么从线性回归开始
我越来越觉得,PyTorch 的入门最好不要一上来就卷 CNN 或 Transformer。
线性回归虽然简单,但它几乎把训练流程里所有最基础的东西都露出来了:
- 数据长什么样
- 模型参数是什么
- 损失函数在优化什么
- 梯度下降到底怎么更新参数
很多后面更复杂的网络,其实都只是把这个流程换成了更复杂的函数。
2. 训练模型的四步
在课程笔记里,这条线很明确:
- 准备数据集
- 设计模型
- 设计损失函数和优化器
- 写训练循环
这四步几乎可以当成 PyTorch 的最小心智模型。后面不管做分类、卷积还是序列任务,都还是这四步。
3. 先用 NumPy 直觉理解梯度下降
在线性回归里,我们希望学到的关系是:
y = wx + b如果用均方误差:
MSE = 1 / N * Σ (ŷ - y)^2那么训练本质上就是不断调整 w 和 b,让误差越来越小。
课程里也提到了梯度下降、随机梯度下降,以及 mini-batch 为什么是一个工程上的折中:
- 整批数据一起算,稳定但更新慢
- 单样本更新,噪声更大但更容易跳出局部坏区域
- mini-batch 在两者之间做 trade-off
这一层如果没想明白,后面 optimizer.step() 很容易变成一句纯咒语。
4. 用 PyTorch 写一个最小线性回归
下面这段代码基本就是我当时练手时的核心版本:
Python3
点击展开代码
展开代码
这里最值得记住的是两点:
nn.Linear已经把wx + b封装好了model.parameters()会把可学习参数交给优化器
真正的训练循环则是:
Python3
点击展开代码
展开代码
这里每一行都对应一个明确动作:
zero_grad():清空上一次的梯度model(inputs):前向传播criterion(...):得到损失loss.backward():反向传播算梯度optimizer.step():更新参数
5. 为什么这一套值得反复记
我自己后来再看 CNN、RNN、Transformer 时,会发现很多"新东西"其实只是:
- 数据形状变了
- 模型结构变复杂了
- 损失函数换了
- 优化器可能从 SGD 变成 Adam
但训练主线没有变。
所以在 PyTorch 入门阶段,最值钱的不是"背了多少层名字",而是把下面这个模板吃透:
Python3
点击展开代码
展开代码
6. 这一阶段该记住什么
如果只保留最少的几句话,我会记:
- 线性回归不是为了学回归,而是为了学训练流程。
nn.Module + loss + optimizer + loop是 PyTorch 最核心的训练骨架。- 梯度下降不是黑盒,它只是在沿着损失下降的方向调整参数。
有了这一层,后面看 Tensor、Autograd 和更复杂网络时,就不容易失去主线。
专题阅读
Pytorch
这篇文章属于同一条阅读链。你可以直接在这里切换,不用再回到列表页重新找。
部分信息可能已经过时
留言区
留言
欢迎纠错、补充、交流。昵称和评论内容必填;如果你愿意,也可以留下联系方式,仅站主可见。