Tensorflow LSTM/GRU和重叠滑动窗口的使用

Tensorflow LSTM/GRU和重叠滑动窗口的使用,tensorflow,keras,deep-learning,lstm,gated-recurrent-unit,Tensorflow,Keras,Deep Learning,Lstm,Gated Recurrent Unit,上下文 我目前正在Keras中使用LSTM/GRU进行一些实验。无论如何,以下问题也与这些网络的一般功能有关,这意味着答案不必是特定的 在我的实验中,我选择以范围(10105,5)的形式预测一个线性增长的时间序列,这样我显然会得到很好的结果。我的此数据生成器遵循教程(只是Keras’TimeSeriesGenerator的一个实现) 这将导致8步/u历元和shape(8,1,2,2)。 然后,我在Keras建立了一个简单的网络,我在500个历史时期对其进行了培训: model=Sequentia

上下文

我目前正在Keras中使用LSTM/GRU进行一些实验。无论如何,以下问题也与这些网络的一般功能有关,这意味着答案不必是特定的

在我的实验中,我选择以
范围(10105,5)
的形式预测一个线性增长的时间序列,这样我显然会得到很好的结果。我的此数据生成器遵循教程(只是Keras’
TimeSeriesGenerator
的一个实现)

这将导致
8步/u历元
shape(8,1,2,2)
。 然后,我在Keras建立了一个简单的网络,我在
500个历史时期对其进行了培训:

model=Sequential()
添加(GRU(100,activation='relu',input_shape=(n_input,n_features),batch_size=1))#也可以是LSTM层
模型。在目标形状后添加(密集(2))#
compile(优化器='adam',loss='mse')
如果我预测一些数据之后像这样

x_input=np.数组([[90,95],[100,105]])。重塑((1,n_输入,n_特征))
yhat=model.predict(x_输入,verbose=0)
。。。结果/预测是
[[111.1233 116.97075]
(对于实验来说足够好了->正确是
[[110.0 115.0]]



我的问题

显然,500个纪元远远超出了这一数据量的需要

为了在不增加实际数据的情况下获得更多的训练数据(在真实场景中,这也不可能),我想出了使用重叠滑动窗口的想法(上面显示的批处理是不重叠的)

然后,批处理如下所示:

[[[10. 15.]
  [20. 25.]]] => [[30. 35.]]
[[[15. 20.]
  [25. 30.]]] => [[35. 40.]]
[[[20. 25.]
  [30. 35.]]] => [[40. 45.]]
...
理论上,这意味着我需要更多的批次,我认为培训质量会相应提高

无论如何,将此数据馈送到同一网络会导致以下预测:
[[121.1334.70979]
。好。。这些预测结果要糟糕得多

我现在的问题是:

  • 这是LSTM/GRU的预期行为吗?为什么重叠窗口对他们来说是个问题
  • 有没有办法在不破坏预测质量的情况下增加我的数据
  • [[[10. 15.]
      [20. 25.]]] => [[30. 35.]]
    [[[15. 20.]
      [25. 30.]]] => [[35. 40.]]
    [[[20. 25.]
      [30. 35.]]] => [[40. 45.]]
    ...