深度學習哪家強?用數據來一較高下吧

  • 2019 年 10 月 8 日
  • 筆記

作者介紹:blmoistawinde,喜歡有意思的數據挖掘分析,本文首發於:https://blog.csdn.net/blmoistawinde

前言

本人現在還是一個初識深度學習的小白。初學者總是會面臨選擇的糾結,尤其是對看似高深的深度學習,有着眾多開源框架可供選擇,但自己又沒有能力評估。於是我看了許多比較文章,其中涉及各種層面的比較(數據結構、使用範圍、實現細節),讓姿勢水平還遠遠不夠的我看得眼花繚亂。

作為一個數據玩家,我想到,不妨讓它們在大數據的戰場上一較高下。這樣我們就能夠很輕鬆地從清晰的數據中作出我們的選擇了。

參賽選手

以下是參賽的選手們,是我了解的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