本教程由深度學習中文社區(Studydl.com)持續發布與更新, 本系列其餘教程地址見文章末尾.
引言
Keras是一個用於構建和訓練深度學習模型的高級API, 後端計算主要使用TensorFlow或者Theano, 由於Theano已停止開發新功能轉入維護階段, 而且目前最新版的TensorFlow已經包含了Keras模塊, 所以本教程採用基於TensorFlow的Keras進行講解, TensorFlow版本1.4.1。Keras主要用於快速原型設計,高級研究和生產中,具有三個主要優勢:
用戶友好的
Keras提供一致而簡潔的API, 能夠極大減少一般應用下用戶的工作量,同時,Keras提供清晰和具有實踐意義的bug反饋。
模塊化和可組合的
Keras模型是通過將可配置的模塊連接在一起而制定的,幾乎沒有限制。
易於擴展
很容易編寫自定義模塊以表達研究的新想法。創建新圖層,損失函數並開發最先進的模型。
導入tf.keras
tf.keras是TensorFlow實現的 Keras API規範。這是一個用於構建和訓練模型的高級API,其中包括對TensorFlow特定功能的一流支持,例如急切執行, tf.data pipeline和estimators。 tf.keras使TensorFlow更易於使用而不犧牲靈活性和性能。
要開始使用tf.keras, 請將其作為TensorFlow程序的一部分導入:
import tensorflow as tffrom tensorflow import keras
tf.keras 可以運行任何與Keras兼容的代碼,但請記住:
在TensorFlow中的tf.keras最新版本可能與PyPI版本的最新的Keras版本不一樣, 可以通過運行tf.keras.version來檢查.當保存模型的權重,tf.keras默認為CheckPoint的格式。可以通過在代碼中設置save_format='h5'使用HDF5。
構建一個簡單的模型
順序模型
在Keras中,您可以組裝網絡層來構建模型。模型通常是一個網絡層構成的圖。最常見的模型類型是一個叫做序貫模型的疊加層:tf.keras.Sequential模型。
構建一個簡單的全連接的網絡(即多層感知器):
model = keras.models.Sequential()# 添加一個含有64個神經網絡單元的全連接層到模型中,並且指定輸入數據的維度model.add(keras.layers.Dense(64, activation='relu',input_shape=(64,)))# 添加另外一個model.add(keras.layers.Dense(64, activation='relu'))# 添加一個具有10個輸出單元且使用softmax為激活函數的全連接層model.add(keras.layers.Dense(10, activation='softmax'))
通過上面的代碼一個具有一個輸入層,一個隱藏層,一個輸出層的神經網絡模型就構建好了.
配置網絡層
除了上面的示例外, tf.keras.layers.Dense層還可以使用很多的參數, 主要的功能如下:
activation:設置網絡層的激活函數。此參數由內置函數的名稱或可調用對象指定。默認情況下,不應用任何激活。kernel_initializer和bias_initializer:創建網絡層時內核或者偏差權重的初始化方案。此參數是名稱或可調用對象。這裡默認為"Glorot uniform"初始化方案。kernel_regularizer和bias_regularizer:設置應用於網絡層中內核或者偏差權重的正則化方案,例如L1或L2正則化。默認情況下,不應用正則化。
以下是tf.keras.layers.Dense使用構造函數參數實例化網絡層:
# 創建一個使用sigmoid為激活函數的layerlayers.Dense(64, activation='sigmoid')# 也可以這樣創建,效果一樣layers.Dense(64, activation=tf.sigmoid)# 一個kernel矩陣使用正則化因子為0.01的L1正則項的全連接層layers.Dense(64, kernel_regularizer=keras.regularizers.l1(0.01))# 一個偏差向量使用正則化因子為0.01的L2正則項的全連接層layers.Dense(64, bias_regularizer=keras.regularizers.l2(0.01))# 一個使用隨機正交矩陣初始化Kernel的全連接層layers.Dense(64, kernel_initializer='orthogonal')# 一個偏差初始化時全為2的全連接層layers.Dense(64, bias_initializer=keras.initializers.constant(2.0))
在上面的內容中,我們使用了幾行代碼就建立了一個神經網絡模型,由此可見Keras真的是非常簡單易用,方便上手, 下一期文章中我們將講解在Keras中怎麼輸入數據與訓練搭建好的神經網絡, 歡迎大家關注我的百家號,第一時間獲得最新教程推送.
TensorFlow入門系列教程文章地址:
只需以下兩步就可獲取到零基礎入門教教程啦:
回到文章最上方點擊關注按鈕關注我的百家號,方便接收最新教程.點擊標題下方的頭像位置, 就可進入我的主頁, 裡面就有我之前發布的TensorFlow入門系列教程啦.
目前已發布的TensorFlow入門教程列表: