當前位置:
首頁 > 最新 > 深度學習框架的優缺點介紹

深度學習框架的優缺點介紹

Summary:Deep Learning Tools

翻譯:Amusi

來源:easy-tensorflow

.前言

在本文中,我們將介紹和比較當前最流行的深度學習框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),這將會幫助你為你的應用來選擇最合適的框架。

1. Caffe:第一個主流產品級深度學習庫,於 2014 年由 UC Berkeley 啟動。

優點:

快速

支持 GPU

支持 Matlab 和 Python 介面

缺點:

不靈活。在 Caffe 中,每個節點被當做一個層,因此如果你想要一種新的層類型,你需要定義完整的前向、後向和梯度更新過程。這些層是網路的構建模塊,你需要在無窮無盡的列表中進行選擇。(相反,在 TensorFlow 中,每個節點被當做一個張量運算例如矩陣相加、相乘或卷積。你可以輕易地定義一個層作為這些運算的組合。因此 TensorFlow 的構建模塊更小巧,允許更靈活的模塊化。)

需要大量的非必要冗長代碼。如果你希望同時支持 CPU 和 GPU,你需要為每一個實現額外的函數。你還需要使用普通的文本編輯器來定義你的模型。真令人頭疼!幾乎每個人都希望程序化地定義模型,因為這有利於不同組件之間的模塊化。有趣的是,Caffe 的主要架構師現在在 TensorFlow 團隊工作(PS:還有在Facebook團隊工作)。

專一性。僅定位在計算機視覺(但做得很不錯)。

不是以 Python 編寫!如果你希望引入新的變動,你需要在 C++和 CUDA 上編程(對於更小的變動,你可以使用它的 Python 和 Matlab 介面)。

糟糕的文檔。

安裝比較困難!有大量的依賴包(如OpenCV、glog和gflags等)。

只有少量種類的輸入格式,僅有一種輸出格式 HDF5(雖然你總是可以使用它的 Python/C++/Matlab 介面來運行,並從中得到輸出數據)。

不適用於構建循環網路(recurrent networks)。

2. Theano:由蒙特利爾大學研究團隊構建。Theano 的頂層構建了數值開源深度庫,包括 Keras、Lasagne 和 Blocks。Yoshua Bengio 在 2017 年 9 月 28 日宣布,Theano 的開發將終止。因此實際上 Theano 已死!

優點:

計算圖很漂亮(可媲美 TensorFlow)

為 CPU 和 GPU 都做了優化

很好地適應數值優化任務

高級封裝(Keras、Lasagne)

缺點:

原始的 Theano 只有比較低級的 API

大型模型可能需要很長的編譯時間

不支持多 GPU

錯誤信息可能沒有幫助(有時候令人懊惱)

3. Pytorch:2017 年 1 月,Facebook 將 Python 版本的 Torch 庫(用 Lua 編寫)開源。

優點:

提供動態計算圖(意味著圖是在運行時生成的),允許你處理可變長度的輸入和輸出,例如,在使用 RNN 時非常有用。

另一個例子是,在 PyTorch 中,可以使用標準 Python 語法編寫 for 循環語句。

大量預訓練模型

大量易於組合的模塊化組件

易於編寫自己的圖層類型,易於在 GPU 上運行

「TensorBoard」缺少一些關鍵功能時,「Losswise」可以作為 Pytorch 的替代品

缺點:

正式文檔以外的參考資料/資源有限

無商業支持

4. TensorFlow:由較低級別的符號計算庫(如 Theano)與較高級別的網路規範庫(如 Blocks 和 Lasagne)組合而成。

優點:

由谷歌開發、維護,因此可以保障支持、開發的持續性。

巨大、活躍的社區

網路訓練的低級、高級介面

「TensorBoard」是一款強大的可視化套件,旨在跟蹤網路拓撲和性能,使調試更加簡單。

用 Python 編寫(儘管某些對性能有重要影響的部分是用 C++實現的),這是一種頗具可讀性的開發語言

支持多 GPU。因此可以在不同的計算機上自由運行代碼,而不必停止或重新啟動程序

比基於 Theano 的選項更快的模型編譯

編譯時間比 Theano 短

TensorFlow 不僅支持深度學習,還有支持強化學習和其他演算法的工具。

缺點:

計算圖是純 Python 的,因此速度較慢

圖構造是靜態的,意味著圖必須先被「編譯」再運行

5. Keras:Keras 是一個更高級、對用戶最友好的 API,具有可配置的後端,由 Google Brain 團隊成員 Francis Chollet 編寫和維護。

優點:

提供高級 API 來構建深度學習模型,使其易於閱讀和使用

編寫規範的文檔

大型、活躍的社區

位於其他深度學習庫(如 Theano、TensorFlow 和 MXNet,可配置)之上

使用面向對象的設計,因此所有內容都被視為對象(如網路層、參數、優化器等)。所有模型參數都可以作為對象屬性進行訪問。

例如:

model.layers[3].output 將提供模型的第三層

model.layers[3].weights 是符號權重張量的列表

缺點:

由於用途非常普遍,所以在性能方面比較欠缺

與 TensorFlow 後端配合使用時會出現性能問題(因為並未針對其進行優化),但與 Theano 後端配合使用時效果良好

不像 TensorFlow 或 PyTorch 那樣靈活

【附件】深度學習工具排名:

Tensorflow, 29.9%

Keras, 22.2%

PyTorch, 6.4%

Theano, 4.9%

Other Deep Learning Tools, 4.9%

DeepLearning4J, 3.4%

Microsoft Cognitive Toolkit (Prev. CNTK), 3.0%

Apache MXnet, 1.5%

Caffe, 1.5%

Caffe2, 1.2%

TFLearn, 1.1%

Torch, 1.0%

Lasagne, 0.3%

溫馨提示:

--------我是可愛的分割線--------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 深度學習與神經網路 的精彩文章:

PyTorch 1.0震撼來襲!

TAG:深度學習與神經網路 |