深度學習哪家強?用數據來一較高下吧
- 2019 年 10 月 8 日
- 筆記
前言
本人現在還是一個初識深度學習的小白。初學者總是會面臨選擇的糾結,尤其是對看似高深的深度學習,有着眾多開源框架可供選擇,但自己又沒有能力評估。於是我看了許多比較文章,其中涉及各種層面的比較(數據結構、使用範圍、實現細節),讓姿勢水平還遠遠不夠的我看得眼花繚亂。
作為一個數據玩家,我想到,不妨讓它們在大數據的戰場上一較高下。這樣我們就能夠很輕鬆地從清晰的數據中作出我們的選擇了。
參賽選手
以下是參賽的選手們,是我了解的python上的一些著名深度學習框架:
● Google支持的tensorflow
● Facebook支持的pytorch
● 高層封裝,簡單易用的Keras
● 微軟加持的CNTK
● 亞馬遜選擇的mxnet
● 百度打造的PaddlePaddle
● 最老牌的Theano
比賽規則
數據來自Github上這些框架的repo。上面Star數等數據,雖然不是框架好壞的直接反應,但肯定體現了潮流。跟着潮流走總不會有大錯,就算學藝不精,總還能和別人談笑風生。
然而star是一個累計量,還不能完全反映這些框架的近期熱門度。這時,我們可以找到"Insight"欄目中的"Pulse"界面。正如它形象的名字(脈搏),其中有着一些能夠反應其近期活躍度的數據,以tensorflow為例:
其中Active PRs可以反映近期開發者的活躍度,而Active Issues可以反映近期的使用者的活躍度(用的人越多問題總會越多嗎)。
同樣,讓我們再為老態龍鐘的Theano「把把脈」:
儘管Theano因為歷史原因累計了不少star,但是因為已經官宣停更,近期很少有活動,奄奄一息。因此,它已經在我們的比賽中提前出局。
綜上,我為剩下的選手指定了這些「比賽規則」:
● 名聲:直接用Star來衡量
● 流行度:直接用Active Issues來衡量
● 開發活力:反映框架完善提升的潛力。用Active PRs / Star來衡量。除以Star的原因是考慮到項目越大,做的開發工作肯定會更多,所以要做一個修正。
● 使用活力:反映框架的相對其規模的流行度,較大的話也許可以期待用戶數的繼續增長。用Active Issues / Star來衡量。
比賽結果
01
名聲
Tensorflow一騎絕塵,好用的keras也有不少簇擁,接着是pytorch等其他框架。
02
流行度
此處tensorflow依然是老大,但pytorch後來居上,接近能和tensorflow分庭抗禮了。這也與我近期的觀感接近,近期開源的許多強大的NLP模型都提供了基於pytorch的實現,相信也帶動了其熱度。剩下keras,mxnet,paddlepaddle的流行度差不多,但還有一位CNTK,流行度與以上完全不在一個數量級上,這是要涼的節奏嗎?我不能猜測具體原因。
03
活力
在這個指標下,百度的PaddlePaddle表現亮眼,雖然有分母(star)較少的因素,但是其很高的開發活躍度還是會讓人期待其未來的發展,pytorch和mxnet也是同理,特別是pytorch使用活躍度極高,相信與近期基於其上的許多開源項目吸引了許多用戶不無關係。tensorflow和keras的用戶基數比較大,也相對成熟,活力較低。CNTK在此處依然涼涼……
總結
本文不作為專業的建議,但希望能對跟我一樣選擇困難的深度學習小白提供一些幫助,比如我現在就對pytorch很感興趣了。不知道大家心中最好的框架又是什麼呢?
我也做了一個以上圖表的每日更新面板: http://blmoistawinde.pythonanywhere.com/DL_pop
也許框架的更新,會讓大牛們現在的基於技術的優劣分析不再適用,但我相信實時的潮流總會有一定的參考價值。曾經深度學習是TF的一家獨大,現在PyTorch大有異軍突起之勢。或許我們可以時時看看這些框架們的戰局,雖然還只是個吃瓜群眾,但我很期待看看一年後深度學習框架的潮流又會如何呢?
關於技術:
● 爬蟲-requests
● 可視化-echarts
● 網站-Flask