从起点开始生成整个数字序列

时间:2019-06-29 05:59:36

标签: python keras time-series sequence lstm

我有一个问题,我需要一些建议以解决该问题。假设我有一个多元时间序列。例如以下内容:

1 2 3 4 5

6 7 8 9 10

11 12 13 14 15

16 17 18 19 20

其中每一列都是一个功能。而且每一行都是不同的观察例如,第一行对应于第一次,第二行对应于第二次,依此类推。假设有500个观察值。

我想训练模型,当我得到序列的起始点时,我可以据此生成整个序列。

例如,对于测试,假设我得到1 2 3 45。我应该能够生成整个序列6 7 8 9 10,11 12 13 14 15和16 17 18 19 20轨迹。

有人能建议我这样做吗?

我已经进行了时间序列预测,例如将问题表达如下,其中在时间t + 1处一个观测的输入是在时间t处的观测的输出,例如:

1 2 3 4 5      6 7 8 9 10
6 7 8 9 10     11 12 13 14 15
11 1213 14 15   16 17 18 19 20

我将这样的整个序列交给RNN进行训练和测试,方法是将序列的第一点设置为1 2 3 4 5

并将其输出并循环使用预测的输出作为RNN模型的输入,直到我生成整个序列。

我在Keras中使用LSTM并使用以下命令

model.add(LSTM(64, return_sequences=True input_shape=(None,1,5), stateful= 
True)
model.add(LSTM(32, return_sequences=False, stateful=True)
model.add(Dense(5))
model.compile(loss='mse', optimizer='adam')

,然后以批处理大小1拟合模型。对于测试,如上所述,一次只能提供一个观察值。

此方法的问题是我正确估计了第一点。这意味着1 2 3 4 5的输出是可以接受的预测,例如假设结果为6.7 7.5 8.9 9.2 10.4,但是在我将其用作下一部分的输入后,我得到了一个非常糟糕的估计,并且在某些时候该顺序为并没有改变,我像12 13 17 19 20一样回来了,这对于整个观察都仍然有效。所以这不是学习。

任何人都可以告诉我这种方法有什么问题,如何解决这个问题或向我建议一些解决这类问题的技术。

0 个答案:

没有答案