Tensorflow LSTM/GRU和重叠滑动窗口的使用
上下文 我目前正在Keras中使用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
范围(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.]]
...