【问题标题】:Keras concatenate LSTM model with non-LSTM modelKeras 将 LSTM 模型与非 LSTM 模型连接起来
【发布时间】:2019-04-15 21:08:47
【问题描述】:

我有两个数据。一个是时间序列,另一个包含性、教育等特征,我想连接 LSTM 模型和密集模型的输出。但是,我收到一条错误消息(请看最后)。

这是数据的样子:

这是代码:

# PAY_data net
input1 = Input(shape=(6,1))
pay = LSTM(10)(input1)
pay = Dense(10, activation='relu')(pay)

# DEMO_data net
input2 = Input(shape=(5,1))
demo = Dense(10, activation='relu')(input2)
demo = Dense(10, activation='relu')(demo)

merge = concatenate([pay, demo])

hidden1 = Dense(10, activation='relu')(merge)

output = Dense(1, activation='sigmoid')(merge)
model = Model(inputs=[input1, input2], outputs=output)

print(model.summary())

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=    ['accuracy'])

model.fit([PAY_data, DEMO_data], y,nb_epoch=20, batch_size=50, verbose=2, validation_split=0.2)

这是我得到的错误:

【问题讨论】:

标签: python machine-learning keras concatenation lstm


【解决方案1】:

由于Dense layer is applied on the last axis of its input data,并且考虑到您为“Demo_data net”指定了(5,1) 的输入形状,该模型的输出形状将为(None, 5, 10),因此它不能与输出形状为(None, 10) 的“Pay_data 网络”。要解决此问题,您可以使用 np.squeeze()PAY_data 中删除多余的最后一个轴:

PAY_data = np.squeeze(PAY_data)

并相应地设置输入形状:

input2 = Input(shape=(5,))  # now the input shape is (5,) and not (5,1)

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 2019-05-09
    • 2019-11-08
    • 2021-09-30
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2019-10-03
    • 2020-02-09
    相关资源
    最近更新 更多