TensorFlow与PyTorch对比

  • 计算图
  • 分布式训练
  • 生产部署
  • 比较



参考链接:


https://zhuanlan.zhihu.com/p/80733307



计算图

计算图是一种将计算描述成有向无环图的抽象方式。图是一种由节点Node(顶点)和边Edge构成的数据结构,是由有向的边成对连接的顶点的集合。

结点:表示数据,如向量、矩阵、张量。
边:表示运算,如加减乘除卷积等。

pytorch使用动态计算图,运算与搭建同时进行;灵活,易调节。图会随着执行过程而改变和执行节点,没有特殊的会话接口或占位符。整体而言,这个框架与 Python 语言的整合更紧密,大多数时候感觉更本地化。因此,PyTorch 是更 Python 化的框架。

tensorflow使用的静态计算图,先搭建图,后运算;高效,但不灵活。 TensorFlow 中运行代码之前以静态方式生成计算图的方式。计算图的核心优势是能实现并行化或依赖驱动式调度(dependency driving scheduling),这能让训练速度更快,更有效率。

分布式训练

分布式训练PyTorch 和 TensorFlow 的一个主要差异特点是数据并行化。PyTorch 优化性能的方式是利用 Python 对异步执行的本地支持。而用 TensorFlow 时,你必须手动编写代码,并微调要在特定设备上运行的每个操作,以实现分布式训练。

生产部署

TensorFlow 可以直接使用 TensorFlow serving 在 TensorFlow 中部署模型,这是一种使用了 REST Client API 的框架。
PyTorch 没有提供任何用于在网络上直接部署模型的框架。你必须使用 Flask 或 Django 作为后端服务器。

比较

TensorFlow 的优点:
简单的内置高级 API
使用 TensorBoard 可视化训练
通过 TensorFlow serving 容易实现生产部署
很容易的移动平台支持
开源
良好的文档和社区支持

TensorFlow 的缺点:
静态图
调试方法
难以快速修改

PyTorch 的优点
类 Python 的代码
动态图
轻松快速的编辑
良好的文档和社区支持
开源
很多项目都使用 PyTorch

PyTorch 的缺点:
可视化需要第三方
生产部署需要 API 服务器