从 sklearn 到 PyTorch
本节定位
如果说 scikit-learn 像自动挡汽车,那么 PyTorch 更像手动挡汽车。
scikit-learn帮你把很多细节都封装好了PyTorch让你自己控制模型、损失函数、梯度和训练流程
学会这节,你会知道自己到底是从哪里“换挡”的。
学习目标
- 理解
sklearn和PyTorch的职责差异 - 建立数据、模型、损失函数、优化器、训练循环的整体心智模型
- 用一个最小例子同时跑通
sklearn和PyTorch - 明白为什么深度学习需要 PyTorch 这种“更底层”的框架
一、为什么学完 sklearn 还要学 PyTorch?
在第 5 站里,你已经用过 scikit-learn:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)
这套体验很舒服,但也意味着 很多东西被“藏起来”了:
| 你做的事 | sklearn 帮你做了什么 |
|---|---|
| 选模型 | 定义了参数结构 |
调 fit() | 自动完成前向计算、求损失、求梯度、更新参数 |
调 predict() | 自动完成推理 |
而在 PyTorch 中,这些步骤要拆开来写:
| 步骤 | 你需要自己处理什么 |
|---|---|
| 准备数据 | 把数据转成 Tensor |
| 定义模型 | 用 nn.Module 或 nn.Sequential 写网络 |
| 定义损失函数 | 例如 nn.MSELoss() |
| 定义优化器 | 例如 torch.optim.SGD() |
| 训练循环 | forward -> loss -> backward -> step |
这看起来更麻烦,但换来的好处是:
- 你可以定义任何网络结构
- 你可以控制训练过程的每一步
- 你可以做 CNN、RNN、Transformer、大模型微调这些
sklearn很难覆盖的事
二、把两者放在一张图里看
- 在
sklearn里,这条链路大多被包进了fit() - 在
PyTorch里,这条链路会完整暴露出来
所以 PyTorch 的学习重点不是“多几个 API”,而是:
你开始真正接触模型训练的内部结构。