您的位置:首頁>正文

視覺化Keras深度學習神經網路模型

為了使開發者更好的理解其開發的神經網路模型, 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 是一名機器學習從業者,

學術研究人員, 致力於幫助開發人員從入門到精通機器學習。

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示