深入淺出TensorFlow(六)TensorFlow高層封裝

作者 | 鄭澤宇

AI前線出品| ID:ai-front

在前面的幾篇文章已經介紹了如何使用原生態TensorFlow API來實現各種不同的神經網路結構。雖然原生態的TensorFlow API可以很靈活的支持不同的神經網路結構,但是其代碼相對比較冗長,寫起來比較麻煩。為了讓TensorFlow用起來更加方便,可以使用一些TensorFlow的高層封裝。

目前對TensorFlow的主要封裝有4個:

第一個是TensorFlow-Slim;

第二個是tf.contrib.learn(之前也被稱為skflow);

第三個是TFLearn;

最後一個是Keras。

本文將大致介紹這幾種不同的高層封裝的使用方法,並通過其中常用的三種方式在MNIST數據集上實現卷積神經網路。

TensorFlow-Slim

TensorFlow-Slim是一個相對輕量級的TensorFlow高層封裝。通過TensorFlow-Slim,定義網路結構的代碼可以得到很大程度的簡化,使得整個代碼更加可讀。下面的代碼對比了使用原生態TensorFlow實現卷積層和使用TensorFlow-Slim實現卷積層的代碼:

從上面的代碼可以看出,使用TensorFlow-Slim可以大幅減少代碼量。省去很多與網路結構無關的變數聲明的代碼。雖然TensorFlow-Slim可以起到簡化代碼的作用,但是在實際應用中,使用TensorFlow-Slim定義網路結構的情況相對較少,因為它既不如原生態TensorFlow的靈活,也不如下面將要介紹的其他高層封裝簡潔。但除了簡化定義神經網路結構的代碼量,使用TensorFlow-Slim的一個最大好處就是它直接實現了一些經典的卷積神經網路,並且Google提供了這些神經網路在ImageNet上訓練好的模型。下表總結了通過TensorFlow-Slim可以直接實現的神經網路模型:

Google提供的訓練好的模型可以在github上tensorflow/models/slim目錄下找到。在該目錄下也提供了遷移學習的案例和代碼。

tf.contrib.learn

tf.contrib.learn是TensorFlow官方提供的另外一個對TensorFlow的高層封裝,通過這個封裝,用戶可以和使用sklearn類似的方法使用TensorFlow。通過tf.contrib.learn訓練模型時,需要使用一個Estimator對象。Estimator對象是tf.contrib.learn 進行模型訓練(train/fit)和模型評估(evaluation)的入口。

tf.contrib.learn模型提供了一些預定義的 Estimator,例如線性回歸(tf.contrib.learn.LinearRegressor)、邏輯回歸(tf.contrib.learn.LogisticRegressor)、線性分類(tf.contrib.learn.LinearClassifier)以及一些完全由全連接層構成的深度神經網路回歸或者分類模型(tf.contrib.learn.DNNClassifier、tf.contrib.learn.DNNRegressor)。

除了可以使用預先定義好的模型,tf.contrib.learn也支持自定義模型,下面的代碼給出了使用tf.contrib.learn在MNIST數據集上實現卷積神經網路的過程。更多關於tf.contrib.learn的介紹可以參考Google官方文檔。

tensorflow.org/get_star

TFLearn

TensorFlow的另外一個高層封裝TFLearn進一步簡化了tf.contrib.learn中對模型定義的方法,並提供了一些更加簡潔的方法來定義神經網路的結構。和上面兩個高層封裝不一樣,使用TFLearn需要單獨安裝,安裝的方法為:

pip install tflearn

下面的代碼介紹了如何通過TFLearn來實現卷積神經網路。更多關於TFLearn的用法介紹可以參考TFLearn的官方網站(tflearn.org/

運行上面的代碼,可以得到類似如下的輸出:

Keras

Keras是一個基於TensorFlow或者Theano的高層API,在安裝好TensorFlow之後可以通過以下命令可以安裝:

下面的代碼介紹了如何通過Keras來實現卷積神經網路。更多關於Keras的用法介紹可以參考Keras的官方網站(tflearn.org/

運行上面的代碼,可以得到類似如下的輸出:

作者介紹

鄭澤宇,才雲首席大數據科學家,前谷歌高級工程師。從 2013 年加入谷歌至今,鄭澤宇作為主要技術人員參與並領導了多個大數據項目,擁有豐富機器學習、數據挖掘工業界及科研項目經驗。2014 年,他提出產品聚類項目用於銜接谷歌購物和谷歌知識圖譜(Knowledge Graph)數據,使得知識卡片形式的廣告逐步取代傳統的產品列表廣告,開啟了谷歌購物廣告在搜索頁面投遞的新紀元。他於2013 年 5 月獲得美國 Carnegie Mellon University(CMU)大學計算機碩士學位, 期間在頂級國際學術會議上發表數篇學術論文,並獲得西貝爾獎學金。


-全文完-

關注人工智慧的落地實踐,與企業一起探尋 AI 的邊界,AICon 全球人工智慧技術大會火熱售票中,8 折倒計時一周搶票,詳情點擊:

t.cn/Rl2MftP

《深入淺出TensorFlow》迷你書現已發布,關注公眾號「AI前線」,ID:ai-front,回復關鍵字:TF,獲取下載鏈接!


推薦閱讀:

TF使用例子-情感分類
tf.set_random_seed
資源|100精品開源項目助你成為TensorFlow專家(一)
CNN中卷積層的計算細節
tensorflow讀取數據-tfrecord格式

TAG:TensorFlow | 人工智能 |