-
Theano https://github.com/Theano/Theano
描述: Theano 是一個python庫, 允許你定義, 優化並且有效地評估涉及到多維數組的數學表達式. 它與GPUs一起工作, 並且在符號微分方面表現優秀.
文檔: http://deeplearning.net/software/theano/
概述: Theano是數值計算的主力, 它支持了許多我們列表當中的其他的深度學習框架. Theano由 frederic bastien 創建, 這是蒙特利爾大學機器學習研究所背后的一個非常優秀的研究團隊. 它的API水平較低, 並且為了寫出效率高的Theano, 你需要對隱藏在其他框架幕后的算法相當的熟悉. 如果你有首豐富的學術機器學習知識, 正在尋找你的模型的精細的控制方法, 或者想要實現一個新奇的或者不同尋常的模型, Theano是你的首選庫. 總而言之, 為了靈活性, Theano犧牲了易用性.
優點: 靈活, 正確使用時的高性能
缺點: 較高的學習難度, 低水平的API, 編譯復雜的符號圖可能很慢 -
Lasagne https://github.com/Lasagne/Lasagne
描述:在Theano上建立和訓練神經網絡的輕量級庫
文檔:http://lasagne.readthedocs.org/
概述:因為Theano致力於成為符號數學中最先且最好的庫,Lasagne提供了在Theano 頂部的抽象,這使得它更適合於深度學習。它主要由當前DeepMind研究科學家Sander Dieleman編寫並維護。Lasagne並非是根據符號變量之間的函數關系來指定網絡模型,而 是允許用戶在層級思考,為用戶提供了例如「Conv2DLayer」和「DropoutLayer」的構建 塊。Lasagne在犧牲了很少的靈活性的同時,提供了豐富的公共組件來幫助圖層定義、圖 層初始化、模型正則化、模型監控和模型訓練。
優點:仍舊非常靈活, 比Theano更局級的抽象, 文檔和代碼中包含了各種Pasta Puns
缺點:社區小 -
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更高級的抽象, 易於測試
缺點:較高的學習難度, 更小的社區 -
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支持仍不如Theano -
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 還不太成熟(用他們自己的話說: 我們正處於早期測試版本, 期待一些冒險.), 除了官方文檔外, 只有限的參考文獻/資源.