Keras LSTM:将已知的*future*值注入预测

xen*_*nes 5 machine-learning deep-learning lstm keras

我已经建立了一个LSTM In Keras,其目标是从高维,时间索引输入预测时间序列的未来值.

但是,有一个独特的要求:对于未来的某些时间点,我们肯定地知道输入系列的某些值是什么.例如:

model = SomeLSTM()
trained_model = model.train(train_data)
known_data = [(24, {feature: 2, val: 7.0}), (25, {feature: 2, val: 8.0})]
predictions = trained_model(look_ahead=48, known_data=known_data)
Run Code Online (Sandbox Code Playgroud)

这将训练模型可达时间t(培训结束),并预测着48从时间的时间段t,但用known_data的价值feature在时间2 2425.

我究竟能在某个时候将其明确地注入LSTM吗?

供参考,这是模型:

model = Sequential()
model.add(LSTM(hidden, input_shape=(look_back, num_features)))
model.add(Dropout(dropout))
model.add(Dense(look_ahead))
model.add(Activation('linear'))
Run Code Online (Sandbox Code Playgroud)

这可能是我对LSTM的不直观掌握的结果,我很感激任何澄清.我已经深入研究了Keras源代码,我的第一个猜测就是将它直接注入到LSTM state变量中,但我不确定如何在时间上做到这一点t(或者即使这是正确的.)

Mik*_*kov 0

我认为一个干净的方法是引入2*look_ahead新功能,其中每个0 <= i < look_ahead 2*i-th 功能是一个指示符 -th 时间步的值是否i已知,并且(2*i+1)-th 是值本身(如果不知道则为 0)。因此,您可以使用这些特征生成训练数据,以使您的模型考虑这些已知值。