2018年最热门的深度学习框架?这份科学的排行榜可以告诉你

开发 开发工具 深度学习
在本文中,为了评估 2018 到底哪些框架比较流行,作者从领英职位需求、谷歌搜索热度、Medium 文章数、arXiv 论文数和 GitHub 活跃度等方面审视不同的框架。

深度学习仍然是机器学习领域最热门的技术。深度学习框架变化迅速,仅仅五年前 Theano 还一枝独秀,而最近出现了各种各样的框架,它们都有不同的特性。在本文中,为了评估 2018 到底哪些框架比较流行,作者从领英职位需求、谷歌搜索热度、Medium 文章数、arXiv 论文数和 GitHub 活跃度等方面审视不同的框架。

我想寻找值得关注的框架,于是就开发了这个排行榜。Python 语言是深度学习使用的热门语言,因此我主要关注能兼容 Python 的框架。我使用了来自 7 个不同类别的 11 个数据源,并用来评估框架使用、用户兴趣和流行度。

数据地址:

https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

2018.09 by Jeff Hale

显然,TensorFlow 是绝对赢家,还有一些令人惊讶的发现。我们一起来看一下~

角逐者

我们考虑的这些框架都已经开源,它们主要都使用 Python,一些可以兼容 R 或其他语言。

TensorFlow

TensorFlow 是绝对冠军。在 GitHub 活跃度、谷歌搜索、Medium 文章数、亚马逊书籍和 arXiv 论文这些数据源上,它所占的比重都是最大的。它还拥有最多的开发者用户,以及出现在最多的在线职位描述中。

Keras

Keras 具备「一个为人类而非机器设计的 API」。它在几乎所有评估中都是第二流行的框架。Keras 的后端可以基于 TensorFlow、Theano 或 NLTK。如果你是刚入门深度学习的新手,使用 Keras 是不错的选择。

PyTorch

PyTorch 是第三流行的框架,也是第二流行的独立框架。它比 TensorFlow 出现时间晚,但发展迅速。PyTorch 允许定制化,而 TensorFlow 不能。PyTorch 是由 Facebook 支持开发的。

Theano

Theano 由蒙特利尔大学于 2007 年开发,是最老的 Python 深度学习框架。现在它的流行度下降了很多,其开发者和维护者宣布将停止更新维护 Theano。不过,Theano 仍然频繁出现在职位描述中。

MXNet

MXNet 由 Apache 孵化。它和 Theano 的得分很接近,目前处于第四流行的深度学习库。它拥有大量贡献者、搜索结果、相关书籍和学术文章。但是它的使用率比去年有所下降,搜索它的用户也不是很多。

CNTK

CNTK 是微软推出的认知工具包。它的推出旨在与谷歌、Facebook 竞争,但并没有获得特别多的使用。

FastAI 基于 PyTorch 构建。其 api 受到 Keras 的启发,所需代码甚至还更少。FastAI 正为今年 10 月的 1.0 版本发布而经历重写,FastAI 背后的男人 Jeremy Howard 曾经是 Kaggle 比赛冠军以及 Kaggle 主席。

你可能会问为什么 FastAI 会在这个名单上,职业开发者对它没什么需求,它的使用也不广泛。但是,它通过免费在线课程平台 fast.ai 获得了大批用户。同时,FastAI 也很强大易用,它的使用率可能会很快增长。

Caffe 不在本名单中,因为它之前更新到 Caffe2,2018 年 3 月 Caffe2 被融合进 PyTorch。

评估准则

为了全面地评估深度学习框架的流行程度,我选择以下类别和角度为它们进行评分:

  • 在线职位描述
  • KDnuggets 使用调查
  • 谷歌搜索热度
  • Medium 文章数量
  • Amazon 书籍数量
  • arXiv 论文数
  • GitHub 活跃度

支持本次评分的数据都在今年 9 月 16 号收集完,原数据地址为:

https://docs.google.com/spreadsheets/d/1mYfHMZfuXGpZ0ggBVDot3SJMU-VsCsEGceEL8xd1QBo/edit?usp=sharing

我使用了 plotly 数据可视化库和 Python 的 Pandas 库来探索并展示各框架的流行度,对于交互性的 plotly 图表,请看 Kaggle Kernel:

https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

在线职位描述

深度学习框架在目前的职场中有着什么样的需求?我搜索了领英的职位描述,具体而言为 Simply Hired、Monste 和 Angel List。

TensorFlow 在职位描述中明显要比其它框架出现得更多,所以如果你希望从事深度学习,最好还是学习这个框架。

我搜索职位描述的方法是采用「machine learning」+「框架名」,所以 TensorFlow 就是采用「machine learning TensorFlow」来搜索的。我其实还采用了其它搜索方法,但还是这种搜索方法给出的结果更好。此外,额外的关键词对于区分不同框架而言是非常有必要的,因为我最初还尝试在这个分析中加入 Caffe 库。

使用情况

KDnuggets 是一个流行的数据科学网站,他们调查了世界各地数据科学家的软件库使用情况,他们会向用户问道:

在过去的 12 个月中,你在实际项目上会使用哪些分析、大数据、数据科学和机器学习工具?

以下展示了大家对框架的偏好程度:

大家对框架的偏好程度

Keras 在使用总量上非常惊人,它几乎和 TensorFlow 一样。所以说美国老板对员工的 TensorFlow 技能有压倒性的需求,而在国际上 Keras 使用的频率同样也非常高。

仅有这一个类别是包含国际数据的,因为其他类别加入国际数据可能会非常麻烦。KDnuggets 做这一份报告已经好几年了,我在这个分析中只用了今年的数据,但我们需要注意 Theano、MXNET 和 CNTK 相比于去年在使用上有所滑落。

谷歌搜索热度

在最大的搜索引擎上度量各框架的搜索热度,这也是一个非常好的流行度衡量方法。我们在 Google Trends 中搜索过去几年的搜索热度历史,虽然它并不提供具体的搜索数值,但还是能提供相对图表。

谷歌搜索热度

截至 2018 年 9 月 15 日,TensorFlow 平稳占据 78% 的搜索比重。PyTorch 接近 Keras,而其它框架的搜索量在 3 左右或低于 3。

下面我们来简要看一下搜索量随着时间的变化,以了解更多历史背景。下面的表格展示了近两年的谷歌搜索情况。

TensorFlow 蓝色、Keras 红色、PyTorch 黄色、Theano 绿色。

TensorFlow、Keras 和 PyTorch 的搜索量在 2016 年末和 2017 年增长迅速。有趣的是,它们在最近几个月增长缓慢。我们可以从中看到某种季节性,暑假下降寒假上升。

谷歌搜索趋势只允许同时对比五项,因此其它库在另外一个表上进行对比。所有这些结果都是在美国区域的搜索结果。尽管搜索关键词 Theano 和 Keras 还有其它意思,但那些意思主要是在美国以外使用。

Medium 文章数

我计算了多个出版物类型,出现较早的框架在出版方面比较有优势,未来排行榜将关注出版物数量的变化。下面来看 Medium 文章。

这次出现了新的冠军。从 Medium 文章提及量来看,Keras 超越 TensorFlow,但也算势均力敌。FastAI 的表现也超出以往。我猜测出现上述结果的原因是 Keras 和 FastAI 对新手比较友好。深度学习新人对它们有很大兴趣,而 Medium 是一个教程论坛。

下面我们来看哪些框架在亚马逊上的实体书比较多。

亚马逊书籍

我在亚马逊 Books->Computer Science 分类下搜索了每个深度学习框架,结果如下:

TensorFlow 又一次夺得冠军。MXNET 相关书籍的数量超出预期,且多于 Theano。PyTorch 的书相对较少,但这有可能是因为该框架还比较年轻。该评估标准对年头久的库较为有利,因为出版书籍需要时间。

或许 Theano 在学术论文方面会比较好吧。

arXiv 论文

arXiv 是在线数据库,大部分机器学习学术论文都会发表在 arXiv 上。我在该网站上搜索了每个框架,结果如下:

同样,TensorFlow 的学术论文较多。最大的意外是其它框架的学术论文总数不敌 TensorFlow。注意 Keras 在 Medium 和亚马逊上的流行度比学术论文要高得多。PyTorch 在这块表现也不好,应该还是因为出现时间较短的缘故。

GitHub 活跃度

GitHub 活跃度是框架流行度的另一个指标。我分别调查了 star、fork、watcher 和贡献者数量,因为它们单独的意义要比整体的组合的意义更大。

很明显,TensorFlow 是 GitHub 上最流行的框架,拥有大量活跃用户。FastAI 还不错,毕竟才诞生一年。有趣的是各个框架的贡献者数量要比其它三个指标接近得多。

收集和分析这些数据之后,是时候总结一下了。

计算排行榜分数步骤

我用以下步骤创建排行榜得分:

  1. 将所有特征缩放到区间 [0,1] 之间。
  2. 聚合职位描述和 GitHub 活跃度这两个子类别。
  3. 根据下图中的权重对类别进行加权。
  4. 如上图所示,在线职位描述和 KDnuggets 使用调查组成了分数的一半,而网页搜索、出版物和 GitHub 关注度组成了另一半。这种分割应该是对不同类别最合适的平衡。

  5. 为了方便理解,将加权后的得分乘 100。
  6. 将每个框架的各类别得分相加,整合成最终的排行榜得分。

Google Sheet 地址:

https://docs.google.com/spreadsheets/d/1mYfHMZfuXGpZ0ggBVDot3SJMU-VsCsEGceEL8xd1QBo/edit#gid=0

下图是对子类别进行加权相加之后的得分。

Jupyter Notebook 地址:

https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

下图再次展示了最终的排行榜得分。

2018.09 by Jeff Hale

100 是最高分,在每一类中代表第一名。TensorFlow 得分接近 100,这也不足为奇,因为这一框架几乎包揽了所有类别的第一名。点击以下链接获取图中未显示信息:

https://www.kaggle.com/discdiver/deep-learning-framework-power-scores-2018

展望未来

TensorFlow 现在独占鳌头,这种局势短期内似乎不会改变。然而,考虑到深度学习世界中事物的发展速度,TensorFlow 被赶超也不是不可能。

时间会证明 PyTorch 是否会超越 TensorFlow,就像 React 超越 Angular 一样。PyTorch 和 React 都是 Facebook 支持的灵活框架,用户通常认为这两个框架比谷歌的同类框架易用。

FastAI 能吸引课程之外的用户吗?它有大量的学生,使用 API 比 Keras 更容易。

给学习者的建议

如果你正考虑学习其中一种框架且具备 Python、numpy、pandas、sklearn 和 matplotlib 的技能,我建议你从 Keras 入手。该框架用户基础很大,在求职时非常有用,Medium 上有很多相关文章,API 也很易用。

如果你已经学过 Keras,那么选择下一个要学习的框架可能有点困难。我建议你去学 TensorFlow 或 PyTorch,而且要好好学,这样才能做出良好的深度学习模型。

TensorFlow 显然是为迎合需求而学习的框架,但 PyTorch 的易用性和灵活性使得它使用起来更加友好。

一旦掌握了这些框架,我建议你留意 FastAI。如果想同时学习基础和高级深度学习技能,请查看 FastAI 的免费在线课程,FastAI 1.0 承诺帮助用户轻松实施最新的深度学习策略并快速迭代。

无论你选择了哪个框架,我希望你现在深入了解一下哪个框架需求量最大、使用最频繁、最受关注。

原文链接:

https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a

【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2016-12-06 18:07:49

编程语言排行榜

2019-08-02 09:26:24

深度学习框架排行榜

2020-01-03 07:40:19

开源JavaGitHub

2013-08-23 09:41:19

2018-01-17 18:06:56

数据科学机器学习排名

2018-02-08 09:19:34

linux

2022-06-17 12:10:07

RPA机器人流程自动化

2018-08-27 15:53:43

编程语言javaPython

2019-02-14 11:46:46

Python 开发编程语言

2020-04-12 22:18:40

前端开发Realworld

2017-02-10 08:55:42

2018-07-10 08:40:36

JavaScript机器学习框架

2013-04-01 09:50:15

Web框架Web

2023-03-15 08:03:31

2019-06-28 15:43:50

编程语言程序员Java

2023-07-11 07:05:15

老人机天语手机屏幕

2018-03-07 10:41:16

GitHub开源项目谷歌

2010-06-07 15:57:02

编程语言排行榜框架

2021-09-23 10:50:42

编程语言Python排行

2021-07-07 05:42:24

编程语言开发
点赞
收藏

51CTO技术栈公众号