我试图合并两个模型的输出,并使用keras顺序模型将它们作为第三个模型的输入。型号1:
inputs1 = Input(shape=(750,))
x = Dense(500, activation='relu')(inputs1)
x = Dense(100, activation='relu')(x)
型号1:
inputs2 = Input(shape=(750,))
y = Dense(500, activation='relu')(inputs2)
y = Dense(100, activation='relu')(y)
型号3:
merged = Concatenate([x, y])
final_model = Sequential()
final_model.add(merged)
final_model.add(Dense(100, activation='relu'))
final_model.add(Dense(3, activation='softmax'))
到此为止,我的理解是,将两个模型的输出合并为x和y,并将其作为第三个模型的输入。但是,当我适合这一切时,
module3.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
module3.fit([in1, in2], np_res_array)
in1和in2是维度数为10000 * 750的numpy ndarray,其中包含我的训练数据,而np_res_array是相应的目标。 这给了我错误,因为'list'对象没有属性'shape'据我们所知,这就是我们如何为模型提供多个输入,但是这个错误是什么?我该如何解决?
您无法使用Sequential API执行此操作。这是因为两个原因:
add()
方法接受Layer
实例作为其参数,而不是Tensor
实例。在你的例子中,merged
是Tensor(即连接层的输出)。此外,使用Concatenate
层的正确方法是这样的:
merged = Concatenate()([x, y])
但是,您也可以使用concatenate
(注意小写“c”),它的等效功能接口,如下所示:
merged = concatenate([x, y])
最后,为了能够构建第三个模型,您还需要使用functional API。