為了使開發者更好的理解其開發的神經網路模型, Keras Python深度學習庫提供了視覺化神經網路模型的工具。 這對於產品演示和講解是非常有用的
在本文, 你會學到如何在Keras中總結和視覺化深度學習模型。
讀完本文後, 你將知道:
如何創建你的深度學習模型的文本摘要。
如何構建你的深度學習模型的圖形。
在Keras開發深度學習模型的最佳實踐技巧。
教程概述:
本教程分為4個部分:
1.示例模型。
2.總結模型。
3.視覺化模型。
4.最佳實踐經驗。
示例模型:我們可以通過在Keras中定義一個簡單的多層Perceptron的模型來開始, 我們可以使用它作為切入點,
我們將要定義的模型有一個輸入變數, 一個帶有兩個神經元的隱藏層, 一個帶有一個二進位輸出的輸出層。
1
[1 input] -> [2 neurons] -> [1 output]
下面提供了該網路的代碼清單:
from keras.models import Sequentialfrom keras.layers import Densemodel = Sequential()model.add(Dense(2, input_dim=1, activation='relu'))model.add(Dense(1, activation='sigmoid'))總結模型:Keras提供了一個總結模型的方法。
摘要是文本性的, 包括以下資訊:
1.模型中的圖層和順序。
2.每層的輸出形狀。
3.每層中的參數(權重)的數量。
4.模型中參數(權重)的總數。
網路模型的摘要生成可以通過調用模型上的summary()函數來創建, 該函數返回一個可以列印的字串。
以下是更新後的示例, 列印創建的網路模型的摘要。
運行此示例可以列印下表:
from keras.models import Sequentialfrom keras.layers import Densemodel = Sequential()model.add(Dense(2, input_dim=1, activation='relu'))model.add(Dense(1, activation='sigmoid'))print(model.summary())我們可以清楚地看到每個圖層的輸出形狀和權重數量。
_________________________________________________________________Layer (type) Output Shape Param #=================================================================dense_1 (Dense) (None, 2) 4_________________________________________________________________dense_2 (Dense) (None, 1) 3=================================================================Total params: 7Trainable params: 7Non-trainable params: 0_________________________________________________________________視覺化模型:網路模型的摘要對於簡單的模型是有用的,
Keras還提供了一個函數來創建神經網路模型的圖, 可以使更複雜的模型更容易理解。
在Keras中plot_model()的功能是創建網路模型圖的函數。 使用這個函數你需要瞭解一些有用的參數:
1.model:(必填)你希望繪製的模型。
2.to_file:(必需)要將繪圖保存到的檔的名稱。
3.show_shapes :(可選, 預設為False)是否顯示每個圖層的輸出形狀。
4.show_layer_names :(可選, 預設為True)是否顯示每個圖層的名稱。
下面是繪製創建模型的更新示例。
請注意, 該示例假定你已經安裝了graphviz圖庫和Python介面。 (如果你想要使用該功能你可以去下載安裝。 )
from keras.models import Sequentialfrom keras.layers import Densefrom keras.utils.vis_utils import plot_modelmodel = Sequential()model.add(Dense(2, input_dim=1, activation='relu'))model.add(Dense(1, activation='sigmoid'))plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)運行示例用創建的模型的圖形創建檔model_plot.png:
實踐經驗:
我通常建議在Keras中創建一個神經網路模型的總結和圖形。
我推薦這個有幾個原因:
1.確認圖層順序。 將順序API錯誤地添加圖層與功能性API錯誤地連接在一起這是很容易犯的錯誤。 圖形可以説明你確認模型是否按照你的預期方式連接。
2.確認每個圖層的輸出形狀。 定義複雜網路(如卷積和遞迴神經網路)的輸入資料的形狀是很常見的。 模型摘要和圖形可以説明你確認網路的輸入形狀是否符合你的要求。
3.確認參數。 一些網路配置可以使用很少的參數, 例如在編碼器 - 解碼器遞迴神經網路中使用TimeDistributed纏繞的密集層。 查看摘要可以幫助發現使用比預期更多的參數的情況。
進一步閱讀:
如果你想深入瞭解, 你可以查看以下的連結。
1.模型視覺化Keras API
2.Graphviz - 圖形視覺化軟體
3.Graphviz簡單的Python介面
作者資訊
Dr. Jason Brownlee 是一名機器學習從業者,