Skip to content

为什么需要 PyTorch

本篇是教程的开篇。我们不急着写代码,先回答一个更重要的问题:市面上框架这么多,为什么偏偏学 PyTorch?它到底解决什么问题,又不解决什么问题?

一个真实的痛点场景

假设你是一名后端工程师,老板某天把你叫进办公室:

"我们用爬虫收集了 50 万条用户评论,你做个功能,把差评自动挑出来。规则我不管,明天要 demo。"

你的第一反应可能是写正则表达式。两天后你发现:"这个商家一般般不推荐" 这句话里全是负面词,但整体其实是中性偏负;"这手机烂得像板砖太能摔了" 居然是好评。规则写不完。

这时你想起深度学习:把评论喂给一个网络,让它自己从数据里学规律。但你立刻遇到三个现实问题:

  1. 矩阵运算太慢。一个最简单的两层网络,一次前向传播就是几百万次乘加,用 NumPy 在 CPU 上跑,训练一轮要几分钟。你需要 GPU 加速,但没人想手写 CUDA 核函数。
  2. 梯度推导太痛苦。反向传播(Backpropagation)要求每个参数的梯度。手推两层网络的公式还行,换成十几层、带 Dropout 和残差连接的网络,推导量指数级增长,还极易算错。
  3. 实验迭代太频繁。今天想换激活函数,明天想加一层,每个想法都要重走一遍"改公式 → 改代码 → 调试"的流程。

PyTorch 就是把这三件事全部包办的工具:它帮你把矩阵运算自动搬到 GPU 上、自动算梯度、并且让"改网络结构"只意味着改几行 Python 代码。

PyTorch 解决什么、不解决什么

先说清楚边界,避免学了之后发现"不对啊,这跟我预期不一样"。

✅ 它解决的

问题PyTorch 的答案
GPU 并行计算张量(Tensor)一行代码 .to("cuda") 即可搬到 GPU
梯度自动计算自动求导引擎(Autograd)记录运算图,.backward() 一键求梯度
网络搭建nn.Module 像拼积木一样组合层
数据喂送Dataset / DataLoader 处理批量、打乱、多进程加载
科研级灵活性动态计算图,训练循环就是普通 Python for 循环,随便加 if/else
工业部署TorchScript / torch.export / ONNX 导出,服务端推理(TorchServe、torch.compile)

❌ 它不解决的

  • 它不是"开箱即用的 AI 服务"。PyTorch 不会直接给你一个能用的翻译模型——它给你的是"造模型的原材料"。想要成品,要用 Hugging Face Transformers 这类构建在 PyTorch 之上的库。
  • 它不管数据质量。Garbage in, garbage out,数据清洗仍然是你的工作。
  • 它不是机器学习的全部。传统的随机森林、XGBoost 等场景,用 sklearn 更合适,不需要动用深度学习。
  • 它不替你理解原理。框架把数学变成了 API,但为什么学习率要调、为什么会过拟合,仍然是需要自己理解的知识。

与同类框架的对比

深度学习框架不少,最常见的对比对象是 TensorFlow 和 scikit-learn(虽然定位不同,很多新手三者一起纠结)。

维度PyTorchTensorFlow 2.xscikit-learn
定位研究 + 工业通用的深度学习框架偏工业部署的深度学习框架传统机器学习库
计算图动态图(Python 怎么写就怎么跑)图层 API 动态 + tf.function 静态编译无(不是深度学习框架)
调试体验✅ 直接用 print / pdb,像调普通 Python早期版本调试困难,2.x 已改善普通 Python 体验
GPU 支持✅ 一等公民✅ 一等公民⚠️ 有限
学习曲线平缓,概念少概念较多(Graph/Session/keras 历史包袱)非常平缓
生态(论文/开源模型)✅ 主流论文首选,新品几乎默认 PyTorch 实现较多存量工业项目传统 ML 事实标准
移动端/嵌入式ExecuTorch / ONNX 导出TFLite 成熟不适用
招聘市场算法岗事实标准存量工业岗数据岗常见

一句话选型建议

  • 想做深度学习(图像、NLP、大模型相关),或者想读懂开源 AI 项目源码 → PyTorch,没有悬念,2023 年之后大模型时代新发布的开源项目(LLaMA、Stable Diffusion、各类 RLHF 框架)几乎清一色 PyTorch 实现。
  • 维护老的 TensorFlow 工业项目 → 继续 TF,不值得为框架切换重写。
  • 结构化数据(表格预测)→ 先用 scikit-learn / XGBoost,深度学习往往不是最优解。

本教程的学习路线

本教程基于 PyTorch 2.x(写作时为 2.5+,命令在 2.1~2.x 均可用),假设你会基础 Python(函数、类、pip),不要求任何数学和机器学习背景。

后续章节安排:

  1. 核心概念与心智模型 —— 用类比建立正确的直觉
  2. 环境搭建 —— 从零装好可训练的环境
  3. 实战项目 —— 手写数字识别,从零到一,中途还会带你故意踩两个新手必踩的坑
  4. 进阶与最佳实践 —— 从"能跑"到"跑得快、跑得稳"
  5. 排错与 FAQ —— 遇到报错先来这里查

提示:不要因为"概念篇看起来简单"就跳过。很多新手实战时一头雾水,根源恰恰是张量形状和计算图的心智模型没建立起来。

小结

  • PyTorch 解决三件事:GPU 加速、自动求梯度、灵活搭网络
  • 它是"造模型的原材料",不是"开箱即用的 AI"。
  • 深度学习 / 大模型方向,PyTorch 是当前事实标准,学了不亏。

下一步:先去建立心智模型,或者直接跳到环境搭建动手装环境也可以——装完再回头补概念,两条路线都行。