[人工智能]深度學習框架

前言

摘抄自《深度學習之Pytorch》。算法

在深度學習初始階段,每一個深度學習研究者都須要寫大量的重複代碼。爲了提升工做效率,這些研究者就將這些代碼寫成了一個框架放到網上讓全部研究者一塊兒是用;接着網上就出現了不一樣的框架。隨着時間的推移,最爲好用的幾個框架被大量的人使用從而流行了起來,接下來介紹一下目前全世界最爲流行的幾大深度學習框架。編程

TensorFlow

首先介紹的是Google開源的TensorFlow,這是一款使用C++語言開發的開源數學計算軟件,使用數據流圖(Data Flow Graph)的形式進行計算。圖中的節點表明數學運算,而圖中的線條標識多維數據數組(tensor)之間的交互。TensorFlow靈活的架構能夠部署在一個或多個CPU、GPU的臺式及服務器中,或者使用單一的API應用在移動設備中。TensorFlow最初是由研究人員和Google Brain團隊針對機器學習和深度神經網絡進行研究而開發的,目前開源以後幾乎能夠在各類領域使用。數組

目前TensorFlow是全世界使用人數最多、社區最爲龐大的一個框架,由於Google公司出品,全部維護和更新也比較頻繁,而且有着Python和C++的接口,教程也很是完善。同時不少論文復現的第一個版本都是基於TensorFlow寫的,因此是深度學習界框架默認的老大。服務器

因爲其語言太過於底層,目前有不少基於TensorFlow的第三方抽象庫將TensorFlow的函數進行封裝,使其變得簡潔。目前比較有名的幾個是Keras、Tflearn、tfslim以及TensorLayer網絡

Caffe

和TensorFlow名氣同樣大的是深度學習框架Caffe,由加州大學伯克利的Phd賈揚清開發,全稱是Convolutional Architecture for Fast Feature Embedding,是一個清晰而高效的開源深度學習框架,目前由伯克利視覺學中心(Brekeley Vision and Learning Center)進行維護。架構

從其名字就能夠看出它對卷積網絡的支持特別好,同時也是用C++寫的,可是並無提供Python接口,只提供C++的接口。框架

Caffe之因此流行,是由於以前不少ImageNet比賽裏面使用的網絡都是用Caffe寫的,因此若是你想使用這些比賽裏面的網絡模型就只能使用Caffe,這也就致使了不少人直接轉到Caffe這個框架下面。機器學習

Caffe的缺點是不夠靈活,同時內存佔用高,只提供C++接口。目前Caffe的升級版本Caffe2已經開源了,修復了一些問題,同時工程水平獲得了進一步提供。編程語言

Theano

Theano於2008年誕生於蒙特利爾理工學院,其派生出來大量深度學習Python軟件包,最著名的包括Blocks和Keras。Theano的核心是一個數學表達式的編譯器,他知道如何獲取你的結構,並使之成爲一個使用numpy、高效本地庫的高效代碼,如BLAS和本地代碼(C++),在CPU或GPU上儘量快地運行。它是爲深度學習中處理大型神經網絡算法所學的計算而專門設計的,是這類庫的獨創之一(發展始於2007年),被認爲是深度學習研究和開發的行業標準。分佈式

但目前開發Theano的研究人員大多去了Google參與TensorFlow的開發,因此從某種程度來說TensorFlow就像是Theano的孩子。

Torch

Torch是一個有大量機器學習算法支持的科學計算框架,其誕生已經有十年之久,但真正起勢得益於Facebook開源了大量的Torch的深度學習模塊和擴展。Torch的特色在於特別靈活,可是另一個特殊之處是採用Lua,在目前深度學習大部分以Python爲編程語言的大環境之下,一個以Lua爲編程語言的框架有着更多的劣勢,這一小衆語言增長了學習使用Torch這個框架的成本。

PyTorch的前身即是Torch,其底層和Torch框架同樣,可是使用Python重寫了不少內容,不只更加靈活,支持動態圖,也提供了Python接口。

PyTorch

PyTorch是由Torch7團隊開發的,從名字就能夠看出,它跟Torch的不一樣之處在於PyTorch使用了Python做爲開發語言。所謂「Python first」,一樣說明它是一個以Python優先的深度學習框架,不只可以實現強大的GPU加速,同時還支持動態神經網絡,這是如今不少駐留框架好比TensorFlow等都不支持的。

PyTorch既能夠看作加入了GPU支持的numpy,同時也能夠當作一個擁有自動求導功能的強大的深度神經網絡。

特色

PyTorch有如下特色:

  • 支持GPU
  • 動態神經網絡
  • Python優先
  • 命令式體驗
  • 輕鬆擴展

MXNet

MXNet的主要做者是李沐,最先就是幾我的抱着純粹對技術和開發的熱情作起來的興趣項目,現在成爲了亞馬遜的官方框架,有着很是好的分佈式支持,並且性能特別好,佔用顯存低,同時其開發的語言接口不只僅有Python和C++,還有R、MATLAB、Scala、JavaScript等等,能夠說可以知足使用任何語言的人。

但MXNet的缺點也很明顯,教程不夠完善,使用的人不夠多致使社區不大,同時每一年不多有比賽和論文是基於MXNet實現的,這就使得MXNet的推廣力度和知名度不高。

相關文章
相關標籤/搜索