一文讀懂TensorFlow 2.0高階API

在TensorFlow 2.0中對大量的高階API庫進行了刪減與合併,根據官方的解釋,這一切的變化都是爲了使TensorFlow2.0更加易用和簡潔。本文以官方推薦的唯一高階API庫tf.keras爲主,概括地介紹TensorFlow 2.0的高階API。

在TensorFlow 2.0版本中完全移除了tf.contrib這個高階API庫,官方推薦的高階API只有tf.keras。

Keras是一個意在降低機器學習編程入門門檻的項目,其在業界擁有衆多的擁護者和使用者。經過Keras社區的多年發展,Keras集成了很多符合工業和研究需求的高階API,使用這些API只需要幾行代碼就可以構建和運行一個非常複雜的神經網絡。TensorFlow官方社區首次宣佈發佈TensorFlow 2.0版本計劃時就明確了Keras會深度融合到TensorFlow中,並且作爲官方支持的高階API。下面我們看看官方文檔中提到的tf.keras下的接口模塊。

 ♣ activations: tf.keras.actibations中包含了當前主流的激活函數,可以直接通過該API進行激活函數的調用。

♣ applications: tf.keras.applications中包含的是已經進行預訓練的神經網絡模型,可以直接進行預測或者遷移學習。目前該模塊中包含了主流的神經網絡結構。

♣ backend: tf.keras.backend中包含了Keras後臺的一些基礎API接口,用於實現高階API或者自己構建神經網絡。

♣ datasets: tf.keras.datasets中包含了常用的公開數據訓練集,可以直接進行使用(需要翻牆),數據集有CIFAR-100、Boston Housing等。

♣ layers: tf.keras.layers中包含了已經定義好的常用的神經網絡層。

♣ losses: tf.keras.losses中包含了常用的損失函數,可以根據實際需求直接進行調用。

♣optimizers: tf.keras.optimizers中包含了主流的優化器,可以直接調用API使用。比如Adm等優化器可以直接調用,然後配置所需要的參數即可。

♣ preprocessing: tf.keras.preprocessing中包含了數據處理的一些方法,分爲圖片數據處理、語言序列處理、文本數據處理等,比如NLP常用的pad_sequences等,在神經網絡模型訓練前的數據處理上提供了非常強大的功能。

♣regularizers: tf.keras.regularizers中提供了常用的正則化方法,包括L1、L2等正則化方法。

♣ wrappers :tf.keras.wrappers是一個Keras模型的包裝器,當需要進行跨框架遷移時,可以使用該API接口提供與其他框架的兼容性。

♣ Sequential類: tf.keras.Sequential可以讓我們將神經網絡層進行線性組合形成神經網絡結構。

爲節省篇幅,本文不再結合實踐案例詳細講解主要高階API的使用,而是以構建一個線性迴歸模型爲例介紹TensorFlow 2.0高階API的使用。

1. 使用tf.keras高階API構建神經網絡模型

在TensorFlow 2.0中可以使用高階API tf.keras.Sequential進行神經網絡模型的構建。示例代碼如下: 

#導入所需要的依賴包  
import tensorflow as tf  
import numpy as np  

#實例化一個tf.keras.Sequential  
model=tf.keras.Sequential()  
#使用Sequential的add方法添加一層全連接神經網絡 model.add(tf.keras.layers.Dense(input_dim=1,units=1))  

#使用Sequential的compile方法對神經網絡模型進行編譯,loss函數使用MSE,optimizer使用SGD(隨機梯度下降)
model.compile(loss='mse',optimizer='sgd') 

2. 使用tf.keras高階API訓練神經網絡模型

在完成神經網絡模型的構建和編譯之後,需要準備訓練數據,然後對神經網絡模型進行訓練。可以使用tf.keras.Sequential的fit方法進行訓練,示例代碼如下: 

#隨機生成一些訓練數據,在-10到10的範圍內生成700個等差數列作爲訓練輸入
X = np.linspace(-10, 10, 700) 
#通過一個簡單的算法生成Y數據,模擬訓練數據的標籤 
Y=2*X+100+np.random.normal(0, 0.1, (700, )) 
#開始訓練,“verbose=1”表示以進度條的形式顯示訓練信息,“epochs=200”表示訓練的epochs爲200,“validation_split=0.2”表示分離20%的數據作爲驗證數據
model.fit(X,Y,verbose=1,epochs=200,validation_split=0.2) 

3. 使用tf.keras高階API保存神經網絡模型

在完成神經網絡模型的訓練之後,可以使用Sequential的save方法將訓練的神經網絡模型保存爲H5格式的模型文件。示例代碼如下: 

filename='line_model.h5'
model.save(filename) 
print("保存模型爲line_model.h5") 

4. 使用tf.keras高階API加載模型進行預測

加載神經網絡模型需要使用tf.keras.models.load_model這個API,在完成模型的加載後可以使用Sequential的predict方法進行預測。示例代碼如下: 

x=tf.constant([0.5]) 
model=tf.keras.models.load_model(filename) 
y=model.predict(x) 
print(y)

本文節選自博文視點新書《走向TensorFlow 2.0:**深度學習應用編程快速入門》**。本書探討了開源機器學習軟件庫TensorFlow 2.0的諸多應用實踐,內容涵蓋各種熱門的應用場景,包括圖像識別、自然語言對話機器人、基於生成網絡的圖片風格遷移、文本情感分析等。

本書是爲“應用落地”而編寫的,附有大量代碼及註釋,可幫助讀者最快速度實現框架入門與應用落地。

▶  關 於 內 容

本書是TensorFlow 2.0編程實踐的入門類書籍,目的是在TensorFlow 2.0正式版發佈之際能夠幫助大家快速瞭解其核心特性及基本編程技巧。本書通過5個常用的人工智能編程案例,幫助大家掌握如何在工作中使用TensorFlow 2.0進行應用開發。

本書內容覆蓋了Python和TensorFlow基礎入門、自然語言處理和CV領域的實踐案例、模型的服務化部署,希望本書能在基於TensorFlow 2.0的人工智能編程上能夠助你一臂之力。

▶  關 於 作 者

趙英俊,阿里雲人工智能領域MVP,目前在阿里雲從事產業、工業智能方向的解決方案架構師工作,基於數據智能、人工智能等技術和產品解決傳統產業、工業的痛點和難點問題。現個人維護一個優秀的開源NLP項目——基於Seq2Seq的中文智能聊天機器人,目前GitHub stars超過1100。


更多科技資訊請見微信公衆號:博文視點Broadview(微信號:bvbooks)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章