TensorFlow和PyTorch介绍与异同

创建于:2020.03.18
修改于:2020.03.18

文章目录

        • 1. 背景
        • 2. TensorFlow简介
        • 3. PyTorch简介
        • 4. 二者的相同与不同
          • 4.1 相同之处
          • 4.2 不同之处
        • 5. 总结
        • 6. 参考连接
        • 7. Keras(题外)

1. 背景

被问到了为啥选择TensorFlow,回答的比较含糊。我用TensorFlow2.0,主要是因为一开始学习的时候用的就是TF,学习的例子也是TF,社区资源也好些。

我是从TensorFlow2.0开始学习使用的,一直没用过PyTorch,不敢妄议二者的好坏。在这仅仅是理论上学习二者的相同和不同。

我根据网络博客资源,整理了出来。由于参考资源多为2017–2018之间,所以可能不是最新。如果有幸被专家,大牛看到,不正确的地方,不完善的地方还请给我留言。

下图总结了在 GitHub 中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在 GitHub 里的收藏数,这个数据由 Mitch De Felice 在 2017 年 5 月初完成。
TensorFlow和PyTorch介绍与异同_第1张图片

2. TensorFlow简介

2015年11月10日, Google宣布推出全新的机器学习开源工具 TensorFlow。 TensorFlow最初是由Google机器智能研究部门的 Google Brain团队开发,基于Google 2011年开发的深度学习基础架构 DistBelie韵建起来的。

3. PyTorch简介

2017年1月, Facebook人工智能研究院 (FAIR) 团队在 GitHub上开源了PyTorch,并迅速占 领GitHub热度榜榜首。 PyTorch自发布起关注度就在不 断上升,截至2017年10月18日, PyTorch的热度已然超越了其他三个框 架 (Caffe、 MXNe和Theano) , 并且其热度还在持续上升中。

4. 二者的相同与不同

4.1 相同之处

支持语言
tensorflow:支持C++ 和 python 编程
pytorch:支持python编程
支持硬件
tensorflow:CPU、 GPU、 移动设备
pytorch:CPU 、GPU

4.2 不同之处
序号 项目 TensorFlow PyTorch
1 接受度 (1)社区庞大,文档很齐全,如果官方文档无法满足你的需求,还可以在互联网上找到很多很好的教程。(2)可以在github上找到数百个已经实现并训练过的模型。 社区正在扩大,文档和官方教程也很好(具体我没用过)
2 图的定义 TensorFlow遵循“数据即代码,代码即数据”的理念。可以在模型能够运行之前静态地定义图 在PyTorch中,图的定义则更为重要和动态化:你可以随时定义、随时更改、随时执行节点,并且没有特殊的会话接口或占位符。总体而言,该框架与Python语言集成地更为紧密,并且在大多数时候用起来感觉更加本地化。
3 可视化 TensorFlow包含Tensorboard工具包,对调试和比较不同的训练过程非常有用。(1)显示模型图、绘制标量变量、图像可视化等。(2)Tensorboard能够显示通过tf.summary模块收集的各种摘要。 PyTorch并没有一个类似于Tensorboard的工具,但有一个可以将Tensorboard集成进来的工具。或者,也可以免费使用标准绘图工具:matplotlib和seaborn。
4 部署 TensorFlow Serving的框架,用于在一个指定的gRPC服务器上部署模型,可以轻松实现。 没有自带的。可以使用Flask或者另一种替代方法来基于模型编写一个REST API
5 框架还是库 纯TensorFlow看起来更像是一个库:(1)所有的操作都在低层次进行,因此你不得不编写大量的样板代码。(2)有多个框架可供选择 PyTorch看起来真的像一个框架,感觉更“Python化”,并且有面向对象的方法。
6 分布式 Tensorflow还支持分布式训练。 PyTorch目前不支持。
7 计算速度 tensorflow 在CPU上运行速度比 pytorch 快 tensorflow 在GPU上运行速度和 pytorch 差不多
8 设备管理 不需要手动调整,简单 要明确启用的设备

5. 总结

看完之后,我还是用tensorflow,在工作中寻找社区资源,可视化、部署以及运行速度都相对好些。
以后有时间确实应该亲自实践下PyTorch。

6. 参考连接

CSDN:pytorch(一)——与caffe ,TensorFlow的区别
从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?
tensorflow和pytorch框架对比总结
PyTorch vs TensorFlow,哪个更适合你


7. Keras(题外)

Keras是一个离层神经网络API,由纯Python编写而成并使用 TensorFlow、 Theano及CNTK作为后端。 Keras为支持快速实验而生, 能够把想法迅速转换为结果。

优势:Keras应该是深度学习框架之中最容易上 手的一个,它提供了一致而简洁的API,能够极大地减少一般应用下用 户的工作量,避免用户重复造轮子。

劣势:严格意义上讲, Keras并不能称为一个深度学习框架,它更像 —个深度学习接口,它构建千第三方框架之上。 Keras的缺点很明显: 过度封装导致丧失灵活性。

你可能感兴趣的:(tensorflow)