2018.09.13
深度學習研究的熱潮持續高漲,各種開源深度學習框架也層出不窮,其中包括tensorflow、caffe、keras、cntk、torch7、mxnet、leaf、theano、deeplearning4、lasagne、neon等。我們參考開源的測試結果,結合自己整理的資料,針對主流的深度學習框架進行簡單對比及介紹。
框架機構
支援語言
stars
forks
caffe
bvlc
c++/python/matlab
25480
15560
cntk
microsoft
c++15083
4020
keras
fchollet
python
33332
12563
tensorflow
python/c++/go…
109115
67339
mxnet
dmlc
python/c++/r…
15162
5484
pytorch
python
18517
4426
執行於 ssd 硬碟框架
1xv100/cuda 9/cudnn 7
4xv100/cuda 9/cudnn 7
pytorch
27min
10min
keras(tf)
38min
18min
tensorflow
33min
22min
mxnet(gluon)
29min
10min
執行於ram記憶體中框架
1xv100/cuda 9/cudnn 7
4xv100/cuda 9/cudnn 7
pytorch
25min
8min
keras(tf)
36min
15min
tensorflow
25min
14min
mxnet(gluon)
28min
8min
2. 1000張推理時間(s): network resnet-50
框架k80/cuda 8/cudnn 6
p100/cuda 8/cudnn 6
cntk
8.51.6
keras(tf)
10.2
2.9tensorflow
6.51.8
mxnet
7.71.6
pytorch
7.71.9
3. cpu推理時間(s): e5-2630v4, network fcn5
框架1 thread
2 threads
4 threads
8 threads
16 threads
32 threads
caffe
1887.2ms
1316.7ms
1051.8ms
952.1ms
952.3ms
834.7ms
cntk
1238.7ms
616.3ms
352.7ms
229.5ms
155.9ms
192.4ms
tensorflow
992.2ms
773.6ms
419.3ms
252.3ms
149.7ms
124.7ms
mxnet
1386.8ms
915.5ms
559.0ms
499.1ms
416.3ms
413.9ms
框架安裝成本
**理解程度
api豐富程度
模型豐富程度
文件完整程度
訓練與測過程
學習資源
cntk
良好良好
良好良好
優秀良好
良好keras
良好良好
優秀優秀
良好優秀
良好mxnet
良好良好
良好良好
良好優秀
優秀pytorch
優秀優秀
良好良好
優秀良好
良好tensorflow
良好良好
優秀優秀
優秀優秀
優秀caffe
良好優秀
良好良好
優秀良好
優秀目前眾多的深度學習框架,使用者只要選擇適合自己的框架即可,我們在日常使用中,考慮到訓練的快捷程度,部署難度以及對cnn、rnn模型的直接程度,推薦以下幾款深度學習框架。
1.keras
keras 提供了簡單易用的 api 介面,入門快,特別適合初學者入門。其後端採用 tensorflow, cntk,以及 theano。另外,deeplearning4j 的 python 也是基於 keras 實現的。keras 幾乎已經成了 python 神經網路的介面標準。
2.tensorflow
谷歌出品,追隨者眾多。**質量高,支援模型豐富,支援語言多樣, tensorboard 視覺化工具使用方便。
3.mxnet
已被亞馬遜選為 aws 上的深度學習框架,支援動態圖計算。mxnet 有許多中國開發者,因而有非常良好的中文文件支援。gluon 介面使得 mxnet 像 keras 一樣簡單易用。
香港浸會大學深度學習框架benchmark
deeplearningframeworks
開發者如何選擇深度學習框架?
常用的深度學習框架
在深度學習中,一般通過誤差反向傳播演算法來進行引數學習。採用手工方式來計算梯度再寫 實現的方式會非常低效,並且容易出錯。此外,深度學習模型需要的計算機資源比較多,一般需要在cpu和gpu之間不斷進行切換,開發難度也比較大。因此,一些支援自動梯度計算 無縫cpu和gpu切換等功能的深度學習框架就應運而...
常用移動端深度學習框架
深度學習發展很快,最近又出現了幾個新的移動端前向框架,例如tengine和 tvm.我們還沒有對這兩個框架進行深入研究,但是在對應的wiki中,可以看到這兩個框架的速度對於現有框架都具有一定優勢,通過短暫的了解,tengine還是很不錯的,支援op跟模型種類都比較豐富,還支援gpu運算。感興趣的讀者...
深度學習框架
近一年來,深度學習的風起雲湧,產生了許多令人興奮的成果,同時,深度學習框架也是百家爭鳴。經過這一年的觀察,tensorflow 似乎成為了一種潮流,並且越來越多的框架開始為 keras 提供支援,它可能會成為一種標準。今後選擇keras框架作為深度學習的目標。keras 被認為是構建神經網路的未來,...