常用深度學習框架

2021-09-05 01:28:53 字數 2949 閱讀 7473

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

google

python/c++/go…

109115

67339

mxnet

dmlc

python/c++/r…

15162

5484

pytorch

facebook

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 被認為是構建神經網路的未來,...