我有两个模型,它们被合并成一个单一的模型。这个单一模型的创建方式如下:
fm = layers.Concatenate()([m1.output, m2.output])# 为融合创建密集层t = layers.Dense(143, activation='relu')(fm )d = layers.Dropout(0.5)(t)# 为预测创建softmax层output = layers.Dense(len(classes), activation='softmax')(d)# 从所有这些层创建模型 :)model = keras.models.Model(inputs=[ m1.input, m2.input], outputs=output)
这个单一模型接受来自两个模型的输入:这两个模型分别是
第一个模型 – 2个输入参数 tx[0] and tx[1]
第二个模型 – 1个输入参数 vx
以及一个共同的Y vy
以下是我尝试使用它们的方式:
history = model.fit( [ [ np.array(tx[0]), np.array(tx[1]) ], np.array(vx) ], np.array(vy), verbose = 1, validation_data = ( [ [ np.array(txv[0]), np.array(txv[1]) ], np.array(tvv) ], np.array(vy)), epochs = 1200, batch_size = 128, callbacks = [es, mcp_save])
所以我的第一个模型有2个参数,第二个模型有一个参数。它们都有一个共同的y。
但问题是,由于某些原因,第一个参数最终被输入到第二个模型中。如何解决这个问题?
回答:
如果我正确理解了你的模型,它有三个输入层,而你在最终模型中只提到了两个。使用第一个模型的两个输入层的变量名来代替m1.input。
#第一个模型m1的两个输入层:inputA = tf.keras.Input(shape=(32,))inputB = tf.keras.Input(shape=(128,))#第二个模型m2的输入层:inputC = tf.keras.Input(shape=(128,))#将两个模型m1和m2合并成一个模型model :model = keras.models.Model(inputs=[inputA, inputB , inputC], outputs=output)