参与杜伟 李泽南

2019年,TensorFlow被拉下马了吗?

AI领域里技术的发展总是很快,深度学习框架这样的工具流行的趋势也时刻处于变化之中。最近一段时间里,TensorFlow放出了2.0版(Alpha),推出了诸多新功能,也让入门的门槛有所降低。不过这些改变并没有减慢PyTorch追赶的步伐。

本文中,作者通过GitHub、Medium文章、arXiv论文和领英等维度评估了不同神经网络框架的最新发展趋势。

2018年9月,作者曾就需求、使用和受欢迎程度三方面比较了所有主要的深度学习框架,其中TensorFlow是无可争议的重量级冠军,PyTorch是赢得大量口碑的后起之秀。

过去的六个月,领先的深度学习框架又有什么变化呢?

为回答这一问题,作者不仅查看了Indeed、Monster、LinkedIn和SimplyHired上的职位列表数量,而且评估了谷歌搜索量、GitHub动态、Medium和ArXiv文章以及Quora主题关注者的变化。总的说来,这些资源全面描述了需求、使用和兴趣三方面的增长。

集成和更新

从工具本身来说,近来TensorFlow和PyTorch框架都出现了几项重大发展。

2018年10月,PyTorch v1.0预发布,同时fastai v1.0发布。二者的发布是标志框架成熟的重大里程碑。

2019年3月4日,TensorFlow 2.0 alpha版发布,增加了一些新功能,改善了用户体验。TensorFlow 2.0 alpha版更紧密地集成了Keras,作为其高阶API。

方法论

Keras和fastai与TensorFlow和PyTorch紧密集成在一起,因而本文在比较时将二者包含在内。Keras和fastai还为评估TensorFlow和PyTorch提供了可以参考的评估范围。

作者在本文中不会探究其他深度学习框架。作者希望收到反馈,证明Caffe、Theano、MXNet、CNTK、PaddlePaddle、DeepLearning4J或Chainer值得讨论。虽然这些深度学习框架各有其优点,但就其增长轨迹而言,似乎不太可能接近TensorFlow或PyTorch。这些框架也未能与TensorFlow或PyTorch紧密耦合。

搜索日期为2019年3月20日-21日。源数据在谷歌表格中。

让我们看一下各类深度学习框架的结果吧!

在线职位列表变化

为了确认哪种深度学习库在当今求职市场中受欢迎,作者搜索了Indeed、LinkedIn、Monster和SimplyHired中的职位列表。

作者首先搜索术语「机器学习」,其后为框架/库名。所以,作者以「机器学习 TensorFlow」评估TensorFlow。基于历史比较的原因,作者采用了这种评估方法。不包含「机器学习」的搜索没有产生明显不同的结果。搜索区域是美国。

作者从2019年3月的职位列表数量中减去六个月前的数量,结果如下:

TensorFlow的职位列表增长略高于PyTorch。Keras的职位列表也出现了增长——约是TensorFlow增长的一半。FastAI依然没有出现在任何职位列表中。

需要注意的是,除了LinkedIn,PyTorch在所有求职网站上的增加职位列表数量都超过了TensorFlow。还需要注意的是,就绝对项而言,TensorFlow出现在职位列表中的数量几乎是PyTorch或Keras三倍。

平均谷歌搜索活动的变化

最大搜索引擎中的网页搜索是衡量受欢迎程度的一个标准。作者查看了过去一年里Google Trends的搜索历史。作者还搜索了全世界对「机器学习」和「人工智能」分类的兴趣。谷歌没有给出绝对搜索数量,但提供了相对数据。

作者将过去六个月与在之前六个月的搜索兴趣平均分进行比较。

在过去六个月,TensorFlow的相对搜索数量减少,而PyTorch的相对搜索数量增加。

下图来自谷歌,直接显示了过去一年的搜索兴趣。

TensorFlow显示为蓝色,Keras黄色,PyTorch红色,fastAI绿色。

新Medium文章

Medium是数据科学文章和教程的流行阵地。作者希望读者可以喜欢!😃

过去六个月里,作者使用Medium.com的谷歌站点搜索,结果发现TensorFlow和Keras发表的文章数量相当,而PyTorch相对较少。

作为高阶API,Keras和fastAI非常受深度学习新从业人员的欢迎。Medium中有很多教程介绍了这些框架的使用方式。

最新arXiv文章

作为最流行的预印版论文发布平台,大多数学术类深度学习文章在arXiv上发表。作者根据过去六个月的谷歌站点搜索结果来搜索提及每种框架的最新文章。

TensorFlow有接近3000篇文章,在这方面占有很大优势,大多数最新AI论文使用的是TensorFlow框架(说好的学界爱用PyTorch呢?)。

最新GitHub动态

GitHub上的最新动态是框架受欢迎程度的另一指标。作者在下图列出了star、fork、watcher和contributor的数量。

在每种类别中,TensorFlow上的GitHub动态最多。但是,PyTorch在watcher和contributor的增长方面与TensorFlow相当接近。此外,Fastai上也有大量的新增contributor。

毫无疑问,Keras的一些贡献者会在TensorFlow库中工作。值得注意的是,TensorFlow和Keras都是由谷歌人牵头的开源产品。

Quora新关注者

作者将新的Quora主题关注者添加进参考标准中——这是一个以前没有数据的新分类。

过去六月里,TensorFlow增加了最多的新话题关注者。PyTorch和Keras相差甚多。

作者在添加所有数据后将其合并成一个指标。

增长分数过程

作者创建了增长分数:

1. 所有特征的数值范围为0-1。

2. 汇总了「线上职位列表」和「GitHub动态」子分类。

3.基于下列百分比的加权分类。

4.可理解性乘以加权分数100。

5.将每个框架的类别分数汇总为单个增长分数。

工作列表占总分数的三分之一多,这是比例最高的一部分:钱说了算。这种多权重方法平衡了不同类别。相比2018年的统计,这次统计未包含KDNuggets的使用调查(因为还未出现新数据),以及书籍的出版(过去六个月相应新书数量不多)。

结果

这里是表格形式的变化。

相应的Google表格: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,将Keras作为其高阶API。Chollet有一篇TensorFlow 2.0的快速入门。

如果你想要学习PyTorch,我们建议你从fast.ai的MOOC课程《Practical Deep Learning for Coders v3》入手。在这里你将学习到深度学习基础、fastai和PyTorch的基础。

TensorFlow和PyTorch的未来方向会是什么?

未来的方向

我们一直能够听到“PyTorch比TensorFlow更好用”的说法。的确,PyTorch更加Python一些,也有更为统一的API,它拥有原生的ONNX模型导出机制,可用于加速推理。而且,PyTorch和Numpy有着很多共同之处,这让人们的学习成本降低不少。

但是,TensorFlow 在2.0版中大力改进了用户体验,正如谷歌首席智能决策工程师Cassie Kozyrkov所说的。TensorFlow现在已拥有更加直接的API、完全集成的Keras和Eager Execution选项了。这些变化,以及TensorFlow的用户基础可以让这个框架在未来继续流行下去。

TensorFlow最近宣布了另一个激动人心的计划:Swift版TensorFlow的开发。Swift是一种原先由苹果推动的编程语言。在执行和开发速度方面,Swift比Python有很多优势。Fast.ai将在MOOC进阶课程中使用Swift for TensorFlow。这种语言可能不会在未来一两年内迎来黄金时间,但这种发展对于目前的深度学习框架非常有益。

语言和框架之间的融合正在发生。

另一个即将影响深度学习框架的是量子计算。实用型量子计算机有机会在几年后出现,而谷歌、IBM微软和其他公司正在探索量子计算深度学习的融合。框架需要适应这些新技术。

结语

在统计之后,我们可以看到TensorFlow和PyTorch都是增长强劲的神经网络框架。它们都有高阶API——tf.keras和fastai——它们降低了进入深度学习的门槛。除此之外,我们还看到了未来的一些发展方向。

若希望获取文章中的数据,以及Jupyter Notebook,请移步Kaggle Kernel:https://www.kaggle.com/discdiver/2019-deep-learning-framework-growth-scores 


原文链接:
https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318

产业KerasPyTorchTensorFlow
51
相关数据
微软机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
IBM机构

是美国一家跨国科技公司及咨询公司,总部位于纽约州阿蒙克市。IBM主要客户是政府和企业。IBM生产并销售计算机硬件及软件,并且为系统架构和网络托管提供咨询服务。截止2013年,IBM已在全球拥有12个研究实验室和大量的软件开发基地。IBM虽然是一家商业公司,但在材料、化学、物理等科学领域却也有很高的成就,利用这些学术研究为基础,发明很多产品。比较有名的IBM发明的产品包括硬盘、自动柜员机、通用产品代码、SQL、关系数据库管理系统、DRAM及沃森。

https://www.ibm.com/us-en/
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

网页搜索技术

Web搜索引擎是一种软件系统,旨在搜索万维网上的信息。 搜索结果通常以一系列结果呈现,通常称为搜索引擎结果页面(SERP)。 该信息可以是网页、图像和其他类型的文件的混合。一些搜索引擎还挖掘数据库或打开目录中可用的数据。 与仅由人工编辑器维护的网络目录不同,搜索引擎还通过在网络爬虫上运行算法来维护实时信息。 不能被网络搜索引擎搜索的因特网内容通常被描述为深度网络(deep web)。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

MXNet技术

MXNet是开源的,用来训练部署深层神经网络的深度学习框架。它是可扩展的,允许快速模型训练,并灵活支持多种语言(C ++,Python,Julia,Matlab,JavaScript, Go,R,Scala,Perl,Wolfram语言)

量子计算技术

量子计算结合了过去半个世纪以来两个最大的技术变革:信息技术和量子力学。如果我们使用量子力学的规则替换二进制逻辑来计算,某些难以攻克的计算任务将得到解决。追求通用量子计算机的一个重要目标是确定当前经典计算机无法承载的最小复杂度的计算任务。该交叉点被称为「量子霸权」边界,是在通向更强大和有用的计算技术的关键一步。

推荐文章
Tensorflow已死, Pytorch当立