争论不休的TF 2.0与PyTorch,到底现在战局如何了? | 技术头条

「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑
作者 | Jeff Hale
译者 | Jackey
编辑 | Jane
出品 | AI科技大本营(id:rgznai100)
【导语】 TensorFlow 2.0 和 PyTorch 1.0 陆续发布后,关于它们二者到底谁更胜一筹的讨论一直未停,也一直没有一个结果。到底目前谁更受青睐,本文中,作者围绕 TensorFlow 2.0 和 PyTorch 1.0,搜集多方来源的数据为大家进行深入分析,除此之外,还谈到一些学习建议,未来深度学习框架还有哪些方向值得大家关注等话题。
TF 2.0 vs PyTorch 焦灼之战
2018 年 9 月,作者曾写过一篇文章,从需求量、使用量、热门度等角度对比分析了主流深度学习框架。TensorFlow 毫无争议地成为重量级深度学习框架的冠军,PyTorch 即是赛场新秀,也是后起之秀。那么,在过去的六个月的时间里,深度学习框架的赛场又有什么新进展?
为此,我查询了 Indeed、Monster、LinkedIn 和 SimplyHired 几家招聘网站的职位信息,还考量了谷歌搜索的结果、GitHub的表现、Medium 和ArXiv 的新增文章数,Quora 上关于深度学习框架主题的关注者数量,这些信息勾勒出了深度学习框架在需求、使用和热度增长方面的大体概况。
集成与更新
最近,TensorFlow 和 PyTorch 框架都有一些重要的进展。PyTorch 1.0 版于 2018 年 10 月预发布,同时 fastai v1.0 版也已发布,都标志着这些框架在走向成熟。TensorFlow 2.0 Alpha 版于 2019 年 3 月 4 日发布,增加了新功能还改进了用户体验,更紧密地与 Keras 结合,集成为高级API,同时也会有更多功能。
对比分析方法
这次,我将 Keras 和 fastai 也纳入评估分析范围,因为它们与 TensorFlow 和 PyTorch 有着紧密的关系,而它们的发展与受欢迎数据也可以作为评估 TensorFlow 和 PyTorch 的一个衡量尺度。
但是这次不会再探讨其他深度学习框架,如 Caffe、 Theano、 MXNET、 CNTK、 DeepLearning4J 还有 Chainer 等,这些框架有其各自的优点,但它们与 TensorFlow 或 PyTorch 的发展方向是不同的,而且也没有与其他框架紧密结合。
搜集查询这些数据的时间是 2019 年 3 月 20日至 21 日,并且把数据可视化展现出来,想要源数据和参考交互图表的小伙伴们可以访问下面两个地址:
https://docs.google.com/spreadsheets/d/1Q9rQkfi8ubKM8aX33In0Ki6ldUCfJhGqiH9ir6boexw/edit?usp=sharing
https://www.kaggle.com/discdiver/2019-deep-learning-framework-growth-scores
接下来,我们就一起来看看更具体的对比分析结果。
一、招聘网站:职位需求变化
为了解现在的招聘需求中看重哪些深度学习框架,我在 Indeed、LinkedIn、Monster 和SimplyHired 上搜索了相关职位。
用“机器学习”+“库名”这两个关键词进行搜索。比如我要搜索哪些岗位需要 TensorFlow,就输入“ machine learning TensorFlow”,这样做也是个人习惯使然。不加上机器学习这个关键词进行搜索也可以,并不会产生明显不同的结果。(搜索区域为美国)。
排除 2019 年 3 月前的职位信息,以限定数据时间范围为这半年内,整理后发现:
对掌握 TensorFlow 的职位比 PyTorch 略高。Keras的职位需求大约是 TensorFlow 的一半。目前没有什么招聘需求中对 fastai 有明确的要求。值得注意的是,除了 LinkedIn,其他求职网站上需要掌握 PyTorch 的职位要比 TensorFlow 多。
二、Google Trends:分析谷歌搜索数据
谷歌作为最大的搜索引擎,其网页搜索结果可以作为衡量深度学习框架受欢迎程度的标准之一。分析 Google Trends 看了过去一年来各个框架的检索历史,搜索全球范围内,用户对于机器学习和人工智能类别的搜索热度。谷歌不提供绝对的搜索数字,但提供了大概数字,可以进行参考。
通过计算过去六个月,用户对各个框架搜索热度的平均分数,并将其与在此之前的六个月的平均分数进行对比,TensorFlow 的搜索量相对下降,PyTorch 的搜索量则有所提升。下图反映了过去一年中,用户使用谷歌搜索各个框架的热度。
(蓝色:TensorFlow;黄色:Keras;红色:PyTorch;绿色:fastai)
三、博客网站:新文章发表情况
Medium 是数据科学文章和教程的重要发布渠道之一,很多人会在上面分享自己的博文。
同样在过去六个月中,Medium 上关于TensorFlow 和 Keras 发表的文章数量十分接近,而 PyTorch 则相对较少。 作为高级 API,Keras 和 fastai 也受到了很多深度学习开发者的欢迎,在 Medium 上也有很多教学文章。
四、arXiv:新论文中的使用情况
arXiv 想必大家都非常熟悉了,大多数人都会把自己的研究论文挂在上面。查找半年来 arXiv 上更新的论文中使用 TensorFlow 和 PyTorch 的数量发现,研究中使用 TensorFlow 的数量还是明显多于 PyTorch 的。
五、GitHub:四个数据
GitHub 的数据也可以作为评价框架受欢迎程度的一个指标,下面的四个图是分别对 Github 上不同深度学习框架 Stars、Forks、Watches 和 Contributors 的统计结果。无论是哪个数据,TensorFlow 都是 Top 1,不过 PyTorch 的 Watchers 数和 Contributors 数与 TensorFlow 非常接近,并没有很大的差距,与此同时 FastAI 的 Contributors 数量值得关注,其远高于 Keras,接近PyTorch。Keras 和 TensorFlow 本都是 Google 主导开发的,一些 Keras 的贡献者也在 TensorFlow 中参与开发,因此,Keras 的数据也会受此影响。
六、Quora:关注数量
在这次的对比分析中,新增加了一个新参考指标:Quora 上各框架的关注人数。这个指标以前没有参考过。过去六个月,TensorFlow 的关注者最多,PyTorch 和 Keras的关注者还远不及TensorFlow。
搜集完这些数据后,我把所有的信息整合到一个统一的评测量度中,下面就为大家介绍增长分数的计算。
增长分数计算
以下是计算增长分数的步骤:
1、将所有的信息转化成从 0到1 区间的数值。
2、聚合在线职位信息和 GitHub 活动的各个分项。
3、根据下图,对各类别进行加权计算。
4、将加权得分换算成百分制
5、将所有的得分求和,得出每个框架的增长得分。
在上面的 6 个类别中,职位信息数据占总比的 35%,其他五类权重相等。(金钱的推动力还是很现实的)。这样的划分似乎可以很好地平衡了各个分类的权重。与之前 2018 年加权分数分析不同,我没有考量 KDNuggets 的调查(没有更新数据)与新书出版情况(近六个月没有很多新书出版)。
对比结果
下表显示了各个框架的细分项得分:
查看谷歌表格可访问下面网址
https://docs.google.com/spreadsheets/d/1Q9rQkfi8ubKM8aX33In0Ki6ldUCfJhGqiH9ir6boexw/edit?usp=sharing
以下是各个类别和最终得分:
下图展现了各个框架的成长得分:
TensorFlow 还是需求量最大,增长最快的深度学习框架,其地位暂时不可取代。PyTorch 的增长同样迅速,职位需求的大幅增加也印证了其使用量和需求量的增长。Keras 在过去六个月中有所提升。最后,FastAI 本身基数较低,但也有增长。毕竟它还是这些框架中最新的那个。
无论是 TensorFlow 还是 PyTorch 都是值得学习的好框架。
学习建议
如果你要学习 TensorFlow,我建议你从 Keras 学起。首推 Chollet 的 Deep Learning with Python 和 Dan Becker 的 DataCamp course on Keras。TensorFlow 2.0 版本中集成了tf.keras,因此,现在在 TensorFlow 框架中就可以调用 Keras 了。如果你要学习 PyTorch,我建议你从 fastai 学起。可以学习慕课课程 Practical Deep Learning for Coders, v3,从深度学习基础,到 fastai 与 PyTorch 基础贯穿学习。
关于 TensorFlow 和 PyTorch,我们还能学习什么?
未来的方向
经常听开发者们说道,相比 TensorFlow,更喜欢用 PyTorch,因为 PyTorch 更适用于 python,其 API 也更稳定。它还有一个原生的 ONNX 模型接口,可以加速训练预测。此外,PyTorch 还有很多和 Numpy 一致的命令,这也降低了学习的难度。
然而,谷歌首席决策情报工程师凯西·科济尔科夫认为,TensorFlow 2.0版本专注于提升用户体验。更好用的接口、集成了 Keras,并增加了一个执行选项。这些改变,再加上 TensorFlow 的包容性,会让 TensorFlow 在接下来的时间里继续保持流行与热度。
TensorFlow 最近还宣布了一个令人激动的计划:开发一个 Swift for TensorFlow。Swift 是一种由苹果公司开发的编程语言,比 Python 的执行效率和开发速度都要快。慕课上 Fast.ai 的课程也会结合一些 Swift for TensorFlow,虽然这个语言距离成熟还需要时间,但是它对于深度学习框架而言,是一个重要的进展。语言和框架间的集成与借鉴也是一定会发生的。
另一个影响深度学习框架的因素是量子计算。距离量子计算机的有效利用还需要数年的时间,不过 Google、IBM、微软和其他一些公司已经开始思考如何集成量子计算和深度学习。届时,为使用新的技术,这些框架将会面临相应的调整。
TensorFlow 和 PyTorch 框架都在进步,它们都具备高级 API 接口(tf.keras 和 fastai),降低深度学习的学习门槛。
原文链接:
https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318
(本文为 AI大本营编译文章,转载请微信联系 1092722531)
关于 TF、PyTorch 或其他深度学习框架,你有哪些使用感受与经验,希望爱技术、爱分享的小伙伴们愿意与大家分享,可与我们联系,精彩原创内容还有稿费或纪念品哦!
◆
精彩推荐
◆
「2019 Python开发者日」演讲议题全揭晓!这一次我们依然“只讲技术,拒绝空谈”10余位一线Python技术专家共同打造一场硬核技术大会。更有深度培训实操环节,为开发者们带来更多深度实战机会。更多详细信息请咨询13581782348(微信同号)。
推荐阅读:
极客头条
零门槛!手把手教你打造AI应用
分析11年21部漫威电影,一览导演、主演、口碑票房最佳......
用Python三步就学会滤镜的实现原理,轻松上手!
靠找Bug赚了6,700,000元!他凭什么?
30位90后霸榜! 福布斯: 比你年轻、比你有颜、比你有才华, 就是他们了!
程序员深夜逆行被拦后崩溃欲自杀:老板在催我!女朋友在催我!
微软 CTO 韦青:“程序员 35 岁就被淘汰”是个伪概念 | 人物志
OpenStack已死?恐怕你想多了 | 技术头条
❤点击“阅读原文”,查看历史精彩文章。
相关文章:

struts2实验2:struts2.xml action中* ,{}以及${}
p.s 关键在于struts.xml中的匹配,使用* ,{}以及${}可以让代码更加简洁清晰 代码核心思路 在struts.xml中通过路由(url)去指定控制逻辑的Action中的方法,例如 <package name"admin" namespace"/admin" extends"struts-global">&…

【Ubuntu】dpkg-deb -c :查看deb文件中的内容
1、dpkg-deb -c :查看deb文件中的内容 $ dpkg-deb -c packageeg: $ dpkg-deb -c sogoupinyin_2.2.0.0108_amd64.deb drwxr-xr-x root/root 0 2018-04-18 16:50 ./ drwxr-xr-x root/root 0 2018-04-18 16:50 ./etc/ drwxr-xr-x root/root …

捕获Camera并保存图片到本地(照相功能) -samhy
Flex博文 捕获Camera并保存图片到本地(照相功能) -samhy作者:admin 日期:2010-07-12字体大小: 小 中 大捕获Camera并保存图片到本地(照相功能)这几天对Camera类进行了一下规整,并利用JPGEncoder类实现了照相的功能,代码如下: XML/HTML代码import flash.m…

【C++】模板函数的声明和定义必须在同一个文件中
1、问题描述 习惯性的将函数的定义和实现,分别写在头文件和源文件(.cpp)中。今天也按照这个习惯实现了一个模板函数。然后编译时报错 ... error: undefined reference to ...2、原因分析 c中模板的声明和定义不能分开。C中每一个对象所占用…

基于AWS-ELK部署系统日志告警系统
前言 运维故障排障速度往往与监控系统体系颗粒度成正比,监控到位才能快速排障 在部署这套系统之前,平台所有系统日志都由GraylogZabbix,针对日志出现的错误关键字进行告警,这种做法在运维工作开展过程中暴露出多个不足点ÿ…

《周志华机器学习详细公式推导版》发布,Datawhale开源项目pumpkin-book
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑来源 | Datawhale(ID:Datawhale) 如果让你推荐两本国内机器学习的入门经典作,你会推荐哪些呢?相信大家同我一样ÿ…

JVM内存泄漏检测与处理
JVM内存泄漏检测与处理(JVM Memory Leak detection and handling) JVM垃圾回收机制的原则和方法 JVM垃圾回收中一个基本原则是对象没有被引用或则引用其它对象,换句话说当一个对象在heap 中是隔离(isolation)状态的时候,垃圾回收器…

【Dlib】dlib和opencv的互转
一、dlib::matrix转换成cv::Mat 1、注意事项: 1)将dlib::matrix转成BGR格式后,再转换成cv::Mat,因为cv::Mat中是按照BGR顺序存储 2)注意最后添加的cv::Mat::clone()函数,因为dlib::toMat(tmp)返回的mat数…

原创 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军
原创 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军 02972018-04-29 16:15:27 人物志|山东省临沭县 - 一位身残志坚的奋斗青年 - 吴忠军 齐鲁晚报 2018年04月29日 2018年4月29日,山东省临沂市临沭县,一位年轻的小伙子。吴忠军,山东…

百度SLG拿下前锤子科技CTO钱晨,还要合并小鱼在家? | 极客头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑整理 | 一一出品 | AI科技大本营(id:rgznai100)2016 年 7 月,锤子科技前 CTO 钱晨从该公司退休的消息被证实,关于其离职的…

【Dlib】dlib实现深度网络学习之 input层
1、 dlib::input 模板类,深度神经网络的简单输入层,它将某种图像作为输入并将其加载到网络中。 这是一个基本的输入层,它只是简单地将图像复制到一个张量中。 注意:dlib::input只支持输入dlib::matrix和dlib::array2d类型&#x…

首发 | 13篇京东CVPR 2019论文!你值得一读~ 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑编者按:计算机视觉和模式识别大会 CVPR(Conference on Computer Vision and Pattern Recognition)作为人工智能领域计算机视觉方向的重要学术会议…

Windows 活动目录(AD)服务器系统升级到2012之活动目录角色迁移(三)
4.5迁移服务器角色到AD20121. 打开powershell,使用命令迁移服务器角色到AD2008输入命令Ntdsutil输入命令Roles输入命令Connections输入命令Connect to server AD2012,连接AD2012控制器输入命令QUIT输入Transfer infrastructure master命令,转…

《星际争霸2》引擎技术解析
就在SIGGRAPH大会刚结束之后,AMD和暴雪在AMD官方网站上放出了《星际争霸II》的官方技术文档,通过游戏引擎技术的展示让星际迷们感受到越来越多的惊喜。画面优化给CPU带来考验着色方面,在使用原型的基础上利用3D Studio MAX让程序员对整体效果…

回顾与展望:大热的AutoML究竟是什么? | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑来源 | 第四范式编者按:AutoML(Automatic Machine Learning,自动机器学习)旨在研究在没有专业知识的情况下使用的低门槛甚至零门槛的…

【Python】深度学习中将数据按比例随机分成随机 训练集 和 测试集的python脚本
深度学习中经常将数据分成 训练集 和 测试集,参考博客,修改python脚本 randPickAITrainTestData.py 。 功能:从 输入目录 中随机检出一定比例的文件或目录,移动到保存 测试集目录 中,原输入目录作为训练目录。 import…

docker 系列之 配置阿里云镜像加速器
1.登录阿里云 2.登录后找到右上角的“管理中心”,点击进入后》点击“镜像加速器”;剩下的安装文档配置就好 问题1:配置完后还是提示:Tag latest not found in repository 【本人也是在这里被困了好久,尝试了各种方法】 解决方案:最后发现这里…

LVM-HOWTO/学习笔记(二)
1. 在3块scsi磁盘上创建lv Run pvcreate on the disks # pvcreate /dev/sda # pvcreate /dev/sdb # pvcreate /dev/sdc Create a volume group # vgcreate my_volume_group /dev/sda /dev/sdb /dev/sdc/ Run vgdisplay to verify volume group # vgdisplay # vgdisplay…

【python】使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来
使用python脚本将LFW数据中1672组同一个人多张照片拷贝出来 dataCleaning4multiple.py 源码如下: import os, random, shutil import sys, getopt import stringdef getDir(argv):inPath outPath num2try:opts, args getopt.getopt(argv,"hi:o:n:",[&…

EXP6 信息搜集与漏洞扫描
1.实验有关问题 (1)哪些组织负责DNS,IP的管理。 ICANN是一个集合了全球网络界商业、技术及学术各领域专家的非营利性国际组织,负责在全球范围内对互联网唯一标识符系统及其安全稳定的运营进行协调,它能决定域名和IP地址…

百度发的208亿春晚红包,靠这样的技术送到了你手上 | 解读
2019 年的春晚红包项目对百度而言是一次大考,背后需要强大的技术来支撑。如你所见,百度不负“技术大厂”的标签,春晚红包期间系统稳定运行,没有出现宕机事故。在这样一个庞大而复杂的项目面前,他们是如何去用技术去化解…

一步一步学Silverlight 2系列(10):使用用户控件
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlig…

何恺明的GN之后,权重标准化新方法能超越GN、BN吗? | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | Siyuan Qiao、Huiyu Wang、Chenxi Liu、Wei Shen、Alan Yuille(Johns Hopkins University,约翰霍普金斯大学)译者 | 刘畅编辑 | Jane出品 | AI科…

【AI】CelebA数据介绍、下载及说明
1、简介 CeleA是香港中文大学的开放数据,包含10177个名人的202599张图片 官网:http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html 下载地址(百度网盘,官方的):http://pan.baidu.com/s/1eSNpdRG 【python】…

Zend Framework Mail通过网易免费邮箱发送邮件
2019独角兽企业重金招聘Python工程师标准>>> 做为一个苦逼的个人站长,做一个小网站,本来愿意来看的人就不多,再弄一个不能找回密码的会员系统?基本上被判死刑了 。阿里云的短信也要钱啊,而且只支持PHP 5.5以…

将shp导入SDE中出现“表或视图不存在”问题
其原因是权限不够,下边代码可以用来检查权限是否够。 private void ESRILicense() { IAoInitialize mAoInitialize new AoInitializeClass(); esriLicenseStatus licenseStatus (esriLicenseStatus)mAoInitialize.IsProductCodeAvai…

【python】使用python脚本将CelebA中同一人的图片捡到对应单独的文件夹中
1、目的 CelebA的所有的照片都在一个文件夹中,为了能在dlib训练人脸识别时,方便使用,将CelebA中同一人的图片捡到对应单独的文件夹中。 【AI】CelebA数据介绍、下载及说明 2、方法 首先创建10178个目录,然后解析Anno/identity_…

仅用语音,AI就能“脑补”你的脸! | 技术头条
点击上方↑↑↑蓝字关注我们~「2019 Python开发者日」,购票请扫码咨询 ↑↑↑作者 | Wav2pix 研究团队译者 | 刘畅编辑 | Jane出品 | AI科技大本营(公众号id:rgznai100)【导语】之前我们为大家介绍过一项非常酸爽的研究“Talking…

如何在SAP云平台上使用MongoDB服务
首先按照我这篇文章在SAP云平台上给您的账号分配MongboDB服务:如何在SAP云平台的Cloud Foundry环境下添加新的Service 然后从这个链接下载SAP提供的例子程序。 1. 使用命令行 cf marketplace查看当前SAP云平台的MongoDB的版本号:在我使用的SAP云平台上是…

C#中将dll汇入exe,并加壳
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 1、合并file1.dll、file2.dll到destination.dll ILmerge /ndebug /target:dll /out:C:\destination.dll /log C:\file1.dll C:\file2.dll 2、合并file1.dll、file2.dll以及myApp.exe…