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。TensorFlow
谷歌 (Google) 大廠出品,追隨者眾多。相比其他框架,TensorFlow 速度較慢,但它提供的 TensorBoard 可視化工具還是很不錯的。
MXNet
已被 亞馬遜 (Amazon) 選為 AWS 上的深度學習框架,支持動態圖計算。MXNet 有許多中國開發者,因而有非常良好的中文文檔支持。Gluon 介面使得 MXNet 像 Keras 一樣簡單易用。
二、值得一試
PyTorch
背後金主是 臉書 (Facebook) ,同樣支持動態計算圖,提供很好的靈活性,適合研究。
Caffe2
同樣是 臉書 (Facebook) 出品,為生產環境設計,提供在各種平台(包括移動設備)的運行時。
Deeplearning4j
與其他(大多數)基於 Python 的深度學習框架不同,Deeplearning4j 基於 Java 開發,與 Hadoop, Spark
生態結合得很好。尤其令人稱道的是其優秀的文檔,官司方文檔直接就有中文版本。另外,雖然是面向 Java 的框架,Deeplearning4j 也提供了 Python 的介面(基於 Keras 實現)ConvNetJS
基於 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
據說速度很快,但太過小眾,而且發展還不完善,許多特性還不支持。
參考
- https://deeplearning4j.org/compare-dl4j-tensorflow-pytorch
- http://docs.chainer.org/en/stable/comparison.html
- http://www.ipaomi.com/2017/11/06/2018-年-深度學習框架-盤點-比較-推薦/
推薦閱讀:
TAG:深度學習DeepLearning | Keras | TensorLayer深度學習庫 |