PyTorch杠上TensorFlow:誰才是增長最快的深度學(xué)習(xí)框架?
深度學(xué)習(xí)框架的流行趨勢正在快速變化,其中最受矚目的莫過于 TensorFlow 和 PyTorch。前段時(shí)間,TensorFlow 發(fā)布了 2.0(Alpha)版本,不僅推出了許多新功能,也通過引入 Keras 高級 API 和 EagerExecution 模式讓入門門檻進(jìn)一步降低。但是這些改變并沒有減慢 PyTorch 追趕的步伐。在今天這篇文章中,本文作者通過 GitHub、Medium 文章、arXiv 論文和 LinkedIn 等多個(gè)維度評估了這兩款深度學(xué)習(xí)框架的最新發(fā)展趨勢。
2018 年 9 月,我在這篇文章(https://towardsdatascience.com/deep-learning-framework-power-scores-2018-23607ddf297a)中從市場需求、使用和受歡迎程度三方面比較了所有主要的深度學(xué)習(xí)框架。 其中,TensorFlow 是深度學(xué)習(xí)框架中無可爭議的重量級冠軍,PyTorch 則是引發(fā)了熱烈討論的年輕新秀。
在過去六個(gè)月中,這些領(lǐng)先的深度學(xué)習(xí)框架又有什么變化呢?
為了回答這個(gè)問題,我查看了 Indeed、Monster、LinkedIn 和 SimplyHired 上的職位列表數(shù)量。 我還評估了 Google 搜索量、GitHub 活動、 Medium 文章、ArXiv 文章和 Quora 主題關(guān)注者 的變化。 總的來說,這些資料來源描繪了市場需求、使用和興趣增長的全面情況。
集成和更新
我們最近在 TensorFlow 和 PyTorch 框架中看到了幾個(gè)重要的進(jìn)展。
PyTorch v1.0 于 2018 年 10 月發(fā)布,同時(shí) FastAI v1.0 發(fā)布。 這兩個(gè)版本的發(fā)布都是重要的里程碑,標(biāo)志著深度學(xué)習(xí)框架趨于成熟。
TensorFlow 2.0 alpha 于 2019 年 3 月 4 日發(fā)布,它增加了新的功能并改善了用戶體驗(yàn),并且更加緊密地集成了 Keras 作為其高級 API。
方法論
在本文中,我將 Keras 和 FastAI 包含在比較中,因?yàn)樗鼈兣c TensorFlow 和 PyTorch 緊密集成,并且還提供了評估 TensorFlow 和 PyTorch 的尺度。
我不會在本文中探索其他深度學(xué)習(xí)框架。 我希望我能夠收到 Caffe、Theano、MXNET、CNTK、DeepLearning4J 或 Chainer 等值得討論的反饋。 雖然這些框架各有其優(yōu)點(diǎn),但似乎沒有一個(gè)框架顯示出其可以媲美 TensorFlow 或 PyTorch,并且它們也沒有與這兩個(gè)框架緊密結(jié)合。
搜索在 2019 年 3 月 20 日至 21 日進(jìn)行。源數(shù)據(jù)在此 Google 表格 中。
我使用了 plotly 數(shù)據(jù)可視化庫來探索流行度,對于交互式 plotly 圖表,請?jiān)?此處 查看我的 Kaggle Kernel。
讓我們看看每個(gè)類別的結(jié)果。
在線職位列表的變化
為了確定在當(dāng)今的就業(yè)市場中需要哪些深度學(xué)習(xí)庫,我在 Indeed、LinkedIn、Monster 和 SimplyHired 上搜索了工作列表。
我同時(shí)搜索了關(guān)鍵詞”機(jī)器學(xué)習(xí)“和深度學(xué)習(xí)框架名,比如,TensorFlow 通過”機(jī)器學(xué)習(xí) TensorFlow“搜索關(guān)鍵詞進(jìn)行評估。 用此方法是出于與歷史比較的原因。 不加關(guān)鍵詞”機(jī)器學(xué)習(xí)“的搜索沒有產(chǎn)生明顯不同的結(jié)果。 搜索區(qū)域是美國。
我從 2019 年 3 月的職位列表數(shù)量中減去了六個(gè)月前的職位列表數(shù)量,下面就是我發(fā)現(xiàn)的內(nèi)容:

TensorFlow 的職位列表增幅略大于 PyTorch, Keras 也顯示出了職位列表數(shù)的增長 —— 大約是 TensorFlow 的一半,F(xiàn)astAI 仍然沒有出現(xiàn)在任何工作列表中。
請注意,除了 LinkedIn 之外,PyTorch 在其他所有求職網(wǎng)站上都有更多的額外崗位列表。 另外,從絕對數(shù)量上講,TensorFlow 的工作列表數(shù)量幾乎是 PyTorch 或 Keras 的三倍。
Google 搜索活動的平均變化
在大型搜索引擎上進(jìn)行網(wǎng)絡(luò)搜索的行為是衡量人氣的指標(biāo)。 我查看了過去一年 Google 趨勢中的搜索記錄。 我在世界范圍內(nèi)搜索了對機(jī)器學(xué)習(xí)和人工智能類別的興趣。 Google 不提供絕對搜索數(shù)字,但確實(shí)提供了相對數(shù)據(jù)。
我統(tǒng)計(jì)了過去六個(gè)月的平均興趣分?jǐn)?shù),并將其與更早的六個(gè)月的平均興趣分?jǐn)?shù)進(jìn)行了比較。

在過去的六個(gè)月中,TensorFlow 的相對搜索量有所下降,而 PyTorch 的相對搜索量卻在增長。
下面這個(gè)來自谷歌的圖表顯示了過去一年各個(gè)框架的搜索興趣。
(藍(lán)色表示 TensorFlow;黃色表示 Keras;紅色表示 PyTorch;綠色表示 FastAI)
Medium 新文章
Medium 是數(shù)據(jù)科學(xué)文章和教程的熱門聚集地。 我希望你會喜歡它!
在過去的六個(gè)月里,我統(tǒng)計(jì)了在谷歌網(wǎng)站搜索出的 Medium.com 文章數(shù)量,發(fā)現(xiàn)與 TensorFlow 和 Keras 相關(guān)的文章數(shù)量差不多,而 PyTorch 則相對較少。

作為高級 API,Keras 和 FastAI 受到新的深度學(xué)習(xí)從業(yè)者的歡迎, Medium 有許多教程展示了如何使用這些框架。
arXiv 新文章
arXiv 是一個(gè)在線存儲庫,大多數(shù)深度學(xué)習(xí)學(xué)術(shù)文章都發(fā)布在此。 我用 Google 搜索了在過去六個(gè)月里在 arXiv 上提及各個(gè)框架的新文章 。

TensorFlow 的新文章出現(xiàn)率最高。
新的 GitHub 活動
GitHub 上的近期活動是衡量框架流行度的另一個(gè)指標(biāo)。 我在下面的圖表中描繪了 GitHub 點(diǎn)贊 、復(fù)制、關(guān)注和貢獻(xiàn)者的數(shù)量。

TensorFlow 在每個(gè)類別中擁有最多的 GitHub 活動。 然而,PyTorch 在關(guān)注和貢獻(xiàn)者的增長方面非常接近。 此外,F(xiàn)astAI 也增加了許多新的貢獻(xiàn)者。
毫無疑問,Keras 的一些貢獻(xiàn)者對 TensorFlow 庫也進(jìn)行了研究。 值得注意的是,TensorFlow 和 Keras 都是由 Google 員工負(fù)責(zé)的開源產(chǎn)品。
Quora 新粉絲
我新增了 Quora 主題關(guān)注者數(shù)量 —— 一個(gè)我之前沒有統(tǒng)計(jì)數(shù)據(jù)的新類別。

在過去六個(gè)月中,TensorFlow 主題新增的粉絲數(shù)量最多,而 PyTorch 和 Keras 的粉絲增量就少了很多。
獲得所有數(shù)據(jù)后,我將其合并為一個(gè)度量指標(biāo)。
增長分?jǐn)?shù)計(jì)算方法
以下是我計(jì)算增長分?jǐn)?shù)的方法:
- 把所有特征值縮放至 0 到 1 之間。
-
- 聚合在線職位列表和 GitHub 活動子類別。
-
- 對各個(gè)類別根據(jù)以下百分比加權(quán)。

- 為了便于理解,各加權(quán)分?jǐn)?shù)乘以 100。
-
- 將每個(gè)框架的類別分?jǐn)?shù)匯總為單個(gè)增長分?jǐn)?shù)。
其中,工作列表的權(quán)重占總分的三分之一多一點(diǎn),原因也很俗氣,有錢能使鬼推磨。 這種權(quán)重系數(shù)的劃分似乎是在各種類別之間取得了適當(dāng)?shù)钠胶狻?與我在 2018 年對各框架能力系數(shù)的分析不同,這次我沒有包括 KDNuggets 的使用情況調(diào)查(沒有新數(shù)據(jù)),也沒有包括書籍(六個(gè)月內(nèi)發(fā)布的數(shù)量不多)。
結(jié)果
下面的表格中列出了四種主流框架在各個(gè)類目上的變化情況:
下面是各個(gè)類別的分?jǐn)?shù),以及最后匯總的分?jǐn)?shù):
下面是最終的增長分?jǐn)?shù):

TensorFlow 是市場需求最多,也是增長最快的框架,它的領(lǐng)先地位不會在短期內(nèi)被顛覆。 PyTorch 也在迅速發(fā)展,它在工作列表中的大量增加證明了其使用和需求的增加。在過去的六個(gè)月里,Keras 也有了很大的發(fā)展。最后,值得注意的是,F(xiàn)astAI 是從較小的基數(shù)開始發(fā)展的,它是最年輕的深度學(xué)習(xí)框架。
TensorFlow 和 PyTorch 都是很好的值得學(xué)習(xí)的框架。
學(xué)習(xí)建議
如果你想學(xué)習(xí) TensorFlow,我建議你從 Keras 開始。我推薦 Chollet 的 Python 深度學(xué)習(xí) 和 Dan Becker 關(guān)于 Keras 的 DataCamp 課程。 Tensorflow 2.0 通過 tf.keras 使用 Keras 作為其高級 API。這里有 Chollet 對 TensorFlow 2.0 的快速入門介紹。
如果你想學(xué)習(xí) PyTorch,我建議你從 FastAI 的 MOOC 實(shí)踐深度學(xué)習(xí)編碼 (v3) 開始,學(xué)習(xí)深度學(xué)習(xí)基礎(chǔ)知識、FastAI 和 PyTorch 的基礎(chǔ)知識。
TensorFlow 和 PyTorch 的未來發(fā)展方向是什么?
未來發(fā)展方向
我一直聽說,與 TensorFlow 相比,人們更喜歡使用 PyTorch。 PyTorch 更具 pythonic,并且具有更一致的 API,它還具有原生的 ONNX 模型導(dǎo)出,可用于加速推理。此外,PyTorch 與 numpy 共享許多命令,這減少了學(xué)習(xí)它的障礙。
然而,TensorFlow 2.0 完全是為了改進(jìn)用戶體驗(yàn),正如谷歌首席決策情報(bào)工程師 Cassie Kozyrkov 在此解釋的那樣。 TensorFlow 現(xiàn)在將擁有更直接的 API、簡化的 Keras 集成和 eager execution 選項(xiàng)。這些變化以及 TensorFlow 的廣泛采用應(yīng)該有助于該框架在未來幾年保持流行。
TensorFlow 最近宣布了另一個(gè)激動人心的計(jì)劃:Swift for TensorFlow 的開發(fā)。 Swift 是一種最初由 Apple 構(gòu)建的編程語言,在執(zhí)行和開發(fā)速度方面,Swift 比 Python 有許多優(yōu)勢。 FastAI 將在部分高級 MOOC 中使用 Swift for TensorFlow ——請參閱 FastAI 聯(lián)合創(chuàng)始人 Jeremy Howard 關(guān)于此主題的帖子。這種語言可能不會在一年或兩年內(nèi)進(jìn)入黃金時(shí)間,但它可能是對當(dāng)前深度學(xué)習(xí)框架非常有用的改進(jìn)。
語言和框架之間的協(xié)作和交叉授粉肯定正在發(fā)生。
影響深度學(xué)習(xí)框架的另一個(gè)進(jìn)步是量子計(jì)算。一臺可用的量子計(jì)算機(jī)可能還需要幾年的時(shí)間才會出現(xiàn),但谷歌、IBM、微軟和其他公司正在考慮如何將量子計(jì)算與深度學(xué)習(xí)相結(jié)合。各類框架需要適應(yīng)這項(xiàng)新技術(shù)。
總結(jié)
目前來看,TensorFlow 和 PyTorch 都在快速增長, 兩者現(xiàn)在都有很好的高級 API —— tf.keras 和 FastAI——它們降低了深度學(xué)習(xí)入門的門檻。本文還帶你了解了一點(diǎn)最近的發(fā)展和未來方向。
來源 | AI前線
策劃|Natalie
作者|Jeff Hale
譯者|楊旭東
編輯|Debra