1. 程式人生 > >深度學習框架(分語言總結)

深度學習框架(分語言總結)

以下列舉了基於10種語言實現的30餘種機器學習/深度學習框架,其中比較常用的有Theano、Keras、Caffe、TensorFlow等。

Python

  • Theano 是一種用於使用數列來定義和評估數學表達的 Python 庫。它可以讓 Python 中深度學習演算法的編寫更為簡單。很多其他的庫是以 Theano 為基礎開發的:

    • Keras 是類似 Torch 的一個精簡的,高度模組化的神經網路庫。Theano 在底層幫助其優化 CPU 和 GPU 執行中的張量操作。
    • Pylearn2 是一個引用大量如隨機梯度(Stochastic Gradient)這樣的模型和訓練演算法的庫。它在深度學習中被廣泛採用,這個庫也是以 Theano 為基礎的。
    • Lasagne 是一個輕量級的庫,它可以在 Theano 中建立和訓練神經網路。它簡單、透明、模組化、實用、專一而剋制。
    • Blocks 是一種幫助你在 Theano 之上建立神經網路模型的框架。
  • Caffe 是一種以表達清晰、高速和模組化為理念建立起來的深度學習框架。它是由伯克利視覺和學習中心(BVLC)和網上社群貢獻者共同開發的。谷歌的 DeepDream 人工智慧影象處理程式正是建立在 Caffe 框架之上。這個框架是一個 BSD 許可的帶有 Python 介面的 C++庫。

  • nolearn 包含大量其他神經網路庫中的包裝器和抽象(wrappers and abstractions),其中最值得注意的是 Lasagne,其中也包含一些機器學習的實用模組。

  • Genism 是一個部署在 Python 程式語言中的深度學習工具包,用於通過高效的演算法處理大型文字集。

  • Chainer 連線深度學習中的演算法與實現,它強勁、靈活而敏銳,是一種用於深度學習的靈活的框架。

  • deepnet 是一種基於 GPU 的深度學習演算法的 Python 實現,比如:前饋神經網路、受限玻爾茲曼機、深度信念網路、自編碼器、深度玻爾茲曼機和卷積神經網路。

  • Hebel 是一個在 Python 中用於帶有神經網路的深度學習的庫,它通過 PyCUDA 使用帶有 CUDA 的 GPU 加速。它可實現大多數目前最重要的神經網路模型,提供了多種不同的啟用函式和訓練方式,如動量,Nesterov 動量,退出(dropout)和 前期停止(early stopping)。

  • CXXNET 是一種快速,簡明的分散式深度學習框架,它以 MShadow 為基礎。它是輕量級可擴充套件的 C++/CUDA 神經網路工具包,同時擁有友好的 Python/Matlab 介面,可供機器學習的訓練和預測使用。

  • DeepPy 是一種建立在 Mumpy 之上的 Python 化的深度學習框架。

  • DeepLearning 是一個用 C++和 Python 開發的深度學習庫。

  • Neon 是 Nervana 公司基於 Python 開發的深度學習框架。

C++

  • eblearn 是一個機器學習的開源 C++庫,由紐約大學機器學習實驗室的 Yann LeCun 牽頭研發。尤其是,按照 GUI、演示和教程來部署的帶有基於能量的模型的卷積神經網路。

  • SINGA 被設計用來進行已有系統中分散式訓練演算法的普通實現。它由 Apache Software Foundation 提供支援。

  • NVIDIA DIGITS 是一個新的用於開發、訓練和視覺化神經網路系統。它把深度學習放進了基於瀏覽器的介面中,讓資料分析師和研究人員可以快速設計最好的深度學習神經網路(DNN)來獲取實時的網路行為視覺化資料。

Java

  • N-Dimensional Arrays for Java (ND4J) 是一種為 JVM 設計的科學計算庫。它們被應用在生產環境中,這就意味著路徑被設計成可以最小的 RAM 記憶體需求來快速執行。

  • Deeplearning4j 是第一個為 Java 和 Scala 編寫的消費級開源分散式深度學習庫。它被設計成在商業環境中使用,而非研究工具。

  • Encog 是一種先進的機器學習框架,支援支援向量機(Support Vector Machines),人工神經網路(Artificial Neural Networks),基因程式設計(Genetic Programming),貝葉斯網路(Bayesian Networks),隱馬爾科夫模型(Hidden Markov Models)和 遺傳演算法(Genetic Algorithms)。

JavaScript

  • Convent.js 是一種 Javascript 中用於深度學習模型(主要是神經網路)的庫。完全在瀏覽器中使用,不需要開發工具,不需要編譯器,不需要安裝,也不需要 GPU 的支援,簡單易用。

Lua

  • Torch 是一種科學計算框架,可支援多種計算機學習演算法。

Julia

  • Mocha 用於 Julia 的一種深度學習框架,其靈感來源於 C++框架 Caffe。在 Mocha 中通用的隨機梯度求解器和公共層的有效實現可以被用於訓練深度/淺層(卷積)神經網路,其帶有通過(堆疊的)自動解碼器的(可選的)無監督的預訓練。其最大特點包括:帶有模組化架構、 高層面的介面、便攜性與速度、相容性等等。

Lisp

  • Lush(Lisp Universal Shell)是一種為研究人員、試驗者以及對大規模數值和圖形應用感興趣的工程師設計的、面向物件的程式語言。它帶有豐富的作為機器學習庫一部分的深度學習庫。

Haskell

  • DNNGraph 是一個用 Haskell 編寫的深度神經網路生成 DSL。

.NET

  • Accord.NET 是一種.NET 機器學習框架,包含聲音和影象處理庫,它完全由 C#編寫。它是一種為開發生產級的計算機視覺、計算機聽覺、訊號處理和統計應用而設計的完整框架。

R

  • darch包可以用於建立多層神經網路(深層結構)。其中的訓練方式包括使用對比發散法進行提前訓練,或使用通常的訓練方法(如反向傳播和共軛梯度)進行一些微調。

  • deepnet 實現了一些深度學習架構和神經網路演算法,包括 BP、RBM、DBN、深度自編碼器等等。