Theano https://github.com/Theano/Theano
描述: Theano 是一個python庫, 容許你定義, 優化而且有效地評估涉及到多維數組的數學表達式. 它與GPUs一塊兒工做, 而且在符號微分方面表現優秀.
文檔: http://deeplearning.net/software/theano/
概述: Theano是數值計算的主力, 它支持了許多咱們列表當中的其餘的深度學習框架. Theano由 frederic bastien 建立, 這是蒙特利爾大學機器學習研究所背後的一個很是優秀的研究團隊. 它的API水平較低, 而且爲了寫出效率高的Theano, 你須要對隱藏在其餘框架幕後的算法至關的熟悉. 若是你有首豐富的學術機器學習知識, 正在尋找你的模型的精細的控制方法, 或者想要實現一個新奇的或者不一樣尋常的模型, Theano是你的首選庫. 總而言之, 爲了靈活性, Theano犧牲了易用性.
優勢: 靈活, 正確使用時的高性能
缺點: 較高的學習難度, 低水平的API, 編譯複雜的符號圖可能很慢html
Lasagne https://github.com/Lasagne/Lasagne
描述:在Theano上創建和訓練神經網絡的輕量級庫
文檔:http://lasagne.readthedocs.org/
概述:由於Theano致力於成爲符號數學中最早且最好的庫,Lasagne提供了在Theano 頂部的抽象,這使得它更適合於深度學習。它主要由當前DeepMind研究科學家Sander Dieleman編寫並維護。Lasagne並不是是根據符號變量之間的函數關係來指定網絡模型,而 是容許用戶在層級思考,爲用戶提供了例如「Conv2DLayer」和「DropoutLayer」的構建 塊。Lasagne在犧牲了不多的靈活性的同時,提供了豐富的公共組件來幫助圖層定義、圖 層初始化、模型正則化、模型監控和模型訓練。
優勢:仍舊很是靈活, 比Theano更局級的抽象, 文檔和代碼中包含了各類Pasta Puns
缺點:社區小python
Blocks https://github.com/mila-udem/blocks
描述:用於構建和訓練神經網絡的Theano框架
文檔:http://blocks.reackhedocs.io/en/latest/
概述:與Lasagne相似,Blocks是在Theano頂部添加一個抽象層使深度學習模型比編寫 原始的Theano更清晰、更簡單、定義更加標準化。它是由蒙特利爾大學機器學習研究所 (MILA)編寫,其中一些人爲搭建Theano和第一個神經網絡定義的高級接口(已經淘汰 的PyLearn2)貢獻了本身的_份力量。比起Lasagne,Blocks靈活一點,代價是入門臺階較高,想要高效的使用它有不小的難度。除此以外,Blocks對遞歸神經網絡架構 (recurrent neural network architectures)有很好的支持,因此若是你有興趣探索這種 類型的模型,它值得一看。除了 TensorFlow,對於許多咱們已經部署在indico產品中的 API,Blocks是其首選庫。
優勢:仍舊很是靈活, 比Theano更高級的抽象, 易於測試
缺點:較高的學習難度, 更小的社區git
TensorFlow https://github.com/tensorflow/tensorflow
描述:使用數據流圖進行數值計算的的開源軟件庫
文檔:https://www.tensorflow.org/api_docs/python/
概述:TensorFlow是較低級別的符號庫(好比Theano)和較高級別的網絡規範庫(好比 Blocks和Lasagne)的混合。即便它是Python深度學習庫集合的最新成員,在Google Brain團隊支持下,它可能已是最大的活躍社區了。它支持在多GPUs上運行深度學習模 型,爲高效的數據流水線提供使用程序,並具備用於模型的檢查,可視化和序列化的內置 模塊。最近,TensorFlow團隊決定支持Keras (咱們列表中下一個深度學習庫)。雖然 TensorFlow有着本身的缺點,可是社區彷佛贊成這一決定,社區的龐大規模和項目背後巨 大的動力意味着學習TensorFlow是一次安全的賭注。所以,TensorFlow是咱們今天在 indico選擇的深度學習庫。
優勢:由軟件巨頭Google支持, 很是大的社區, 低級和高級接口網絡訓練, 比基於Theano配置更快的模型編譯, 徹底地多GPU支持
缺點: 雖然Tensorflow正在追趕,可是最初在許多基準上比基於Theano的慢, RNN支持仍不如Theanogithub
Keras https://github.com/fchollet/keras
描述:Python的深度學習庫。支持Convnets、遞歸神經網絡等。在Theano或者TensorFlow 上運行。
文檔:https://keras.io/
概述:Keras也許是水平最高,對用戶最友好的庫了。由FrancisChollet (Goog丨eBrain團隊中的另外一個成員)編寫和維護。它容許用戶選擇其所構建的模型是在Theano上或是在TensorFlow上的符號圖上執行。Keras的用戶界面受啓發於Torch,因此若是你之前有過使用Lua語言的機器學習經驗,Keras絕對值得一看。因爲部分很是優秀的文檔和其相對易用性,Keras的社區很是大而且很是活躍。最近,TensorFlow團隊宣佈計劃與Keras —起支持內置,因此很快Keras將是TensorFlow項目的一個分組。
優勢:可供選擇的Theano或者TensorFlow後端, 直觀、高級別的端口, 更易學習
缺點:不太靈活,比其餘選擇更規範算法
MXNet https://github.com/dmlc/mxnet
描述:MXNet是一個旨在提升效率和靈活性的深度學習框架.
文檔:http://mxnet.io/api/python/index.html#python-api-reference
概述:MXNet是亞馬遜(Amazon)選擇的深度學習庫,而且也許是最優秀的庫。它擁有相似於Theano和TensorFlow的數據流圖,爲多GPU配置提供了良好的配置,有着相似於Lasagne和Blocks更高級別的模型構建塊,而且能夠在你能夠想象的任何硬件上運行(包括手機)。對Python的支持只是其冰山一角 : MXNet一樣提供了對R、Julia、C++、Scala、Matlab,和Java的接口。若是你正在尋找最佳的性能,選擇MXNet吧,可是你必須願意處理與之相對的一些MXNet的怪癖。
優勢:速度的標杆, 很是靈活
缺點:最小的社區, 比Theano更困難的學習難度後端
PyTorch
連接:https://github.com/pytorch/pytorch
描述:Python中的張量(Tensors)和動態神經網絡,有着強大的GPU加速。
文檔:http://pytorch.org/docs/
概述:剛剛放出一段時間,PyTorch就已是咱們Python深度學習框架列表中的一個新的成員了。它是從Lua的Torch庫到Python的鬆散端口,因爲它由Facebook的人工智能研究團隊( ArtificiaUntelligence Research team (FAIR))支持且由於它用於處理動態計算圖(Theano,TensorFlow或者其餘衍生品沒有的特性,編譯者注:如今TensorFlow好像支持動態計算圖),它變得很是的有名。PyTorch在Python深度學習生態系統將扮演怎樣的角色還不得而知,但全部的跡象都代表,PyTorch是咱們列表中其餘框架的一個很是棒的選擇。
優勢:來自Facebook組織的支持, 徹底地對動態圖的支持, 高級和低級API的混合
缺點:比其餘選擇, PyTorch 還不太成熟(用他們本身的話說: 咱們正處於早期測試版本, 期待一些冒險.), 除了官方文檔外, 只有限的參考文獻/資源.api