我正在构建一个 LSTM 来尝试了解一些时间序列数据集的历史趋势(例如公司的每日股价)。在训练我的网络时,我采用大小为 1 的批次,每个批次包含 25 个连续的每日收盘价,然后在第 26 天预测价格。
假设用于训练的时期中的第一个序列开始于并结束于. 我正在使用有状态的 LSTM,因此获取一批的输出状态并将其输入到下一批的状态,这是否意味着我的第二批必须是?
我可以改为“滑动”每批 1 个时间步,以便第二批是,或者这是否破坏了批次之间传递状态的目的?
我正在构建一个 LSTM 来尝试了解一些时间序列数据集的历史趋势(例如公司的每日股价)。在训练我的网络时,我采用大小为 1 的批次,每个批次包含 25 个连续的每日收盘价,然后在第 26 天预测价格。
假设用于训练的时期中的第一个序列开始于并结束于. 我正在使用有状态的 LSTM,因此获取一批的输出状态并将其输入到下一批的状态,这是否意味着我的第二批必须是?
我可以改为“滑动”每批 1 个时间步,以便第二批是,或者这是否破坏了批次之间传递状态的目的?
第二批应该是 [t=25,t=49] 因为有状态的 LSTM必须是顺序的,因为正如您正确地说的,如果您随后输入 t=2,网络的状态处于 t=24 的状态(或除 t=25 以外的任何东西),那么排序就搞砸了。
使用无状态 LSTM,您可以从任何起点创建序列,但使用无状态 LSTM,必须观察序列。
在随后的时期,您可以更改起始索引,以便输入不同的序列。没有错。我个人生成一个介于 0 和序列长度之间的随机数。