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