[英]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.