導(dǎo)讀:近幾年隨著深度學(xué)習(xí)算法的發(fā)展,出現(xiàn)了許多深度學(xué)習(xí)框架。這些框架各有所長,各具特色。常用的開源框架有TensorFlow、Keras、Caffe、PyTorch、Theano、CNTK、MXNet、PaddlePaddle、Deeplearning4j、ONNX等。
框架名稱:TensorFlow
主要維護方:Google
框架名稱:Keras
主要維護方:Google
支持的語言:Python/R
框架名稱:Caffe
主要維護方:BVLC
支持的語言:C++/Python/Matlab
框架名稱:PyTorch
主要維護方:Facebook
支持的語言:C/C++/Python
框架名稱:Theano
主要維護方:UdeM
支持的語言:Python
框架名稱:CNTK
主要維護方:Microsoft
支持的語言:C++/Python/C#/.NET/Java/R
框架名稱:MXNet
主要維護方:DMLC
支持的語言:C++/Python/R等
框架名稱:PaddlePaddle
主要維護方:Baidu
支持的語言:C++/Python
框架名稱:Deeplearning4j
主要維護方:Eclipse
支持的語言:Java/Scala等
框架名稱:ONNX
主要維護方:Microsoft/ Facebook
支持的語言:Python/R
下面開始對各框架進行概述,讓讀者對各個框架有個簡單的認知,具體的安裝及使用方法不在本文贅述。
01 TensorFlow
谷歌的TensorFlow可以說是當今最受歡迎的開源深度學(xué)習(xí)框架,可用于各類深度學(xué)習(xí)相關(guān)的任務(wù)中。TensorFlow = Tensor + Flow,Tensor就是張量,代表N維數(shù)組;Flow即流,代表基于數(shù)據(jù)流圖的計算。
TensorFlow是目前深度學(xué)習(xí)的主流框架,其主要特性如下所述。
TensorFlow支持Python、JavaScript、C ++、Java、Go、C#、Julia和R等多種編程語言。
TensorFlow不僅擁有強大的計算集群,還可以在iOS和Android等移動平臺上運行模型。
TensorFlow編程入門難度較大。初學(xué)者需要仔細考慮神經(jīng)網(wǎng)絡(luò)的架構(gòu),正確評估輸入和輸出數(shù)據(jù)的維度和數(shù)量。
TensorFlow使用靜態(tài)計算圖進行操作。也就是說,我們需要先定義圖形,然后運行計算,如果我們需要對架構(gòu)進行更改,則需要重新訓(xùn)練模型。選擇這樣的方法是為了提高效率,但是許多現(xiàn)代神經(jīng)網(wǎng)絡(luò)工具已經(jīng)能夠在學(xué)習(xí)過程中改進,并且不會顯著降低學(xué)習(xí)速度。在這方面,TensorFlow的主要競爭對手是PyTorch。
RStudio提供了R與TensorFlow的API接口,RStudio官網(wǎng)及GitHub上也提供了TensorFlow擴展包的學(xué)習(xí)資料。
02 Keras
Keras是一個對小白用戶非常友好且簡單的深度學(xué)習(xí)框架。如果想快速入門深度學(xué)習(xí), Keras將是不錯的選擇。
Keras是TensorFlow高級集成API,可以非常方便地和TensorFlow進行融合。Keras在高層可以調(diào)用TensorFlow、CNTK、Theano,還有更多優(yōu)秀的庫也在被陸續(xù)支持中。Keras的特點是能夠快速搭建模型,是高效地進行科學(xué)研究的關(guān)鍵。
Keras的基本特性如下:
高度模塊化,搭建網(wǎng)絡(luò)非常簡潔;
API簡單,具有統(tǒng)一的風格;
易擴展,易于添加新模塊,只需要仿照現(xiàn)有模塊編寫新的類或函數(shù)即可。
RStudio提供了R與Keras的API接口,RStudio的官網(wǎng)及GitHub上也提供了Keras擴展包的學(xué)習(xí)資料。
03 Caffe
Caffe是由AI科學(xué)家賈揚清在加州大學(xué)伯克利分校讀博期間主導(dǎo)開發(fā)的,是以C++/CUDA代碼為主的早期深度學(xué)習(xí)框架之一,比TensorFlow、MXNet、PyTorch等都要早。Caffe需要進行編譯安裝,支持命令行、Python和Matlab接口,單機多卡、多機多卡等都可以很方便使用。
Caffe的基本特性如下。
以C++/CUDA/Python代碼為主,速度快,性能高。
工廠設(shè)計模式,代碼結(jié)構(gòu)清晰,可讀性和可拓展性強。
支持命令行、Python和Matlab接口,使用方便。
工具豐富,社區(qū)活躍。
同時,Caffe的缺點也比較明顯,主要包括如下幾點。
源代碼修改門檻較高,需要實現(xiàn)正向/反向傳播。
不支持自動求導(dǎo)。
不支持模型級并行,只支持數(shù)據(jù)級并行。
不適合非圖像任務(wù)。
雖然Caffe已經(jīng)提供了Matlab和Python接口,但目前不支持R語言。caffeR為Caffe提供了一系列封裝功能,允許用戶在R語言上運行Caffe,包括數(shù)據(jù)預(yù)處理和網(wǎng)絡(luò)設(shè)置,以及監(jiān)控和評估訓(xùn)練過程。該包還沒有CRAN版本,感興趣的讀者可以在GitHub找到caffeR包的安裝及使用的相關(guān)內(nèi)容。
04 PyTorch
PyTorch是Facebook團隊于2017年1月發(fā)布的一個深度學(xué)習(xí)框架,雖然晚于TensorFlow、Keras等框架,但自發(fā)布之日起,其受到的關(guān)注度就在不斷上升,目前在GitHub上的熱度已經(jīng)超過Theano、Caffe、MXNet等框架。
PyTroch主要提供以下兩種核心功能:
支持GPU加速的張量計算;
方便優(yōu)化模型的自動微分機制。
PyTorch的主要優(yōu)點如下。
簡潔易懂:PyTorch的API設(shè)計相當簡潔一致,基本上是tensor、autograd、nn三級封裝,學(xué)習(xí)起來非常容易。
便于調(diào)試:PyTorch采用動態(tài)圖,可以像普通Python代碼一樣進行調(diào)試。不同于TensorFlow,PyTorch的報錯說明通常很容易看懂。
強大高效:PyTorch提供了非常豐富的模型組件,可以快速實現(xiàn)想法。
05 Theano
Theano誕生于2008年,由蒙特利爾大學(xué)的LISA實驗室開發(fā)并維護,是一個高性能的符號計算及深度學(xué)習(xí)框架。它完全基于Python,專門用于對數(shù)學(xué)表達式的定義、求值與優(yōu)化。得益于對GU的透明使用,Theano尤其適用于包含高維度數(shù)組的數(shù)學(xué)表達式,并且計算效率比較高。
因Theano出現(xiàn)的時間較早,后來涌現(xiàn)出一批基于Theano的深度學(xué)習(xí)庫,并完成了對Theano的上層封裝以及功能擴展。在這些派生庫中,比較著名的就是本書要學(xué)習(xí)的Keras。Keras將一些基本的組件封裝成模塊,使得用戶在編寫、調(diào)試以及閱讀網(wǎng)絡(luò)代碼時更加清晰。
06 CNTK
CNTK(Microsoft Cognitive Toolkit)是微軟開源的深度學(xué)習(xí)工具包,它通過有向圖將神經(jīng)網(wǎng)絡(luò)描述為一系列計算步驟。在有向圖中,葉節(jié)點表示輸入值或網(wǎng)絡(luò)參數(shù),其他節(jié)點表示其輸入上的矩陣運算。
CNTK允許用戶非常輕松地實現(xiàn)和組合流行的模型,包括前饋神經(jīng)網(wǎng)絡(luò)(DNN)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)和循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN、LSTM)。與目前大部分框架一樣,CNTK實現(xiàn)了自動求導(dǎo),利用隨機梯度下降方法進行優(yōu)化。
CNTK的基本特性如下。
CNTK性能較好,按照其官方的說法,它比其他的開源框架性能都要好。
適合做語音任務(wù),CNTK本就是微軟語音團隊開源的,自然更適合做語音任務(wù),便于在使用RNN等模型以及時空尺度時進行卷積。
微軟開發(fā)的CNTK-R包提供了R與CNTK的API接口。
07 MXNet
MXNet框架允許混合符號和命令式編程,以最大限度地提高效率和生產(chǎn)力。MXNet的核心是一個動態(tài)依賴調(diào)度程序,可以動態(tài)地自動并行化符號和命令操作。其圖形優(yōu)化層使符號執(zhí)行更快,內(nèi)存效率更高。
MXNet的基本特性如下。
靈活的編程模型:支持命令式和符號式編程模型。
多語言支持:支持C++、Python、R、Julia、JavaScript、Scala、Go、Perl等。事實上,它是唯一支持所有R函數(shù)的構(gòu)架。
本地分布式訓(xùn)練:支持在多CPU/GPU設(shè)備上的分布式訓(xùn)練,使其可充分利用云計算的規(guī)模優(yōu)勢。
性能優(yōu)化:使用一個優(yōu)化的C++后端引擎實現(xiàn)并行I/O和計算,無論使用哪種語言都能達到最佳性能。
云端友好:可直接與S3、HDFS和Azure兼容。
08 ONNX
ONNX(Open Neural Network eXchange,開放神經(jīng)網(wǎng)絡(luò)交換)項目由微軟、亞馬遜、Facebook和IBM等公司共同開發(fā),旨在尋找呈現(xiàn)開放格式的深度學(xué)習(xí)模型。ONNX簡化了在人工智能不同工作方式之間傳遞模型的過程,具有各種深度學(xué)習(xí)框架的優(yōu)點。
ONNX的基本特性如下。
ONNX使模型能夠在一個框架中進行訓(xùn)練并轉(zhuǎn)移到另一個框架中進行預(yù)測。
ONNX模型目前在Caffe2、CNTK、MXNet和PyTorch中得到支持,并且還有與其他常見框架和庫的連接器。
onnx-r包提供了R與ONNX的API接口。
關(guān)于作者:謝佳標,資深AI技術(shù)專家和數(shù)據(jù)挖掘?qū)<?,擁有超過14年的技術(shù)研發(fā)和管理經(jīng)驗。精通Python和Keras等深度學(xué)習(xí)框架,在數(shù)據(jù)挖掘和人工智能技術(shù)領(lǐng)域有非常深厚的積累。連續(xù)6年(2017~2022年)被微軟評為數(shù)據(jù)科學(xué)和AI方向MVP。資深R語言技術(shù)專家,“中國現(xiàn)場統(tǒng)計研究會大數(shù)據(jù)統(tǒng)計分會”第一屆理事。歷屆中國R語言和數(shù)據(jù)科學(xué)大會特邀演講嘉賓,受邀在國內(nèi)多所高校舉行以數(shù)據(jù)主題的公益講座。
審核編輯:符乾江
-
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5463瀏覽量
120891 -
遷移學(xué)習(xí)
+關(guān)注
關(guān)注
0文章
74瀏覽量
5554
發(fā)布評論請先 登錄
相關(guān)推薦
評論