gpt4 book ai didi

time-series - 如何使用LSTM单元训练RNN以进行时间序列预测

转载 作者:行者123 更新时间:2023-12-03 11:58:52 25 4
gpt4 key购买 nike

我目前正在尝试建立一个简单的模型来预测时间序列。目标是使用序列训练模型,以便模型能够预测 future 值。

我正在使用tensorflow和lstm单元这样做。通过截断的反向传播对模型进行训练。我的问题是如何构建训练数据。

例如,假设我们要学习给定的序列:

[1,2,3,4,5,6,7,8,9,10,11,...]

然后我们为 num_steps=4展开网络。

选项1
input data               label     
1,2,3,4 2,3,4,5
5,6,7,8 6,7,8,9
9,10,11,12 10,11,12,13
...

选项2
input data               label     
1,2,3,4 2,3,4,5
2,3,4,5 3,4,5,6
3,4,5,6 4,5,6,7
...

选项3
input data               label     
1,2,3,4 5
2,3,4,5 6
3,4,5,6 7
...

选项4
input data               label     
1,2,3,4 5
5,6,7,8 9
9,10,11,12 13
...

任何帮助,将不胜感激。

最佳答案

阅读了多个LSTM简介博客后,例如Jakob Aungiers',选项3似乎是无状态LSTM的正确选择。

如果您的LSTM需要记住比num_steps更早的数据,则可以有状态的方式进行训练-有关Keras的示例,请参见Philippe Remy's blog post "Stateful LSTM in Keras"。但是,Philippe没有显示批量大于1的示例。我想在您的情况下,可以将具有状态LSTM的批处理大小为四,与以下数据(写为input -> label)一起使用:

batch #0:
1,2,3,4 -> 5
2,3,4,5 -> 6
3,4,5,6 -> 7
4,5,6,7 -> 8

batch #1:
5,6,7,8 -> 9
6,7,8,9 -> 10
7,8,9,10 -> 11
8,9,10,11 -> 12

batch #2:
9,10,11,12 -> 13
...

通过这种方式,例如批次0的第二个样本已正确重用,以继续使用批次1的第二个样本进行训练。

这在某种程度上类似于您的选项4,但是您并未在其中使用所有可用的标签。

更新:

为了扩展我的建议,即 batch_size等于 num_steps,对于 batch_size的情况,Alexis Huet gives an answernum_steps的除数,可用于更大的 num_steps。他在自己的博客上 describes it nicely

关于time-series - 如何使用LSTM单元训练RNN以进行时间序列预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35961216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com