1. 程式人生 > >2018 年 深度學習框架 盤點 比較 推薦

2018 年 深度學習框架 盤點 比較 推薦

深度學習領域發展迅猛,江湖風起雲湧。在此,咪博士為大家細細盤點、比較,各大深度學習框架。也祝大家都能訓出好模型,調出好引數。

以下是咪博士的觀點,供大家參考:

  • 如果你是初學者,那麼推薦選擇 Keras 或 Gluon 這樣簡單易用的介面入門。至於是 Keras 還是 Gluon 就不必太糾結了,因為二者都很容易上手,完全可以都學一下。如果非要分個先後的話,可以先試試 Gluon 畢竟開發者是中國人,有官方出品的中文教程帶你入門。
  • 學完 Keras 或 Gluon “前端”框架之後,再選擇一個“後端”框架深入學習,TensorFlow (Keras 後端) 或 MXNet (Gluon 後端) 是咪博士推薦的 2 個後端框架。TensorFlow 谷歌 (Google) 出品,MXNet 有 亞馬遜 (Amazon) 支援,它們都是非常優秀的深度學習框架。至於是 TensorFlow 還是 MXNet,那就得看你的需求了。TensorFlow 受眾更廣,但是效能較差,而且不支援動態計算圖;MXNet 目前還比較小眾,但效能較好,而且支援動態計算圖,十分方便搞自然語言處理 (NLP) 的朋友。
  • 學習完後端框架之後,你就可以非常靈活地定製自己的神經網路,自由地在深度學習的世界裡翱翔了。這裡候,如果你有興趣(或需要),可以試試其他的一些框架,如 PyTorch (靈活多變,適合研究), Caffe2 (效能優化,手機也能跑), Deeplearning4j (Java 首選,整合 Hadoop, Spark), 以及 ConvNetJS (Js 開發,瀏覽器上玩深度學習)。
  • 其他一些深度學習框架,諸如 Theano (Lasagne, 以及 Blocks), Torch, Caffe, CNTK, Chainer, Paddle, DSSTNE, DyNet, BigDL, Neon 等,由於眾多原因,咪博士就不給大家推薦了。

下面是詳細的比較和說明:

一、推薦使用

Keras

受到 Torch 啟發,Keras 提供了簡單易用的 API 介面,特別適合初學者入門。其後端採用 TensorFlow, CNTK,以及 Theano。另外,Deeplearning4j 的 Python 也是基於 Keras 實現的。Keras 幾乎已經成了 Python 神經網路的介面標準。

Gluon

亞馬遜 (Amazon) 和 微軟 (Microsoft) 於 2017 年 10 月聯合推出的深度學習 API。Gluon 類似 Keras,提供了簡單易用的 API 介面。但和 Keras 不一樣的地方是,Gluon 還支援動態計算圖(對自然語言處理特別有用)。Gluon 後端目前採用 MXNet,未來還將支援微軟的 CNTK。

谷歌 (Google) 大廠出品,追隨者眾多。相比其他框架,TensorFlow 速度較慢,但它提供的 TensorBoard 視覺化工具還是很不錯的。

MXNet

已被 亞馬遜 (Amazon) 選為 AWS 上的深度學習框架,支援動態圖計算。MXNet 有許多中國開發者,因而有非常良好的中文文件支援。Gluon 介面使得 MXNet 像 Keras 一樣簡單易用。

二、值得一試

背後金主是 臉書 (Facebook) ,同樣支援動態計算圖,提供很好的靈活性,適合研究。

同樣是 臉書 (Facebook) 出品,為生產環境設計,提供在各種平臺(包括移動裝置)的執行時。

與其他(大多數)基於 Python 的深度學習框架不同,Deeplearning4j 基於 Java 開發,與 Hadoop, Spark 生態結合得很好。尤其令人稱道的是其優秀的文件,官司方文件直接就有中文版本。另外,雖然是面向 Java 的框架,Deeplearning4j 也提供了 Python 的介面(基於 Keras 實現)

基於 Javascript 的深度學習框架,可以在瀏覽器中訓練深度神經網路。最重要的用途是幫助學習 Deep Learning

三、不推薦

Theano, Lasagne, 以及 Blocks

Yoshua Bengio 於 2017 年 09 月宣佈不再維護 Theano,所以這個專案事實上已經宣告死亡了。其他基於 Theano 的庫,如 Lasagne 和 Blocks,也可以散了。

Torch

雖然設計精良(Keras 就是參考 Torch 設計的),但它基於 Lua 語言,太過小眾了。而且 Facebook 已經推出了 Python 版本的 PyTorch 了。

Caffe

Caffe2 已經正式釋出了,徹底取代 Caffe 只是時間問題罷了。

CNTK

微軟出品,授權協議有一些特別,而且似乎也沒有什麼特別亮眼的地方。

Chainer

曾經是動態計算圖的首選框架,特別適用於自然語言處理。但是,現在許多其他的框架,如 MXNet, PyTorch, 以及 DyNet 也支援該特性,所以 Chainer 的這一優勢也就不復存在了。

Paddle

百度的深度學習框架,受眾太小。

DSSTNE

曾是亞馬遜的深度學習引擎,但是很小眾,而且現在亞馬遜又選擇了 MXNet,所以 DSSTNE 的前途就更渺茫了。

DyNet

源自卡耐基梅隆大學,支援動態計算圖,但是太小眾了。

BigDL

Intel 基於 spark 的深度學習庫,但只能執行在 Intel 晶片之上。

Neon

據說速度很快,但太過小眾,而且發展還不完善,許多特性還不支援。

參考