最近学习 PyTorch,参考网上大家的讨论,简单的将 PyTorch 和 TensorFlow 做了一下比较(2020/03/30),难免有疏漏,仅供参考
PyTorch 是后来者,但由于其易用性和灵活性,越来越收到青睐,随着时间的推移,二者的比较应该还会持续变动
特性 | PyTorch | TensorFlow | 备注 |
---|---|---|---|
易用性 | 与 python 非常契合,与 numpy 非常类似,易于上手 | 定义图的时候像是在使用一门新的语言,上手难 | |
API | 易于使用 | 混乱, 冗余 | |
图计算 | 动态图计算,可以在运行时构建计算图,甚至可以在运行时更改它们,非常灵活 | Tensorflow 1.x 静态图构造,因此需要对图形进行编译,然后在执行引擎上执行 | Tensorflow 2.0 默认使用动态图,对 1.x 的兼容不太好,原有程序可能需要较大改动 |
可视化 | Visdom,TensorBoard | TensorBoard | |
部署生产 | 开放式神经网络交换ONNX,解决通用深度学习框架之间的模型迁移部署 | 直接使用 TensorFlow serving 在 TensorFlow 中部署模型 | 一开始 pytorch 在部署上没有优势,但随着ONNX生态的发展,逐渐和 TensorFlow 拉平 |
调试 | 简单,可以使用标准调试器 ,例如pdb或PyCharm | TensorFlow eager 之前需要专门的调试器 tfdbg | Tensorflow 2.0 默认使用动态图以后和 PyTorch 一样直接使用标准调试器 |
性能 | 不相伯仲 | ||
文档 | 全面 | 全面 |
参考文章:
有些文章较早不能代表现在的情况