深度框架比較TensorFlow,Theano,Caffe,Sklearn,Keras(少走彎路

Theano

Theano在深度學習框架中是祖師級的存在。Theano基於Python語言開發的,是一個擅長處理多維數組的庫,這一點和numpy很像。當與其他深度學習庫結合起來,它十分適合數據探索。它為執行深度學習中大規模神經網絡算法的運算所設計。其實,它可以被更好的理解為一個數學表達式的編輯器:用符號式語言定義你想要的結果,該框架會對你的程序進行編譯,來高效運行於GPU或CPU。它與後來出現的TensorFlow功能十分相似,因而兩者常常被放在一起比較。它們本身都偏底層,同樣的,Theano 像是一個研究平臺多過是一個深度學習庫。你需要從底層開始做許多工作,來創建你需要的模型。比方說,Theano 沒有神經網絡的分級。但由於它不支持多 GPU 和水平擴展,在 TensorFlow 的熱潮下(它們針對同一個領域),Theano 已然開始被遺忘了。

TensorFlow

TensorFlow是由google開源出來的,因為有google作為後臺,Tensorflow在深度學習領域一直很有名氣。TensorFlow是一個採用數據流圖,用於數值計算的開源軟件庫。它支持Python和C++兩種類型的接口。TensorFlow可支持分佈式計算,它靈活的架構讓你可以在多種平臺上展開計算,例如臺式計算機中的一個或多個CPU(或GPU),服務器,移動設備等等。

深度框架比較TensorFlow,Theano,Caffe,Sklearn,Keras(少走彎路

TensorFlow官方文檔中文版:www.beibq.cn/book/cw0v22

Caffe

Caffe是深度學習框架中的老牌中的老牌。Caffe有非常好的特性,但也有一些小缺點。起初的時候它並不是一個通用框架,而僅僅關注計算機視覺,但它具有非常好的通用性。Caffe 的缺點是它不夠靈活。如果你想給它來一點新改變,那你就需要使用 C++ 和 CUDA 編程,不過你也可以使用 Python 或 Matlab 接口進行一些小改變。Caffe的文檔非常貧乏。你需要花大量時間檢查代碼才能理解它。Caffe的最大缺點之一是它的安裝。它需要解決大量的依賴包,我曾經安裝過 Caffe 兩次,真正痛苦至極。但要清楚,Caffe 並不是一無是處。在投入了生產的計算機視覺系統的工具上,Caffe 是無可爭議的領導者。它非常穩健非常快速。我的建議是:用 Keras 進行實驗和測試,然後遷移到 Caffe 中進行生產。

SciKit-learn

scikit-learn是老牌的開源 Python 算法框架,始於 2007 年的 Google Summer of Code 項目,最初由 David Cournapeau 開發。它是一個簡潔、高效的算法庫,提供一系列的監督學習和無監督學習的算法,以用於數據挖掘和數據分析。SciKit-learn幾乎覆蓋了機器學習的所有主流算法,這為其在Python開源世界中奠定了江戶地位。它的算法庫建立在 SciPy (Scientific Python) 之上——你必須先安裝 SciPy 才能使用 SciKit-learn 。它的框架中一共包括了:NumPy: 基礎的多維數組包SciPy: 科學計算的基礎庫Matplotlib: 全面的 2D/3D 測繪IPython: 改進的交互控制器Sympy: 符號數學Pandas:數據結構和分析它命名的由來:SciPy 的擴展和模塊在傳統上被命名為 SciKits。而提供學習算法的模組就被命名為 scikit-learn。它與 Python 世界另一大算法框架——TensorFlow 的主要區別是:TensorFlow 更底層。而 SciKit-learn 提供了執行機器學習算法的模塊化方案,很多算法模型直接就能用。

Keras

keras是一個最低限度的、模塊化的神經網絡庫,可以使用Theano或TensorFlow作為後端。Keras最主要的用戶體驗是,從構思到產生結果將會是一個非常迅速的過程。在Keras中架構網絡設計是十分輕鬆自然的。它包括一些state-of-the-art中針對優化(Adam,RMSProp)、標準化(BatchNorm)和激活層(PReLU,ELU,LeakyReLU)最新的算法。Keras也非常注重卷積神經網絡,這也是我十分需要的。無論它是有意還是無意的,我覺得從計算機視覺的角度來看這是非常有價值的。更重要的是,你既可以輕鬆地構建基於序列的網絡(其中輸入線性流經網絡)又可以創建基於圖形的網絡(輸入可以“跳過”某些層直接和後面對接)。這使得創建像GoogLeNet和SqueezeNet這樣複雜的網絡結構變得容易得多。我認為Keras唯一問題是它不支持多GPU環境中並行地訓練網絡。這可能會也可能不會成為你的大忌。如果我想盡快地訓練網絡,那麼我可能會使用mxnet。但是如果我需要調整超參數,我就會用Keras設置四個獨立的實驗(分別在我的Titan X GPUs上運行)並評估結果。

總結

這幾個庫python中最常用的算是:TensorFlow、SciKit-learn、Theano、Keras,至於Caffe的話坑太多,自己斟酌吧,其中TensorFlow與Theano兩個可任意選其一(因為它們是針對同一領域),剩下的由於在不同領域優勢不一樣,無法說哪家強,而且在實際使用當中經常存在Scikit-learn + (TensorFlow or Theano) + Keras三個庫一起結合使用。這裡列出幾個有關深度學習相關的資料


分享到:


相關文章: