俗話說:工欲善其事,必先利其器!在開始深度學習之前,選擇一個合適的框架,不僅讓你贏在起跑線,更能夠令你事半功倍。
話不多說,接下來小課給大家介紹介紹目前市面上流行的幾款深度學習框架!
Caffe
和TensorFlow名氣一樣大的是深度學習框架Caffe,由加州大學伯克利的Phd賈揚清開發(fā),全稱是Convolutional Architecture for Fast Feature Embedding,是一個清晰而高效的開源深度學習框架,目前由伯克利視覺學中心(Brekeley Vision and Learning Center)進行維護。
從其名字就可以看出它對卷積網(wǎng)絡的支持特別好,同時也是用C++寫的,但是并沒有提供Python接口,只提供C++的接口。
Caffe之所以流行,是因為之前很多ImageNet比賽里面使用的網(wǎng)絡都是用Caffe寫的,所以如果你想使用這些比賽里面的網(wǎng)絡模型就只能使用Caffe,這也就導致了很多人直接轉到Caffe這個框架下面。
Caffe的缺點是不夠靈活,同時內(nèi)存占用高,只提供C++接口。目前Caffe的升級版本Caffe2已經(jīng)開源了,修復了一些問題,同時工程水平得到了進一步提供。
TensorFlow
Google開源的TensorFlow,這是一款使用C++語言開發(fā)的開源數(shù)學計算軟件,使用數(shù)據(jù)流圖(Data Flow Graph)的形式進行計算。圖中的節(jié)點代表數(shù)學運算,而圖中的線條標識多維數(shù)據(jù)數(shù)組(tensor)之間的交互。TensorFlow靈活的架構可以部署在一個或多個CPU、GPU的臺式及服務器中,或者使用單一的API應用在移動設備中。TensorFlow初是由研究人員和Google Brain團隊針對機器學習和深度神經(jīng)網(wǎng)絡進行研究而開發(fā)的,目前開源之后幾乎可以在各種領域使用。
目前TensorFlow是全世界使用人數(shù)多、社區(qū)為龐大的一個框架,因為Google公司出品,所有維護和更新也比較頻繁,并且有著Python和C++的接口,教程也非常完善。同時很多論文復現(xiàn)的第一個版本都是基于TensorFlow寫的,所以是深度學習界框架默認的老大。
由于其語言太過于底層,目前有很多基于TensorFlow的第三方抽象庫將TensorFlow的函數(shù)進行封裝,使其變得簡潔。目前比較有名的幾個是Keras、Tflearn、tfslim以及TensorLayer。
Theano
Theano于2008年誕生于蒙特利爾理工學校,其派生出來大量深度學習Python軟件包,著名的包括Blocks和Keras。Theano的核心是一個數(shù)學表達式的編譯器,他知道如何獲取你的結構,并使之成為一個使用numpy、高效本地庫的高效代碼,如BLAS和本地代碼(C++),在CPU或GPU上盡可能快地運行。它是為深度學習中處理大型神經(jīng)網(wǎng)絡算法所學的計算而專門設計的,是這類庫的首創(chuàng)之一(發(fā)展始于2007年),被認為是深度學習研究和開發(fā)的行業(yè)標準。
但目前開發(fā)Theano的研究人員大多去了Google參與TensorFlow的開發(fā),所以從某種程度來講TensorFlow就像是Theano的孩子。
Torch
Torch是一個有大量機器學習算法支持的科學計算框架,其誕生已經(jīng)有十年之久,但真正起勢得益于Facebook開源了大量的Torch的深度學習模塊和擴展。Torch的特點在于特別靈活,但是另外一個特殊之處是采用Lua,在目前深度學習大部分以Python為編程語言的大環(huán)境之下,一個以Lua為編程語言的框架有著更多的劣勢,這一小眾語言增加了學習使用Torch這個框架的成本。
PyTorch的前身便是Torch,其底層和Torch框架一樣,但是使用Python重寫了很多內(nèi)容,不僅更加靈活,支持動態(tài)圖,也提供了Python接口。
PyTorch
PyTorch是由Torch7團隊開發(fā)的,從名字就可以看出,它跟Torch的不同之處在于PyTorch使用了Python作為開發(fā)語言。所謂“Python first”,同樣說明它是一個以Python優(yōu)先的深度學習框架,不僅能夠?qū)崿F(xiàn)強大的GPU加速,同時還支持動態(tài)神經(jīng)網(wǎng)絡,這是現(xiàn)在很多駐留框架比如TensorFlow等都不支持的。
PyTorch既可以看做加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經(jīng)網(wǎng)絡。
特點
PyTorch有以下特點:
支持GPU
動態(tài)神經(jīng)網(wǎng)絡
Python優(yōu)先
命令式體驗
輕松擴展
MXNet
MXNet的主要作者是李沐,早就是幾個人抱著純粹對技術和開發(fā)的熱情做起來的興趣項目,如今成為了亞馬遜的官方框架,有著非常好的分布式支持,而且性能特別好,占用顯存低,同時其開發(fā)的語言接口不僅僅有Python和C++,還有R、MATLAB、Scala、JavaScript等等,可以說能夠滿足使用任何語言的人。
但MXNet的缺點也很明顯,教程不夠完善,使用的人不夠多導致社區(qū)不大,同時每年很少有比賽和論文是基于MXNet實現(xiàn)的,這就使得MXNet的推廣力度和知名度不高。
除了上述介紹的框架,目前流行的深度學習框架還有很多很多,如Apache MXnet、Microsoft Cognitive Toolkit、DeepLearning4J等等。
研究者們使用各種不同的框架來達到不同的研究目的,很難說哪種好哪種不好。這也從側面印證了深度學習領域真的是萬紫千紅、百花齊放。相信通過我的介紹,讓你對深度學習的框架做到心中有數(shù),能夠選擇好自己手中的格斗武器。