使用Keras预测多个输出的多步骤

时间:2017-11-23 21:51:21

标签: python deep-learning time-series keras lstm

我是深度学习和LSTM(与keras)的新手。我正在尝试解决多步骤时间序列预测问题。我有3个时间序列:A,B和C,我想预测C的值。我正在训练LSTM,提供3个步骤的数据点来预测未来的下3个步骤。 输入数据如下所示:

X = [[[A0, B0, C0],[A1, B1, C1],[A2, B2, C2]],[[ ...]]]

尺寸为:(1000, 3, 3)。输出是:

y = [[C3, C4, C5],[C4, C5, C6],...]

尺寸为:(1000, 3)

我正在使用一个带有1个隐藏层(50个神经元)的简单LSTM。 我用keras设置了一个LSTM:

n_features = 3
neurons = 50
ahead = 3
model = Sequential()
model.add(LSTM(input_dim=n_features, output_dim=neurons))
model.add(Dropout(.2))
model.add(Dense(input_dim=neurons, output_dim=ahead))
model.add(Activation('linear'))
model.compile(loss='mae', optimizer='adam')
model.fit(X, y, epochs=50)

此模型运行正常。现在,我也想预测B的值(使用相同的输入)。因此,我尝试以与我具有多种功能的培训类似的方式重塑输出:

 y = [[[B3, C3],[B4, C4],[B5, C5]],[[ ...]]]

以便它具有尺寸:(1000, 3, 2)。但是,这给了我一个错误:

Error when checking target: expected activation_5 to have 2 dimensions, 
but got array with shape (1000, 3, 2)

我猜网络的结构需要改变。我试图修改model.add(Dense(input_dim=neurons, output_dim=ahead))但没有成功。我应该以不同方式重塑y吗?网络结构错了吗?

0 个答案:

没有答案