【发布时间】:2017-12-07 18:44:33
【问题描述】:
我在 Keras 中构建了一个 LSTM,目标是根据高维时间索引输入预测时间序列的未来值。
但是,有一个独特的要求:对于未来的某些时间点,我们可以确定地知道输入序列的某些值将是什么。例如:
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)
这将训练模型到时间 t(训练结束),并从时间 t 预测前向 48 时间段,但有时用 known_data 值替换 feature 2 @987654327 @ 和25。
我怎样才能在某个时间明确地将其注入 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'))
这可能是我对 LSTM 的不直观掌握的结果,如果有任何澄清,我将不胜感激。我已经深入研究了 Keras 源代码,我的第一个猜测是将其直接注入 LSTM state 变量,但我不确定如何在 t 时执行此操作(或者即使这是正确的。)
【问题讨论】:
-
所有序列的这些已知时间是否相同? (例如,总是 24 和 25?)
-
在 Keras 中使用 LSTM 很难解决。您可能需要切换到有状态 LSTM 并手动输入时间步长。
-
@Daniel - 不幸的是没有;它们可以根据知识状态而改变。
-
@ThomasJungblut - 嗯,谢谢。你对一个好的框架有什么建议吗(最好是在 Python 中)?
-
简单地进行完整预测并仅将已知值更改为已知数字怎么样?
标签: machine-learning deep-learning keras lstm