深度學習框架caffe/CNTK/Tensorflow/Theano/Torch的對比

在單GPU下,全部這些工具集都調用cuDNN,所以只要外層的計算或者內存分配差別不大其性能表現都差很少。前端

Caffe:python

1)主流工業級深度學習工具,具備出色的卷積神經網絡實現。在計算機視覺領域Caffe仍然是最流行的工具包,他有不少擴展,可是因爲c++

一些遺留的架構問題,它對遞歸網絡和語言建模的支持不好。此外,在caffe種圖層須要使用C++定義,而網絡則使用protobuf定義。編程

2)caffe支持pycaffe接口,但這僅僅是用來輔助命令行接口的,而即使是是使用pycaffe也必須使用Protobuf.c#

3)基於C++,所以能夠在多種是設備上編譯,具備跨平臺性,在部署方面是最佳選擇。網絡

4)性能簡單快速架構

5)算平均水準,痛點在於須要使用C++定義圖層,而模型須要使用protobuf定義。若是想支持CPU和GPU,用戶還必須實現額外的函數如,Forward_gpu和Backward_gpu;框架

對於自定義的層類型,還必須爲其分配一個int類型的ID,並將其添加到proto文件中。模塊化

 

CNTK:函數

1)目前已經發展成爲一個通用的、平臺獨立的深度學習系統。

2)沒有python或者其餘高級語言的接口。

3)與Caffe同樣,也是基於C++而且是跨平臺的,部署很是簡單,但它不支持ARM構架,這限制了其在移動設備上的能力。

4)性能簡單快速

 

TensorFlow:

1)是一個理想的RNN(遞歸網絡神經)API和實現,TensorFlow使用向量運算的符號圖方法,使得新網絡的指定變得至關容易,但TensorFlow

並不支持雙向RNN和3D卷積,同時公共版本的圖定義也不支持循環和條件控制,這使得RNN的實現並不理想,由於必需要使用Python循環且

沒法進行圖編譯優化。

2)支持python和c++接口。

3)因爲它使用了Eigen而不是BLAS類庫,因此可以基於ARM架構編譯和優化。用戶能夠將訓練好的模型部署到多種設備上面,不須要實現單獨的

模型解碼器或者加載python/LuaJIT解釋器。他的模型能夠部署到Windows設備上。

4)架構清晰,採用模塊化設計,支持多種前端和執行平臺

Theano:

1)支持大部分的先進網絡,如今不少研究想法都源於Theano,他引領了符號圖在編程網絡中使用的趨勢,Theano的符號API支持循環控制,讓

RNN實現更加容易且高效。

2)支持python接口

3)缺乏底層接口,而且其python解釋器也很低效,對工業用戶而言缺乏吸引力。跨平臺,模型可以部署到Windows環境上。

4)架構變態,整個代碼庫都是Python的,就來你C/cuda代碼也要被打包爲Python字符串,這使得它難以導航、調試、重構和維護。

 

Torch:

1)對卷積網絡的支持很是好。TensorFlow和Theano中時域卷積能夠經過conv2d來實現,但這樣作有點取巧;

2)在luaJIT上運行,與c++\c#以及JAVA比較,速度至關快,性能更好,可是Lua不是主流的語言。

3)須要LuaJIT的支持,集成方面難度大,使得他的吸引力不如Caffe\CNTK\TensorFlow等直接支持C++框架。

 

Caffe、CNTK、TensorFlow和Theano都在全部的系統上運行,而Torch不支持Windows。

相關文章
相關標籤/搜索