【问题标题】:Keras LSTM: Injecting already-known *future* values into predictionKeras LSTM:将已知的*未来*值注入预测
【发布时间】: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


【解决方案1】:

我不确定您要做什么,但可能会创建您自己的层以将数据设置为已知值,类似于 dropout 如何将随机值设置为零。附带说明一下,池化比辍学效果更好,所以也许可以尝试将其切换出来并进行训练。这是一个很好的指导如何做到这一点。 https://www.tutorialspoint.com/keras/keras_customized_layer.htm

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 2021-12-22
      • 2021-04-21
      相关资源
      最近更新 更多