深度学习的世界,风云变幻。
五年前,还是Theano称霸的天下,如今完全不一样的了。
所以,一个叫Jeff Hale的数据科学家,想全方位观察一下,每个深度学习框架有多受欢迎,发现了很多有趣的现象。
先总体看一下,各个深度学习框架的武力值 (Power Scores) :
TensorFlow的第一名无可争辩,也是找工作所需技能首选,但依然有些数据出人意料。
比如,走出美国,最常用的框架就成了Keras。
比如,PyTorch的谷歌搜索量逼近Keras。
比如,FastAI框架正在迅速积累开发者。
这些框架都是开源的,除了一位选手之外,大家都支持Python,有些还支持R或其他语言。
TensorFlow是最重量级的选手,谷歌系。GitHub活跃度最高,谷歌搜索量最大,关于它ArXiv论文也最多。
使用TensorFlow的开发者数量也是最多的。
第二受欢迎的是Keras,几乎每一项指标都是第二名。根据官方标语,它是“为人类设计,不是为机器设计的API”。
Keras是在TensorFlow、Theano或者NLTK上运行的。容易上手,新人之选。
第三名是PyTorch,Facebook系,也是独立框架的第二名 (Keras不独立) 。它比TensorFlow出生要晚,但热度增长很快。
PyTorch支持自定义 (Customization) ,这一点TensorFlow是不行的。
第四名。Theano是蒙特利尔大学2007年开发出来的,也是最早强大起来的Python深度学习框架。
可是自从Joshua Bengio宣布停止更新不再维护,它就失去了许多拥趸。
MXNET排第五,来自Apache。不过,它的分数和Theano已经很接近了,随时可能取代第四名。不过,去年报告显示,MXNET用量有所下降。搜索量也不是很高。
第六名CNTK,是微软发布的认知工具包。微软为了和谷歌、Facebook竞争,推出了许多这样的产品,但用户并暂时不是很多。
Deeplearning4J第七。榜单中唯一不支持Python的框架,用的是Java。
即便如此,用户还是可以把用Keras写的模型导入DL4J。
这位选手,是中途加入比赛的,最初的榜单里并没有它。Jeff选择补上它,所以为它多累计了4天数据。
DL4J特殊的地方在于,用全称和简称分别统计的数据,差异比较大。做法是统一选取较高的数据。但总体分数不高,所以对结果影响不大。
第八是FastAI,基于PyTorch搭建的新框架。API受到了Keras的启发,要用更少的代码得到更好的结果。
它出生没多久,10月就要发布1.0版本了。FastAI接下来的课程,基本都会基于这个框架了。由于免费课程用户量很大,Jeff看好框架今后的增长。
FastAI背后的大佬是Jeremy Howard,Kaggle前总裁,也曾经是冠军Kaggler。
以上就是全部参赛选手,Caffe没在里面,因为进化成了Caffe 2,Caffe 2又并进PyTorch了。
和机器学习有关的工作岗位,要求用什么框架?这个问题的答案里,TensorFlow的出镜率最高。
这里使用机器学习+框架名 (如machine learning TensorFlow) 来统计的,Jeff发现这样效果最好。
所以,找工作还是学TensorFlow吧。
这里用了KDnuggets 2018年做的问卷调查,是向全球的数据科学家提问:
过去12个月,你用过什么分析、大数据、数据科学以及机器学习软件,来做项目?
答案如下。
有些意外的是,Keras的占比超过20%,非常逼近TensorFlow了。
以及,TensorFlow在美国有压倒性优势,但在世界上的其他地方,Keras是最常用的。
观察一个框架有多受欢迎,看搜索量也是个好方法。
这里用的是过去一年的Google Trends。谷歌不提供绝对数据,只有相对数据。
百分制,TensorFlow拿到78分,排名第二的Keras只有38分。这是今年9月15日的数据。
不过,第三名PyTorch和第二名Keras相差无几。
其他选手的搜索量,和前三名相比,几乎可以忽略不计。
再看一下搜索值,在两年时间内的变化:
前三名在16、17年都发生了迅速的增长,但近几个月来都没有很凶猛的涨势。
另外,季节性变化也是有的,寒暑假搜索量会下降。
文章在哪?Medium、Amazon Books、ArXiv……
· Medium
这是发表技术类文章的好去处,也是打破排名规律的地方。
Keras超过了TensorFlow,接近5万篇。
排名第三的PyTorch,已经不到1万篇。
FastAI第四,和第三名分数接近,且远远超过了后面的其他对手。
可能因为Keras和FastAI都是初学者友好的产品,才有了这样的结果。
· 亚马逊图书
虽然TensorFlow又赢回来了,但还是有惊喜。
MXNET排到第三名,超过了PyTorch。
大概是因为PyTorch还年轻,而这项指标是越老越吃香的。
· ArXiv
在论文在线存储之地,搜索每个框架。
TensorFlow领先不意外,但也领先太多了,是第二名PyTorch的5倍左右。
第二名到第六名相去不远。
需要对比一下,在Medium学术型的文章里,Keras排名第一,而在ArXiv上面表现并不突出。
这里,标星 (Star) 、分叉 (Fork) 、关注量 (Watch) 和贡献者 (Contributor) ,是分开统计的。
TensorFlow依然优势明显,尤其是前三项。
但在贡献者数量上,选手们的差距并没有那么大。尤其是刚刚出生的FastAI,已经积累了不少用户。
按照饼图中的权重分配,把所有的比赛结果,融为一体。
招聘需求和KDnuggets问卷这两项加起来,就占了一半比重。
而谷歌搜索量、发表文章以及GitHub活动一共占一半。
原始数据长这样,观赏的时候,可以锻炼一下脖子:
整合之后,就是文章开头看到的样子。
PyTorch有朝一日能不能超越TensorFlow?
FastAI的一大批学生,会不会喜欢他们的新框架?
只有时间才知道。
不过,不妨碍各位先选个框架开始学:
Keras适合新手,TensorFlow适合掌握需求,PyTorch灵活性更好。
FastAI 1.0或许可以期待一下?毕竟团队承诺让用户轻松用上最新的深度学习策略 (Strategies) ,并迅速迭代。
加了个油。
— 完 —
加入社群
量子位AI社群28群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;
此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。
进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
华为Ensp配置pppoe+NAT
@EnableAsync
河北省国家电网计算机类题目库一、单项选择题习题一计算机基础知识1、世界上首次提出存储程序计算机体系结构的是 。冯·诺依曼A、 查尔斯· 巴贝奇 B、 阿伦· 图灵 C、 乔治· 布 尔D、冯·诺依曼2、世界上第一台电子计算机诞生于 1946 年 。A 、1941 年 B 、1946 年 C、1949 年 D、1950 年3、世界上第一台电子数字计算机采用的主要逻辑部件是 电子管。 电子管A、 电子...
1. 描述有一个数组numsnums,以及三个正整数k,u,lk,u,l。对于numsnums的所有长为kk的子段,如果它的总和小于uu,就得11分,如果它的总和大于ll,就扣11分。请求出最终能获得多少分?2. 样例样例输入:nums = [0, 1, 2, 3, 4]k = 2u = 2l = 5样例输出:03. 代码本题如果使用两层循环,会在测试用例中报超时无法通过。考虑使用两个循环,但仅用一层循环完成。class Solution: """
Maven安装1. 到Maven官网(http://maven.apache.org)下载软件注意:Maven软件依赖于Java,请先安装与配置好jdk2. 直接解压apache-maven-3.6.0-bin.zip即可Maven目录结构3. 把Maven的bin目录配置到环境变量中新建系统变量变量名:M2_HOME变量值:C:\develop\Maven\apache-...
WEB 开发异常:java.lang.ClassNotFoundException
搭建并使用Redis集群搭建集群的第一件事情我们需要一些运行在 集群模式的Redis实例. 这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了.进入一个新目录/usr/local/cluster, 并创建六个以端口号为名字的子目录,在每个目录中运行一个 Redis 实例cd /usr/local/...
//基于layui//_userData为可选的总人数,关闭窗口时,在回调函数中参数返回已选择的人员。//入口---调用con_selectUserControl(_userData, function (_selectedUser) { //todo});//选人控件var con_allSelectUser = [];var ...
@Async标签一、使用Async标签的使用条件:一般应该使用在类的方法上,如果使用在类上,那么整个类中的方法都是异步的。 调用@Async方法的方法所在的类应该是spring容器管理的bean 应该配合@EnableAsync标签同时使用(下面会说如何使用@EnableAsync标签) 使用Async注解的方法,返回值必须为Void或Futur二、使用注意事项当被标注的方法没有确定返回类型时,@Async会失去作用 当被标注的方法与调用方法在同一个类中的时候,@Async会失去作用
点击蓝字关注我们现阶段,毕业生们听到就想结束的对话莫过于是:“毕业论文写完了吗?”“重复率查了吗?”“什么时候答辩?”“答辩PPT做完了吗”……从2019年起,某翟让教育界掀起的一股整治学术不端的热潮后,毕业论文查重,毕业论文降重,毕业答辩这一套毕业过程,也成为大学生,研究生们毕业不可逾越的鬼门关。我猜每年的四五月,毕业季的时候,都会有一批又一批的后浪们,去慰问他老人家吧,小编也恨啊,真...
使用pandas的rolling.mean函数自定义移动平均线
OLDDATA(lv_str1) = 'Hello'.DATA(lv_str2) = 'World'.DATA: lv_str TYPE string.CONCATENATE 'MY First String' lv_str1 INTO lv_str2 SEPARATED BY space.CONCATENATE lv_str lv_str2 INTO lv_str SEPARAT...