基于 Github 和 Stack Overflow 上的活跃度以及 Google 搜索结果,The Data Incubator 最近制作了一个 23 个热门深度学习库的排名。
下表显示了标准化后的分数,其中值 1 表示高于平均值的一个标准偏差(平均值为 0)。 例如,Caffe 在 Github 中的活动是一个高于平均水准的标准差,而 deeplearning4j 接近平均水平。见末尾的方法。
结果和讨论
该排名基于三个同等重要的部分:Github(star 和 fork),Stack Overflow(标签和问题)和 Google 搜索结果(总和以及季度增长率)。这 3 部分是通过可用的 API 获得的。想弄一个全面的深入学习工具包列表不容易,所以在***选取了我们认为具有代表性的五个不同的列表(有关详细信息,请参阅下面的方法)。计算每种度量的标准化分数,使我们能够看到在每个类别中哪些包是脱颖而出的。完整排名在这里,而原始数据在这里。
TensorFlow 在***活跃社区中占主导
TensorFlow 在所有计算度量上的平均值上至少有两个标准偏差。TensorFlow 和第二大流行框架 Caffe 相比,在 Github 上的 fork 数几乎是后者的三倍,在 Stack Overflow 上的问题总量是后者的六倍以上。TensorFlow 由 Google Brain 团队于 2015 年首度开放,已经超过了众多的高级库,如 Theano(4)和 Torch(8),成为我们榜单的首位。TensorFlow 虽然与在 C++ 引擎上运行的 Python API 一起分发,但表中的几个库可以将 TensorFlow 用作后端,并提供它们自己的接口。这些库包括了 Keras(2),将很快成为 TensorFlow 和 Sonnet 的核心部分(6)。TensorFlow 的流行可能是其通用的深度学习框架,灵活的界面,好看的计算图形可视化和 Google 的重要开发人员和社区资源的合力下的结果。
Caffe 尚未被 Caffe2 所取代
Caffe 在我们的名单上排名第三,除了 TensorFlow 外,Caffe 其在 Github 上的活跃度比其他竞争对手都要多。Caffe 传统上被认为比 Tensorflow 更专业,并且专注于图像处理,目标识别和预先训练的卷积神经网络。Facebook 于 2017 年 4 月发布了 Caffe2(11),并且已经排在了深入学习库的上半部分。Caffe2 是一个更轻巧、模块化和可扩展的 Caffe 版本,包括循环神经网络。Caffe 和 Caffe2 是相互独立的仓库(repo),所以数据科学家可以继续使用最初的 Caffe。然而,有一些迁移工具,比如如 Caffe Translator,它提供了一种使用 Caffe2 来驱动现有 Caffe 模型的方法。
Keras 是深度学习上***的前端库
Keras(2)是排名***的非框架库。Keras 可以用作 TensorFlow(1)、Theano(4)、MXNet(7)、CNTK(9)、deeplearning4j(14)的前端。在所有的三个衡量标准上, Keras 的表现均优于平均水平。Keras 的流行可能是由于其简单性和易用性。Keras 允许快速的原型化,但代价是牺牲了从框架直接运行而产生的一些灵活性和控制。数据科学家在数据集上做深度学习的相关实验时,Keras 受到了他们的青睐。随着 R Studio 最近发布了 Keras 的界面,Keras 的发展和受欢迎程度还在不断延续。
即使没有巨头支持,Theano 仍保持名列前茅
在新的深度学习框架的海洋中,Theano(4)是我们的排名中最古老的库。Theano 开创性地使用了计算图(computational graph),并在研究界普遍做深度学习和机器学习之时仍保持流行。Theano 本质上是一个 Python 的数值计算库,但可以与像 Lasagne 这样的高级深度学习库(15)一起使用。虽然 Google 支持 TensorFlow(1)和 Keras(2),Facebook 支持 PyTorch(5)和 Caffe2(11),MXNet(7)是 Amazon Web Services 的官方深度学习框架,Microsoft 设计并维护了 CNTK(9),Theano 在没受到行业巨头的正式支持下依然流行。
Sonnet 是增长最快的库
2017 年初,Google 的 DeepMind 公开发布了 Sonnet(6)的代码,这是一个以 TensorFlow 为基础的高级面向对象库。Sonnet 的 Google 搜索结果返回页数比上个季度增长了 272%,是我们列表中所有库中***的。尽管 Google 在 2014 年收购了英国人工智能公司DeepMind,但 DeepMind 和 Google Brain 仍然在大体上是独立团队。DeepMind 专注于通用人工智能,Sonnet 可以帮助用户为他们的具体 AI 想法和研究做顶层设计。
Python 是深度学习的接口语言
PyTorch(5)是我们表中增长速度第二的库,该框架的唯一接口是 Python。与上季度相比,PyTorch 的 Google 搜索结果增加了 236%。在我们排的 23 个开源深度学习框架和包装器中,只有三个没有 Python 接口:Dlib(10)、MatConvNet(20)和OpenNN(23)。在 23 个库中,C ++ 和 R 接口分别只有 7 个和 6 个。虽然数据科学界在使用 Python 方面有些接近同一个共识,但对深度学习库而言,还有很多的选择。
限制
当然,有些库由于已经存在了更长的时间会有更高的数据,因此排名更高。唯一考虑到这一点的指标,是 Google 搜索季度增长率。
数据呈现中遇到的一些困难:
- 神经设计和 wolfram 数学是专有的,故被删除
- cntk 也被称为「微软认知工具包」,但是我们只使用了 ctnk 名称
- neon 变成了 nervana neon
- paddle 被改为 paddlepaddle
- 一些库显然是其他库的衍生品,如 Caffe 和 Caffe2。如果它们有单独/独立的 Github 仓库,我们分开处理这些库。
方法
所有源代码和数据都在我们的 Github 页面上。
我们首先从五个不同的来源中生成了 23 个开源深度学习库的列表,然后收集了所有这些库的指标,以获得排名。Github 的数据基于 star 数和 fork 数、Stack Overflow 的数据包含包名称的标签和问题,Google 搜索结果则基于过去五年的 Google 搜索结果总数,并计算结果在过去三个月与前三个月相比的季度增长率。
一些注意事项:
- 有几个库是常用词汇(caffe、chainer、lasagne),因此用于确定 Google 搜索结果数量的搜索词,包括库的名称和术语即“deep learning”。
- 任何不可用的 Stack Overflow 计数都转换为零计数。
- 计数被标准化为均值 0 和偏差 1,然后平均得到 Github 和 Stack Overflow 分数,并结合 Serch 结果,从而得到总分。
- 做了一些手动检查以确认 Github 仓库位置。