加日拉·買買提熱衣木 常富蓉 劉晨 要秀宏
摘要 目前使用的深度學習框架較多,每個框架都有自己的特點。這些深度學習框架都完美支持深度神經網絡,深度學習訓練模型通常是建立在大數據基礎上,但是性能和訓練成本有所不同。本文對比TensorFlow、Caffe、MXNet等5個主流的深度學習框架,分別簡述各自的優(yōu)點和缺點。
【關鍵詞】TensorFlow 深度學習 Caffe
1 框架對比
1.1 TensorFlow
對于剛開始學深度學習的人來說,它是他們最喜歡的深度學習框架,但在這里我想強調一個事實。在它的官網上,它被定義為一個用于機器智能的開源軟件庫,但我覺得應該這么定義:它是一個使用數據流圖進行數值計算的開源軟件庫。在這里,他們沒有將它包含在深度學習框架范圍內,而是和Theano -起被包含在圖編譯器類別中。
1.1.1 TensorFlow的優(yōu)點
(1)將科研和產品聯(lián)系在一起。在谷歌,科學家用它嘗試新的算法,產品團隊則用它來訓練和使用計算模型,并直接提供給在線用戶。
(2)真正的可移植性。它在CPU和GPU上運行,比如說可以運行在臺式機、服務器、手機移動設備等等。
(3)高度的靈活性。它不是一個嚴格的“神經網絡”庫。只要你可以將你的計算表示為一個數據流圖。
(4)支持多種語言。
(5)性能最優(yōu)化。由于它給予了線程、隊列、異步操作等以最佳的支持。
1.1.2 TensorFlow的缺點
(1)調試較難,調試時出現各種古怪的小問題較多。
(2)底層接口寫起來繁瑣,高層接口又不靈活,而且它的高層封裝不好實現。
(3)它主要面向超大數據量的訓練,因此計算速度相對較慢。
(4)各個版本之間的兼容性較差,需要進一步完善。
1.2 Keras
Keras是一個高層神經網絡API,它由純Python編寫而成并基Tensorflow、Theano以及CNTK后端。它的句法是相當明晰的,學習文檔也非常好,而且它支持Python語言。我們也能很直觀地了解它的指令、函數和每個模塊之間的鏈接方式。用它實現一個功能非常簡,只需幾行代碼就能構建一個神經網絡。
1.2.1 Keras的優(yōu)點
(1)簡易和快速的原型設計。
(2)支持CNN和RNN,或二者的結合。
(3)無縫CPU和GPU切換。
(4)學習較容易。
1.2.2 Keras的缺點
(1)不支持seq2seq,因此實現NLP功能較復雜。
(2) 在TensorFlow backend時,
比TensorFlow較慢。
(3)沒有增強學習工具箱,自己修改實現很麻煩。
(4)封裝得較高級,訓練細節(jié)不能修改,不合適算法研究。
1.3 Caffe
它不只是最老牌的框架之一,而是老牌中的老牌。起初的時候它并不是一個通用框架,而僅僅關注計算機視覺,但它具有非常好的通用性。平時CaffeNet架構的訓練時間在它中比在Keras中少5倍。如果想給它來一點新改變,那就需要使用C++和CUDA編程,不過也可以使用Python或Matlab接口進行一些小改變。它在圖像處理、視頻處理領域廣泛應用。
1.3.1 Caffe的優(yōu)點
(1)速度快。谷歌數據標準提升了效率。
(2)采用此模型的論文較多。
(3)相對穩(wěn)定。
(4)遷移性較好。
1.3.2 Caffe的缺點
(1)安裝調試較難。
(2)各個版本之間的兼容性較差。
(3)學習文檔較少。
(4)不夠靈活。
1.4 MXNet
它致力于提供兼顧性能與靈活性的深度學習框架。作為亞馬遜的優(yōu)秀深度學習框架,它也算是性能最好的深度學習框架之一。它提供了類似于Theano與TensorFlow的數據流圖,并且支持多GPU配置,提供了類似于Lasagne與Blocks的相對高階的模型構建快,還能運行在多種硬件設備上。它提供了基于Python、R、Julia、C++、Scala、Matlab、JavaScript的多種接口。如果專注于效率,那么它是較好的選擇。
1.4.1 MXNet的優(yōu)點
(1)相當快的評測結果。
(2)徹底的靈活性。
(3)支持多GPU訓練。
(4)支持多種設備。
1.4.2 MXNet的缺點
(1)學習社區(qū)較小,學習文檔較少。
(2)數據流圖比Theano差。
(3)安裝調試較麻煩。
1.5 CNTK
它是微軟公司在深度學習與人工智能領域的研究成果計算網絡工具。據微軟研究員說法,它在語音和圖像辨識能力方面。在公開的基準測試上的表現來看,這個工具似乎很強勁,支持縱向和橫向的推移。它目前支持的語言是C++,微軟將來會推出支持C#和Python語言的版本。
1.5.1 CNTK的優(yōu)點
(1)速度較快。
(2)支持多GPU訓練。
(3)很容易上手。
(4)學習文檔較規(guī)范。
1.5.2 CNTK的缺點
(1)學習社區(qū)較小。
(2)不支持移動設備。
(3)只支持C++語言。
參考文獻
[1]何希平,劉波,深度學習理論與實踐[M].北京:科學出版社,2017.
[2]張重生,深度學習:原理與應用實踐[M].北京:電子工業(yè)出版社,2016,
[3]阿布胥嘉幸,機器學習之路[M].北京:電子工業(yè)出版社,2017.
[4] Antonio Gulli. Deep Learning withKeras [M]. Packt Publishing, 2017.
[5]樂毅.深度學習 Caffe之經典模型詳解與實戰(zhàn)[M].北京:電子工業(yè)出版社.2016.
[6]謝梁.Keras快速上手:基于Py thon的深度學習實戰(zhàn)[M].北京:電子工業(yè)出版社.2017.