編者按:Jeff Hale根據(jù)網(wǎng)上招聘、調(diào)研報(bào)告、網(wǎng)絡(luò)搜索、論文、教程、GitHub等數(shù)據(jù),評(píng)估了11種深度學(xué)習(xí)框架的影響力。
現(xiàn)在數(shù)據(jù)科學(xué)領(lǐng)域最熱門(mén)的方向仍舊是深度學(xué)習(xí)。相應(yīng)地,深度學(xué)習(xí)框架也處于飛速變革之中。現(xiàn)在最流行的框架,除Theano外,5年前都不存在。
我想搜集一些哪個(gè)框架更值得關(guān)注的證據(jù),所以我搞了這個(gè)影響力評(píng)分。我使用了7個(gè)不同類(lèi)別的11個(gè)數(shù)據(jù)源,以評(píng)估框架的使用量、興趣、流行度。接著我對(duì)這些數(shù)據(jù)進(jìn)行加權(quán)組合,得到了本文的結(jié)果。具體的代碼可以在Kaggle Kernel上看到:discdiver/deep-learning-framework-power-scores-2018 2018年9月20日更新:應(yīng)眾多讀者要求,我擴(kuò)大了框架的評(píng)估范圍,加入了Caffe、Deeplearning4J、Caffe2、Chainer?,F(xiàn)在的評(píng)測(cè)包括了KDNuggets使用調(diào)研中所有報(bào)告使用率在1%以上的框架。
2018年9月21日更新:我改進(jìn)了一些測(cè)度的方法。
不多啰嗦了,下面是深度學(xué)習(xí)框架的影響力評(píng)分:
毫無(wú)疑問(wèn),TensorFlow位居第一。不過(guò)我有一些意料之外的發(fā)現(xiàn),詳情見(jiàn)下。
框架
評(píng)測(cè)的所有框架都是開(kāi)源的,除了其中一個(gè)框架外都提供了Python接口,有些框架提供了R或其他語(yǔ)言的接口。
TensorFlow是毫無(wú)爭(zhēng)議的贏家。GitHub上最熱,谷歌搜索最多,Medium文章、亞馬遜書(shū)籍、ArXiv論文最多。使用TensorFlow的開(kāi)發(fā)者最多,大多數(shù)網(wǎng)上招聘的工作描述中也提到了它。TensorFlow背后站著Google。
Keras擁有“為人類(lèi)而不是機(jī)器設(shè)計(jì)的API”。幾乎各項(xiàng)評(píng)估中,它都是第二流行的框架。Keras以TensorFlow、Theano或CNTK為底層引擎。如果你是深度學(xué)習(xí)的新手,建議從Keras開(kāi)始。
總體而言,PyTorch是第三流行的框架,也是第二流行的獨(dú)立框架。它比TensorFlow要年輕,流行度的增速十分迅猛。它也支持TensorFlow尚不支持的一些定制。PyTorch背后站著的是Facebook。
Caffe是第四流行的框架。它差不多快5歲了。相對(duì)而言,某些雇主還要求熟悉Caffe,一些學(xué)術(shù)論文也還用Caffe,但最近使用Caffe的人不多。
Theano是蒙特利爾大學(xué)2007年研發(fā)的,也是最古老的有顯著影響力的Python深度學(xué)習(xí)框架。它的流行度降了一大截,主要開(kāi)發(fā)者也宣布不會(huì)再發(fā)布加入新功能的大版本了。不過(guò),目前仍有一些更新。Theano仍然是排名第五的框架。
亞馬遜使用Apache孵化的MXNET。它是第六流行的深度學(xué)習(xí)庫(kù)。
CNTK是微軟的認(rèn)知工具集。它讓我想起了微軟其他很多產(chǎn)品,試圖和谷歌、Facebook提供的工具競(jìng)爭(zhēng),但沒(méi)贏得多少使用。
Deeplearning4J,也稱(chēng)為DL4J,配套Java語(yǔ)言使用。它是唯一不提供Python接口的準(zhǔn)流行框架。不過(guò),你可以導(dǎo)入用Keras寫(xiě)的模型。這也是唯一一個(gè)兩個(gè)不同的搜索項(xiàng)(Deeplearning4J和DL4J)偶爾返回不同結(jié)果的框架。我在每項(xiàng)測(cè)度中使用了較高的數(shù)字。由于這個(gè)框架的評(píng)分相當(dāng)?shù)停虼诉@并沒(méi)有帶來(lái)什么實(shí)質(zhì)性的改變。
Caffe2是另一個(gè)Facebook開(kāi)源產(chǎn)品。它基于Caffe構(gòu)建,現(xiàn)在是PyTorch項(xiàng)目的一部分(同一GitHub倉(cāng)庫(kù))。由于現(xiàn)在Caffe2沒(méi)有自己的代碼倉(cāng)庫(kù),我使用了舊倉(cāng)庫(kù)的GitHub數(shù)據(jù)。
Chainer是由日本公司Preferred Networks開(kāi)發(fā)的框架。它有一小批使用者。
FastAI基于PyTorch構(gòu)建。它的API借鑒了Keras,只需很少的代碼(比Keras還要少)就可以得到強(qiáng)力的結(jié)果。目前而言,F(xiàn)astAI屬于前沿框架,目前正處于為預(yù)計(jì)2018年10月發(fā)布的1.0版本重寫(xiě)代碼的階段。FastAI的作者Jeremy Howard是Kaggle的主席。他曾經(jīng)寫(xiě)過(guò)一篇Introducing Pytorch for fast.ai,討論為何FastAI從使用Keras轉(zhuǎn)向創(chuàng)建自己的框架。
現(xiàn)在還沒(méi)有什么職位需要用這個(gè)框架,本身使用也不廣泛。然而,由于FastAI的免費(fèi)在線課程很流行,自然而然就有不少使用者。這個(gè)框架強(qiáng)大易用,因此可能會(huì)很快普及。
標(biāo)準(zhǔn)
我選擇了以下7個(gè)類(lèi)別來(lái)評(píng)估深度學(xué)習(xí)框架的流行度和關(guān)注度。
在線招聘描述
KDnuggets使用調(diào)研
谷歌搜索量
Medium文章
亞馬遜數(shù)據(jù)
ArXiv論文
GitHub熱度
數(shù)據(jù)采集自2018年9月16日至2018年9月21日,源數(shù)據(jù)可以通過(guò)谷歌試算表訪問(wèn):https://docs.google.com/spreadsheets/d/1mYfHMZfuXGpZ0ggBVDot3SJMU-VsCsEGceEL8xd1QBo/edit?usp=sharing
我使用了Python的pandas庫(kù)探索流行度,并使用plotly庫(kù)進(jìn)行可視化。如果你想要查看可交互的plotly圖表,請(qǐng)?jiān)L問(wèn)我在文章開(kāi)頭提到過(guò)的Kaggle Kernel。
在線招聘描述
現(xiàn)在的工作市場(chǎng)上哪種深度學(xué)習(xí)庫(kù)需求更高?我搜集了LinkedIn、Indeed、Simply Hired、Monster、Angel List的上的數(shù)據(jù)。
毫無(wú)疑問(wèn),TensorFlow是這方面的贏家。如果你想找一份深度學(xué)習(xí)的工作,可以學(xué)一下TensorFlow。
我通過(guò)“machine learning”(機(jī)器學(xué)習(xí))加庫(kù)名的方式搜索。比如,“machine learning TensorFlow”。我測(cè)試了若干搜索方法,這個(gè)方法可以得到相關(guān)性最高的結(jié)果。
之所以額外加上一個(gè)搜索詞,是因?yàn)橛行┛蚣艿拿挚赡苡衅缌x,比如Caffe可能有多種含義。
使用量
KDnuggets是一個(gè)流行的數(shù)據(jù)科學(xué)網(wǎng)站。它在調(diào)研軟件使用情況的時(shí)候提問(wèn):
你在過(guò)去12個(gè)月的真實(shí)項(xiàng)目上用了什么分析、大數(shù)據(jù)、數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)軟件?
讓人有點(diǎn)意外的是,Keras的使用量很高——差不多快趕上TensorFlow了。有意思,美國(guó)的雇主們熱衷找具備TensorFlow技術(shù)的人,而Keras的使用率差不多一樣高。
KDnuggets有好幾年的數(shù)據(jù)。盡管我在分析中只使用了2018年的數(shù)據(jù),我需要指出,2017年后,Caffe、Theano、MXNET、CNTK的使用量下降了。
谷歌搜索熱度
最大搜索引擎上的網(wǎng)絡(luò)搜索量是一項(xiàng)很好的評(píng)估流行度的指標(biāo)。我查看了過(guò)去一年谷歌趨勢(shì)的搜索歷史。谷歌沒(méi)有提供搜索量的絕對(duì)值,不過(guò)它提供了不同搜索項(xiàng)的對(duì)比圖形。
Keras和TensorFlow的差距不大,PyTorch位居第三,其他框架的搜索量相對(duì)較低。
現(xiàn)在,讓我們簡(jiǎn)單看下搜索量隨時(shí)間的改變趨勢(shì),這能提供歷史上下文。Google自帶兩年搜索趨勢(shì)變化的圖表。
紅:TensorFlow;黃:Keras;藍(lán):PyTorch;綠:Caffe
過(guò)去一年里,TensorFlow的搜索量沒(méi)什么顯著增長(zhǎng),但Keras和PyTorch的搜索量增加了。谷歌趨勢(shì)只允許同時(shí)比較五個(gè)搜索項(xiàng),所以其他框架在另外的圖表上比較——都沒(méi)顯示出什么明顯的趨勢(shì),除了相對(duì)TensorFlow而言極低的搜索量。
發(fā)表
我納入了多種發(fā)表類(lèi)型。讓我們先看下Medium文章。
Medium文章
Medium上有很多流行的數(shù)據(jù)科學(xué)文章和指南。
終于出現(xiàn)新贏家了,Keras超過(guò)了TensorFlow,而相比其他評(píng)估項(xiàng),F(xiàn)astAI的表現(xiàn)很突出。
我猜想這可能是因?yàn)镵eras和FastAI對(duì)初學(xué)者更友好。新的深度學(xué)習(xí)從業(yè)者對(duì)這兩個(gè)框架的興趣較大,而Medium上有大量教程。
我使用了谷歌的站內(nèi)搜索,限定時(shí)間為12個(gè)月內(nèi),使用框架名加“l(fā)earning”(學(xué)習(xí))作為關(guān)鍵詞——同樣是為了避免“caffe”帶來(lái)的歧義。相比其他關(guān)鍵詞組合,這導(dǎo)致的搜索結(jié)果下降最少。
現(xiàn)在讓我們看下亞馬遜上有關(guān)這些框架的書(shū)籍?dāng)?shù)量。
亞馬遜書(shū)籍
我在Amazon.com的圖書(shū) > 計(jì)算機(jī)技術(shù)分類(lèi)下搜索每個(gè)深度學(xué)習(xí)框架的名稱(chēng)。
TensorFlow又獲勝了。MXNET的書(shū)比期望的多,而Theano的書(shū)比期望的少。相對(duì)其流行度而言,PyTorch的書(shū)不多,這可能是因?yàn)檫@個(gè)框架比較年輕。注意這一測(cè)量偏向老框架,因?yàn)闀?shū)的出版周期比較長(zhǎng)。
ArXiv論文
機(jī)器學(xué)習(xí)方面的學(xué)術(shù)論文,最常發(fā)表在ArXiv上。我同樣使用谷歌站內(nèi)搜索,限定時(shí)間為12個(gè)月內(nèi)。
TensorFlow還是第一。注意,相比學(xué)術(shù)論文而言,Keras在Meidum和亞馬遜上要流行得多。PyTorch在這一類(lèi)別排名第二,顯示它在實(shí)現(xiàn)新想法方面的靈活性。Caffe的評(píng)分也相對(duì)較好。
GitHub熱度
GitHub熱度是另一項(xiàng)框架流行度的指標(biāo)。我為收藏、分叉、關(guān)注、貢獻(xiàn)者分別制作了圖表,因?yàn)檫@些數(shù)據(jù)更適合分別呈現(xiàn),而不是混在一起。
TensorFlow也是最流行的,有大量活躍用戶(hù)??紤]到FastAI甚至還不滿(mǎn)一歲,它在GitHub上的熱度相當(dāng)不錯(cuò)。有意思的是,相比另外三個(gè)測(cè)度,不同框架的貢獻(xiàn)者數(shù)量總體而言比較接近。
收集、分析了所有數(shù)據(jù)后,是時(shí)候?qū)⑺鼈冋铣梢粋€(gè)測(cè)度了。
影響力評(píng)分過(guò)程
我是這樣得出影響力評(píng)分的:
將所有特征的尺度縮放至0到1
聚合在線招聘描述和GitHub熱度的子類(lèi)別
根據(jù)下圖的權(quán)重對(duì)類(lèi)別進(jìn)行加權(quán)
如上圖所示,在線招聘描述、KDnuggets一組,網(wǎng)絡(luò)搜索、發(fā)表、GitHub熱度一組,平分權(quán)重。這樣劃分看起來(lái)是最合適的,平衡了多種類(lèi)別。
為了便于查看,各項(xiàng)加權(quán)評(píng)分乘以100
累加每個(gè)框架的各項(xiàng)評(píng)分以得到單一的影響力評(píng)分
下為各個(gè)類(lèi)別的統(tǒng)計(jì)數(shù)據(jù):
下為加權(quán)和聚合子類(lèi)別后的各項(xiàng)評(píng)分:
這就得到了文章開(kāi)頭的圖表:
100是最高可能得分,意味著在所有類(lèi)別都是第一。TensorFlow幾乎達(dá)到了100分,這并不令人意外,畢竟它在每個(gè)類(lèi)別中都是第一(或者幾乎是第一)。Keras毫無(wú)爭(zhēng)議地位居第二。
我再重復(fù)一遍,如果你想要以可交互的方式查看圖表,或者分叉Jupyter Notebook,請(qǐng)?jiān)L問(wèn)我開(kāi)頭提到的Kaggle Kernel。
未來(lái)
目前為止,TensorFlow的領(lǐng)先地位難以動(dòng)搖。短期內(nèi),它應(yīng)該會(huì)繼續(xù)統(tǒng)治深度學(xué)習(xí)領(lǐng)域。不過(guò),考慮到深度學(xué)習(xí)世界的飛速變革,長(zhǎng)期來(lái)看,TensorFlow的領(lǐng)先可能發(fā)生變化。
時(shí)間會(huì)告訴我們,PyTorch是否能超越TensorFlow,就像React超越Angular一樣。這兩對(duì)框架還挺適合類(lèi)比的。PyTorch和React都是由Facebook支撐的靈活度很高的框架,通常認(rèn)為要比谷歌支撐的競(jìng)爭(zhēng)者更容易使用。
FastAI能獲取課程之外的用戶(hù)嗎?它有一大堆自帶的學(xué)生用戶(hù),比Keras對(duì)初學(xué)者更友好的API。
你覺(jué)得未來(lái)會(huì)怎么樣?請(qǐng)留言分享你的想法。
給學(xué)習(xí)者的建議
如果你掌握了Python、numpy、pandas、sklearn、matplotlib技能,考慮學(xué)習(xí)一個(gè)深度學(xué)習(xí)框架,我建議你從Keras開(kāi)始。它的用戶(hù)數(shù)量很大,也受到雇主的認(rèn)可,Medium上也有很多文章可以參考,API也很容易使用。
如果你已經(jīng)掌握了Keras,決定下一個(gè)要學(xué)習(xí)的框架不太容易。我建議你選擇TensorFlow或者PyTorch,深入學(xué)習(xí),以做出很棒的深度學(xué)習(xí)模型。
如果你想要熟練掌握需求量最大的框架,你應(yīng)該選擇TensorFlow。但研究人員很喜歡用PyTorch,因?yàn)樗纫子糜朱`活。Quora上有一個(gè)關(guān)于選TensorFlow還是PyTorch的問(wèn)題:https://www.quora.com/Should-I-go-for-TensorFlow-or-PyTorch
如果你具備了這些框架的經(jīng)驗(yàn),我建議你留意下FastAI。如果你想學(xué)習(xí)基礎(chǔ)和高級(jí)的深度學(xué)習(xí)技能,可以看下FastAI的免費(fèi)在線課程。FastAI 1.0許諾讓你可以很容易地實(shí)現(xiàn)最新的深度學(xué)習(xí)策略,并快速迭代。
不管你選什么框架,我希望你現(xiàn)在對(duì)哪個(gè)深度學(xué)習(xí)框架需求最高,使用最多,文章最多有所了解。
本文來(lái)源:Medium
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5503瀏覽量
121175
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論