gpt4 book ai didi

python - Keras Sequential 模型的多个输入

转载 作者:行者123 更新时间:2023-12-01 00:15:26 25 4
gpt4 key购买 nike

我正在尝试合并两个模型的输出,并使用 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 是相应的目标。 这给了我错误,因为“列表”对象没有属性“形状”据了解,这就是我们为模型提供多个输入的方式,但这个错误是什么?我该如何解决?

最佳答案

您不能使用 Sequential API 执行此操作。这是因为两个原因:

  • 顾名思义,顺序模型是一系列层,其中每一层都直接连接到其前一层,因此它们不能有分支(例如合并层、多个输入/输出层、跳过连接等)。
  • add() Sequential API 的方法接受 Layer实例作为它的参数,而不是 Tensor实例。在您的示例中 merged是张量(即连接层的输出)。

  • 此外,使用 Concatenate的正确方法层是这样的:
    merged = Concatenate()([x, y])

    但是,您也可以使用 concatenate (注意小写的“c”),它的等效函数接口(interface),像这样:
    merged = concatenate([x, y])

    最后,为了能够构建第三个模型,您还需要使用 functional API .

    关于python - Keras Sequential 模型的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53017177/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com