技術 | 「深度學習」八大開源框架之TensorFlow

在介紹TensorFlow之前,我們先看一下 機器學習VS 深度學習在演算法上有何區別

機器學習演算法的分類有兩個階段:

訓練階段:在這個階段,機器學習演算法使用由圖像及相應標籤組成的數據集。

預測階段:在這個階段,一般利用訓練模型來預測圖像標籤。

圖像分類問題的訓練階段主要有兩個步驟:

特徵提取:在這個階段,我們利用領域知識來提取一些由機器學習演算法使用的新特徵。 HoG和SIFT就是兩個示例。

模型訓練:在這個階段,我們利用由圖像特徵和相應的標籤組成的凈數據集來訓練機器學習模型。

在預測階段,我們對新圖像應用相同的特徵提取過程,並將特徵傳遞給機器學習演算法以用來預測標籤。

傳統機器學習和深度學習演算法的主要區別在於特徵(feature)。 在傳統的機器學習演算法中,我們需要手工編碼特徵。 相比之下,在深度學習演算法中,特徵由演算法自動完成。 這個過程不太容易,而且耗時,很需要專業領域的相關知識。 與具有較少或沒有特徵工程的傳統機器學習相比,深度學習目標是更準確做到機器學習演算法。

下面我們初步認識一下深度學習八大開源演算法框架之一的

Google創建了TensorFlow (TF)來取代Theano。這兩個事實上是非常相似的。 Theano的一些創作者,如Ian Goodfellow,在離開OpenAI之前,在Google上創建了Tensorflow。

目前,TensorFlow不支持所謂的「內聯」矩陣操作,但強制複製矩陣以便對其執行操作。但是無論從哪個角度看,複製大矩陣的成本都是很高的。 TF所需是深度學習工具的4倍。 這也是Google正在處理的問題。

像大多數深層學習框架一樣,TensorFlow是通過C / C ++引擎使用Python API編寫的,使其運行速度快。但它不是Java和Scala的解決方案。

TensorFlow不僅僅是深度學習。 它實際上還有工具可以來支持強化學習和其他algos。

谷歌公認的Tensorflow的目標似乎是招聘,共享他們研究人員的代碼,標準化軟體工程師如何深入學習的過程,並創建一個額外的圖表到谷歌雲服務,以此優化TensorFlow。

Google並不支持TensorFlow商業化,並且Google也不太可能支持開源企業軟體的業務。

像Theano一樣,TensforFlow生成計算圖(例如,一系列矩陣運算,例如z = sigmoid(x),其中x和z是矩陣)並會自動分化。自動分化是很重要的,因為在每次嘗試新的神經網路安排時,你不想手動編碼一個新的反向傳播的變體。在Google的生態系統中,Google Brain使用的計算圖表非常繁瑣,但Google尚未開放這些工具。 TensorFlow是Google內部深度學習的一半解決方案。

從企業的角度來看,一些公司需要回答的問題是他們是否想依賴Google來獲取這些工具。

注意:在Tensorflow中不是所有的操作像在Numpy中一樣可行。

Tensor Flow的優點和缺點

(+)Python + Numpy

(+)計算圖抽象,如Theano

(+)比Theano更快的編譯時間

(+)TensorBoard

(+)數據和模型並行性

( - )比其他框架慢

( - )比Torch更有「魔性」

( - )沒有很多預訓練模型

( - )計算圖是純Python,因此很慢

( - )無商業支持

( - )退出到Python載入每個新的訓練批處理

( - )不是很方便

( - )動態類型在大型軟體項目中容易出錯

那TensorFlow還有哪些特點呢?

我們來看一下李尊的總結:

機動性: TensorFlow並不只是一個規則的neural network庫,事實上如果你可以將你的計算表示成data flow graph的形式,就可以使用TensorFlow。用戶構建graph,寫內層循環代碼驅動計算,TensorFlow可以幫助裝配子圖。定義新的操作只需要寫一個Python函數,如果缺少底層的數據操作,需要寫一些C++代碼定義操作。

可適性強: 可以應用在不同設備上,cpus,gpu,移動設備,雲平台等

自動差分: TensorFlow的自動差分能力對很多基於Graph的機器學習演算法有益

多種編程語言可選: TensorFlow很容易使用,有python介面和C++介面。其他語言可以使用SWIG工具使用介面。(SWIG—Simplified Wrapper and Interface Generator, 是一個非常優秀的開源工具,支持將 C/C++ 代碼與任何主流腳本語言相集成。)

最優化表現: 充分利用硬體資源,TensorFlow可以將graph的不同計算單元分配到不同設備執行,使用TensorFlow處理副本。

如何大家想更深入的學習TensorFlow,請聯繫我們的課程負責人Elaine,太閣為你提供專業實用的精品課程:

DS401深度學習TENSORFLOW第二期

參考文獻:

A Practical Introduction to Deep Learning with Caffe and Python

深度學習--你需要了解的八大開源框架 | 雷鋒網

Deep Learning Comp Sheet: Deeplearning4j vs. Torch vs. Theano vs. Caffe vs. TensorFlow vs. MxNet vs. CNTK


推薦閱讀:

S 1.1 機器學習-樸素貝葉斯與單層神經網路關係
TensorFlow會話的配置項
機器學習:通過深度神經網路再識評估器
TensorFlow Tutorial-1

TAG:TensorFlow | 深度学习DeepLearning | 人工智能 |