Keras将LSTM模型与非LSTM模型连接在一起

时间:2018-11-13 05:05:15

标签: python machine-learning keras concatenation lstm

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

这是数据的样子:

enter image description here

enter image description here

这是代码:

# 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)

这是我得到的错误:

enter image description here

1 个答案:

答案 0 :(得分:0)

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

PAY_data = np.squeeze(PAY_data)

,并相应地设置输入形状:

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