簡體   English   中英

如何將Keras功能API模型的輸出用作另一個模型的輸入

[英]How to use the output of a Keras functional-API model as input into another model

我訓練了基本的功能API Keras模型,現在我想將其輸出重新用作新模型的輸入,同時還要重新使用其權重。 在新模型上,我想再添加一個輸入,並將其與基本模型的輸出相乘。 因此,在新模型中,我希望有兩個輸入(包括一個基本模型+一個新添加的輸入)和一個新輸出,該輸出由基本模型輸出與新輸入的逐元素相乘組成。

基本模型如下所示:

圖層(類型)輸出形狀參數
input_1(InputLayer)(無,30,1)0
_________________________________________________________________ lstm_1(LSTM)(無,64)16896
_________________________________________________________________ dropout_1(退出)(無,64)0
_________________________________________________________________ density_1(密集)(無,96)6240
_________________________________________________________________ dropout_2(Dropout)(無,96)0
_________________________________________________________________ density_2(密集)(無,30歲)2910

我嘗試過(但不起作用)的代碼是:

newModel = baseModel

base_output = baseModel.get_layer('dense_2').output
input_2 = Input(shape=(n_steps_in, n_features))

multiply = Multiply()([base_output,input_2])

new_output = Dense(30)(multiply)

newModel = Model(inputs=[input_1,input_2], outputs=new_output)

newModel.summary()

我收到錯誤消息:“ TypeError: Model輸入圖層必須是InputLayer對象。收到的輸入:[,]。輸入0(基於0)源自圖層類型Dense 。”。 關於我所缺少的任何建議嗎? 提前致謝。

在行中

newModel = Model(inputs=[input_1,input_2], outputs=new_output)

您在哪里定義了“ input_1”。 錯誤是因為此變量未定義

根據您的情況,您應該使用

input_1=baseModel.input

您缺少來自baseModel的輸入。 嘗試:

base_input = baseModel.input
base_output = baseModel.get_layer('dense_2').output
input_2 = Input(shape=(n_steps_in, n_features))

multiply = Multiply()([base_output,input_2])

new_output = Dense(30)(multiply)

newModel = Model(inputs=[base_input, input_2], outputs=new_output)

newModel.summary()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM