深度學習領域發展迅猛,江湖風起雲涌。在此,咪博士為大家細細盤點、比較,各大深度學習框架。也祝大家都能訓出好模型,調出好參數。
以下是咪博士的觀點,供大家參考:
- 如果你是初學者,那么推薦選擇 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 等,由於眾多原因,咪博士就不給大家推薦了。
下面是詳細的比較和說明:
一、推薦使用
受到 Torch 啟發,Keras 提供了簡單易用的 API 接口,特別適合初學者入門。其后端采用 TensorFlow, CNTK,以及 Theano。另外,Deeplearning4j 的 Python 也是基於 Keras 實現的。Keras 幾乎已經成了 Python 神經網絡的接口標准。
亞馬遜 (Amazon) 和 微軟 (Microsoft) 於 2017 年 10 月聯合推出的深度學習 API。Gluon 類似 Keras,提供了簡單易用的 API 接口。但和 Keras 不一樣的地方是,Gluon 還支持動態計算圖(對自然語言處理特別有用)。Gluon 后端目前采用 MXNet,未來還將支持微軟的 CNTK。
谷歌 (Google) 大廠出品,追隨者眾多。相比其他框架,TensorFlow 速度較慢,但它提供的 TensorBoard 可視化工具還是很不錯的。
已被 亞馬遜 (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
據說速度很快,但太過小眾,而且發展還不完善,許多特性還不支持。
參考
出處:http://www.cnblogs.com/ipaomi/p/7798656.html
================================================================================
對於希望在應用中整合深度學習功能的開發者來說,GitHub上其實還有很多不錯的開源項目值得關注
一、Caffe。https://github.com/BVLC/caffe源自加州伯克利分校的Caffe被廣泛應用,包括Pinterest這樣的web大戶。與TensorFlow一樣,Caffe也是由C++開發,Caffe也是Google今年早些時候發布的DeepDream項目(可以識別喵星人的人工智能神經網絡)的基礎。
二、Theano https://github.com/Theano/Theano 2008年誕生於蒙特利爾理工學院,Theano派生出了大量深度學習Python軟件包,最著名的包括Blocks 和 Keras 。
三、Torch https://github.com/torch/torch7 Torch誕生已經有十年之久,但是真正起勢得益於去年Facebook開源了大量Torch的深度學習模塊和擴展。Torch另外一個特殊之處是采用了不怎么流行的編程語言Lua(該語言曾被用來開發視頻游戲)。
除了以上三個比較成熟知名的項目,還有很多有特色的深度學習開源框架也值得關注:
四、Brainstorm https://github.com/IDSIA/brainstorm。來自瑞士人工智能實驗室IDSIA的一個非常發展前景很不錯的深度學習軟件包,Brainstorm能夠處理上百層的超級深度神經網絡——所謂的公路網絡Highway Networks http://people.idsia.ch/%7Erupesh/very_deep_learning/index.html。
五、Chainer https://github.com/pfnet/chainer。來自一個日本的深度學習創業公司Preferred Networks,今年6月發布的一個Python框架。Chainer的設計基於define by run原則,也就是說,該網絡在運行中動態定義,而不是在啟動時定義,這里有Chainer的詳細文檔http://docs.chainer.org/en/stable/tutorial/basic.html。
六、Deeplearning4j https://github.com/deeplearning4j/deeplearning4j。 顧名思義,Deeplearning4j是”for Java”的深度學習框架,也是首個商用級別的深度學習開源庫。Deeplearning4j由創業公司Skymind於2014年6月發布,使用 Deeplearning4j的不乏埃森哲、雪弗蘭、博斯咨詢和IBM等明星企業。http://deeplearning4j.org/
DeepLearning4j是一個面向生產環境和商業應用的高成熟度深度學習開源庫,可與Hadoop和Spark集成,即插即用,方便開發者在APP中快速集成深度學習功能,可應用於以下深度學習領域:
人臉/圖像識別
語音搜索
語音轉文字(Speech to text)
垃圾信息過濾(異常偵測)
電商欺詐偵測
七、Marvin https://github.com/PrincetonVision/marvin。是普林斯頓大學視覺工作組http://vision.princeton.edu/新推出的C++框架。該團隊還提供了一個文件https://github.com/PrincetonVision/marvin/tree/master/tools/converter_caffe用於將Caffe模型轉化成語Marvin兼容的模式。
八、ConvNetJS https://github.com/karpathy/convnetjs。這是斯坦福大學博士生Andrej Karpathy開發瀏覽器插件,基於萬能的JavaScript可以在你的游覽器中訓練神經網絡。Karpathy還寫了一個ConvNetJS的入門教程,以及一個簡潔的瀏覽器演示項目http://cs.stanford.edu/people/karpathy/convnetjs/index.html。
九、MXNet https://github.com/dmlc/mxnet。出自CXXNet、Minerva、Purine等項目的開發者之手,主要用C++編寫。MXNet強調提高內存使用的效率,甚至能在智能手機上運行諸如圖像識別等任務。
十、Neon https://github.com/NervanaSystems/neon。由創業公司Nervana Systems於今年五月開源,在某些基准測試中,由Python和Sass開發的Neon的測試成績甚至要優於Caffeine、Torch和谷歌的TensorFlow。
出處:http://www.cnblogs.com/hulubrother/articles/5950413.html