我有两个数据。一个是时间序列,另一个包含诸如性,教育等功能,我想将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)
这是我得到的错误:
答案 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)