一文讀懂TensorFlow 2.0高階API

陳曉猛

2020-03-24

在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訓練神經網絡模型

在完成神經網絡模型的構建和編譯之后,需要準備訓練數據,然后對神經網絡模型進行訓練??梢允褂胻f.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,目前在阿里云從事產業、工業智能方向的解決方案架構師工作,基于數據智能、人工智能等技術和產品解決傳統產業、工業的痛點和難點問題?,F個人維護一個優秀的開源NLP項目——基于Seq2Seq的中文智能聊天機器人,目前GitHub stars超過1100。

讀者評論

相關博文

  • 走向TensorFlow2.0,一步到位

    走向TensorFlow2.0,一步到位

    管理員賬號 2019-11-19

    AlphaGo以 Master (大師)作為ID,橫空出世,在中國烏鎮圍棋峰會上,它與世界圍棋冠軍 柯潔 對戰,在圍棋領域,一舉擊敗人類精英。繼而,AlphaGo Zero,從空白狀態起步,在無任何人類輸入的條件下,能夠迅速自學圍棋,...

    管理員賬號 2019-11-19
    244 0 0 0
  • 一文讀懂TensorFlow 2.0高階API

    一文讀懂TensorFlow 2.0高階API

    管理員賬號 2019-11-13

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

    管理員賬號 2019-11-13
    365 0 0 0
国际官方棋牌下载中心