1. 程式人生 > >深度學習的幾種庫

深度學習的幾種庫

Python

1. Theano是一個Python類庫,用陣列向量來定義和計算數學表示式。它使得在Python環境下編寫深度學習演算法變得簡單。在它基礎之上還搭建了許多類庫。

2.Keras是一個簡潔、高度模組化的神經網路庫,它的設計參考了Torch,用Python語言編寫,支援呼叫GPU和CPU優化後的Theano運算。

2.Pylearn2是一個整合大量深度學習常見模型和訓練演算法的庫,如隨機梯度下降等。它的功能庫都是基於Theano之上。

3.Lasagne是一個搭建和訓練神經網路的輕量級封裝庫,基於Theano。它遵循簡潔化、透明化、模組化、實用化和專一化的原則。

4.Blocks

也是一個基於Theano的幫助搭建神經網路的框架。

2. Caffe是深度學習的框架,它注重於程式碼的表達形式、運算速度以及模組化程度。它是由伯克利視覺和學習中心(Berkeley Vision and Learning Center, BVLC)以及社群成員共同開發。谷歌的DeepDream專案就是基於Caffe框架完成。這個框架是使用BSD許可證的C++庫,並提供了Python呼叫介面。

3. nolearn囊括了大量的現有神經網路函式庫的封裝和抽象介面、大名鼎鼎的Lasagne以及一些機器學習的常用模組。

4. Genism也是一個用Python編寫的深度學習小工具,採用高效的演算法來處理大規模文字資料。

5. Chainer在深度學習的理論演算法和實際應用之間架起一座橋樑。它的特點是強大、靈活、直觀,被認為是深度學習的靈活框架

6. deepnet是基於GPU的深度學習演算法函式庫,使用Python語言開發,實現了前饋神經網路(FNN)、受限玻爾茲曼機(RBM)、深度信念網路(DBN)、自編碼器(AE)、深度玻爾茲曼機(DBM)和卷積神經網路(CNN)等演算法。

7. Hebel也是深度學習和神經網路的一個Python庫,它通過pyCUDA控制支援CUDA的GPU加速。它實現了最重要的幾類神經網路模型,提供了多種啟用函式和模型訓練方法,例如momentum、Nesterov momentum、dropout、和early stopping等方法。

8. CXXNET是一個基於MShadow開發的快速、簡潔的分散式深度學習框架。它是一個輕量級、易擴充套件的C++/CUDA神經網路工具箱,提供友好的Python/Matlab介面來進行訓練和預測。

9. DeepPy是基於NumPy的深度學習框架。

10. DeepLearning是一個用C++和Python共同開發的深度學習函式庫。

11. Neon是Nervana System 的深度學習框架,使用Python開發。 

Matlab

1. ConvNet 卷積神經網路是一類深度學習分類演算法,它可以從原始資料中自主學習有用的特徵,通過調節權重值來實現。

2. DeepLearnToolBox是用於深度學習的Matlab/Octave工具箱,它包含深度信念網路(DBN)、棧式自編碼器(stacked AE)、卷積神經網路(CNN)等演算法。

3. cuda-convet是一套卷積神經網路(CNN)程式碼,也適用於前饋神經網路,使用C++/CUDA進行運算。它能對任意深度的多層神經網路建模。只要是有向無環圖的網路結構都可以。訓練過程採用反向傳播演算法(BP演算法)。

4. MatConvNet是一個面向計算機視覺應用的卷積神經網路(CNN)Matlab工具箱。它簡單高效,能夠執行和學習最先進的機器學習演算法。

CPP

1. eblearn是開源的機器學習C++封裝庫,由Yann LeCun主導的紐約大學機器學習實驗室開發。它用基於能量的模型實現卷積神經網路,並提供視覺化互動介面(GUI)、示例以及示範教程。

2. SINGA是Apache軟體基金會支援的一個專案,它的設計目標是在現有系統上提供通用的分散式模型訓練演算法。

3. NVIDIA DIGITS是用於開發、訓練和視覺化深度神經網路的一套新系統。它把深度學習的強大功能用瀏覽器介面呈現出來,使得資料科學家和研究員可以實時地視覺化神經網路行為,快速地設計出最適合資料的深度神經網路。

Java

1. N-Dimensional Arrays for Java (ND4J) 是JVM平臺的科學計算函式庫。它主要用於產品中,也就是說函式的設計需求是運算速度快、儲存空間最省。

2. Deeplearning4j 是第一款商業級別的開源分散式深度學習類庫,用JavaScala編寫。它的設計目的是為了在商業環境下使用,而不是作為一款研究工具。

3. Encog是一個機器學習的高階框架,涵蓋支援向量機、人工神經網路、遺傳程式設計、貝葉斯網路、隱馬可夫模型等,也支援遺傳演算法。

JavaScript

1. Convnet.js 由JavaScript編寫,是一個完全在瀏覽器內完成訓練深度學習模型(主要是神經網路)的封裝庫。不需要其它軟體,不需要編譯器,不需要安裝包,不需要GPU,甚至不費吹灰之力。

Lua

1. Torch是一款廣泛適用於各種機器學習演算法的科學計算框架。它使用容易,用快速的指令碼語言LuaJit開發,底層是C/CUDA實現。Torch基於Lua程式語言。

Julia

1. Mocha是Julia的深度學習框架,受C++框架Caffe的啟發。Mocha中通用隨機梯度求解程式和通用模組的高效實現,可以用來訓練深度/淺層(卷積)神經網路,可以通過(棧式)自編碼器配合非監督式預訓練(可選)完成。它的優勢特性包括模組化結構、提供上層介面,可能還有速度、相容性等更多特性。

Lisp

1. Lush(Lisp Universal Shell)是一種面向物件的程式語言,面向對大規模數值和圖形應用感興趣的廣大研究員、實驗員和工程師們。它擁有機器學習的函式庫,其中包含豐富的深度學習庫。

Haskell

1. DNNGraph是Haskell用於深度神經網路模型生成的領域特定語言(DSL)。

.NET

1. Accord.NET 是完全用C#編寫的.NET機器學習框架,包括音訊和影象處理的類庫。它是產品級的完整框架,用於計算機視覺、計算機音訊、訊號處理和統計應用領域。

R

1. darch包可以用來生成多層神經網路(深度結構)。訓練的方法包括了對比散度的預訓練和眾所周知的訓練演算法(如反向傳播法或共軛梯度法)的細調。

2. deepnet實現了許多深度學習框架和神經網路演算法,包括反向傳播(BP)、受限玻爾茲曼機(RBM)、深度信念網路(DBP)、深度自編碼器(Deep autoencoder)等等。