TensorFlow和PyTorch介绍与异同

创建于:2020.03.18
修改于:2020.03.18

1. 背景

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

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

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

下图总结了在 GitHub 中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在 GitHub 里的收藏数,这个数据由 Mitch De Felice 在 2017 年 5 月初完成。
在这里插入图片描述

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 不同之处
序号项目TensorFlowPyTorch
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的缺点很明显: 过度封装导致丧失灵活性。

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值