一、PyTorch

1. 是什么

PyTorch 是由 Facebook(现 Meta)AI 研究院主导开发的、基于 动态计算图 的深度学习框架。其设计完全遵循 Python 语言习惯,核心特点是 Define-by-Run:你在写代码的过程中,计算图会随每一行实际运算动态地构建起来。

2. 为什么(设计哲学与优势)
  • 极致的研究友好性:由于图是动态的,可以像调试普通 Python 程序一样使用 pdb 或 IDE,不必先“编译”整张图再运行。对循环、条件分支、可变序列长度的网络极其自然。

  • Pythonic 风格:张量操作、自动微分接口与 NumPy 几乎无缝切换,学习成本低。

  • 强大的分布式与生态torch.distributedTorchScript、以及后来的 torch.compile 逐步补齐了从研究到部署的链条。Hugging Face、TIMM 等庞大生态几乎都构建在 PyTorch 之上。

  • 快速迭代:非常适合需要不断试错的学术环境,因此近年来顶会论文的官方实现已绝大多数采用 PyTorch。

3. 怎样做(典型工作流)
  • 数据:继承 Dataset / DataLoader

  • 模型:继承 nn.Module,在 __init__ 中定义层,在 forward 中写前向逻辑。

  • 训练:手动编写训练循环。选择优化器 optim,计算损失 loss = criterion(out, target),然后 loss.backward() + optimizer.step()

  • 部署:通过 torch.jit.trace/script 导出 TorchScript;或者直接使用 ONNX;新项目多用 torch.export 与 torch.compile 进行图优化与加速。


二、Keras

1. 是什么

Keras 是一个高级神经网络 API,它本身不是一个底层计算引擎,而是对 TensorFlow、JAX 或 PyTorch 等后端的封装。由 François Chollet 提出,核心理念是“为人类设计的 API”。目前已内嵌为 tf.keras,同时也有多后端版本 keras-core(现已成为官方 keras 3.0)。

2. 为什么(设计哲学与优势)
  • 极低的认知负载:减少用户需要做的决定,把最佳实践固化为默认行为(合理的初始化、默认的优化器参数等)。

  • 极快的原型开发速度:Sequential 或 Functional API 几行代码就能搭出标准网络,训练只需 compile + fit

  • 后端无关:Keras 3.0 可在 TensorFlow、JAX 和 PyTorch 上无感运行,一套代码多处使用。

  • 适合教学和工业快速验证:将复杂概念(如多 GPU 训练、混合精度)封装为简单参数。

3. 怎样做(典型工作流)
  • 模型model = Sequential([...]) 或用 Functional API 构建多输入/输出。

  • 编译model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])

  • 训练model.fit(train_ds, epochs=10, validation_data=val_ds),所有回调、日志、分布式训练均由框架自动处理。

  • 扩展:可编写自定义层 Layer、自定义训练循环 GradientTape(在 TensorFlow 后端时)来突破 fit 的局限。


三、TensorFlow

1. 是什么

TensorFlow 是 Google Brain 团队开发的端到端机器学习平台,其核心是 静态计算图 架构。用户先用符号式 API 定义完整的计算图,然后在 Session 中高效地执行。2.x 版本后,默认启用 Eager Execution 让编码体验更接近 PyTorch,但其底层的图优化和部署能力依旧是其核心竞争力。

2. 为什么(设计哲学与优势)
  • 生产部署的无出其右TensorFlow ServingTensorFlow Lite(移动/嵌入式)和 TensorFlow.js(浏览器)构成了完整的跨场景部署方案。这是目前 PyTorch 仍然在追赶的部分。

  • 图级别的全局优化:XLA 编译器可以对整个静态图进行算子融合、内存优化,在 TPU 或 GPU 上达到极致性能。

  • 全面的生态系统:除了训练,还有 TFX 用于数据验证与管道,TensorBoard 用于可视化,tf.data 用于构建高性能输入管道。

  • 工业规模稳定:适合大型团队构建标准化、长期维护的生产流水线。

3. 怎样做(典型工作流)
  • 图与 Eager 双模式:可直接像 PyTorch 一样逐行运算(Eager),也可以用 @tf.function 装饰器将 Python 函数编译成高性能静态图。

  • 数据tf.data.Dataset 从文件、TFRecord 中构建高性能流水线,实现预取与并行处理。

  • Keras 为一等公民:官方推荐使用 tf.keras 进行模型构建和训练,几乎涵盖所有高级 API。

  • 部署:模型保存为 SavedModel 格式,直接部署到 TF ServingTFLiteTF.js 等不同运行环境。


四、核心对比与总结

维度 PyTorch Keras TensorFlow
定位 研究优先,兼顾生产 高级 API,极致易用 端到端,生产优先
计算图 动态(Define-by-Run) 委托后端(本身无图) 静态(Define-and-Run),2.x 后兼容动态
学习曲线 适中,Pythonic 直觉好 极低,入门最快 较陡,概念较多(图/Session等)
调试体验 优秀,原生 Python 调试 依赖后端,中等 2.x 后大幅改善,1.x 困难
部署能力 快速进步中(TorchServe, ONNX) 依赖后端 业界最强(Serving/Lite/JS/TPU)
核心生态 Hugging Face, TIMM, TorchVision 跨框架运行 TFX, TensorBoard, MediaPipe
适用人群 研究人员,算法工程师 初学者,快速原型,课程教学 大型企业,生产级部署,边缘计算

📊 Mermaid 总结框图

这个框图可以这样理解:

  • 纵向:分别展示每个框架的设计理念、典型工作流和生态优势。

  • 横向虚线:说明 Keras 作为高级 API 与另外两者的关系。

  • 最下方:给出基于不同需求的选择建议。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐