我是深度学习和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
吗?网络结构错了吗?