使用Keras Functional API的多个输入

时间:2017-06-18 13:18:55

标签: python neural-network keras

似乎Keras缺乏有关功能API的文档,但我可能会把它弄错。

我有多个独立输入,我想预测每个输入的输出。到目前为止,这是我的代码:

 hour = Input(shape=(1,1), name='hour')
 hour_output = LSTM(1, name='hour_output')(hour)

 port = Input(shape=(1,1), name='port')
 port_output = LSTM(1, name='port_output')(port)

 model = Model(inputs=[hour, port], outputs = [hour_output, port_output])

 model.compile(loss="mean_squared_error", optimizer="adam", metrics=['accuracy'])
 model.fit(trainX, trainY, epochs=10 batch_size=1, verbose=2, shuffle=False)

我得到的错误:

  

ValueError:没有为" hour_output"提供数据。需要每个密钥的数据:[' hour_output',' port_output']

我也很难为此获得正确的输入,因此我最终使用了带有示例结构的字典:{'hour': array([[[0]], [[1]], [[3]]]) }。我也不喜欢(使用dict)。

请注意,我有更多的输入要使用,为此有意义,但现在我只是想让模型工作。

1 个答案:

答案 0 :(得分:1)

在model.fit中,您需要提供长度为2的输入列表,因为您在模型中定义了两个输入。

将您的培训数据拆分为train_hourtrain_port,并致电fit,如:

model.fit([train_X_hour, train_X_port], [train_Y_hour, train_Y_port] epochs=10 batch_size=1, verbose=2, shuffle=False)