LSTM时间序列递归预测收敛到相同的值

时间:2018-01-21 13:52:48

标签: deep-learning time-series keras multi-step

我正在使用LSTM进行时间序列序列预测。 我的目标是使用25个过去值的窗口,以便为接下来的25个值生成预测。我递归地做了这件事: 我使用25个已知值来预测下一个值。将该值附加为已知值,然后移动25个值并再次预测下一个值,直到我有25个新生成的值(或更多)

我正在使用" Keras"实施RNN 架构:

regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1], 1)))
regressor.add(Dropout(0.1))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.1))
regressor.add(LSTM(units = 50))
regressor.add(Dropout(0.1))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'rmsprop', loss = 'mean_squared_error')
regressor.fit(X_train, y_train, epochs = 10, batch_size = 32)

问题: 无论之前的序列是什么,递归预测总是会收敛到某个值。

当然这不是我想要的,我期望生成的序列会根据我之前的情况而有所不同,并且我想知道是否有人对这种行为有所了解以及如何避免这种行为。也许我做错了什么......

exemple1 exemple2

我尝试了不同的时代数,并没有多大帮助,实际上更多的时代使它变得更糟。更改批量大小,单位数,图层数和窗口大小对避免此问题也没有帮助。

我使用MinMaxScaler获取数据。

修改

缩放新输入以进行测试:

dataset_test = sc.transform(dataset_test.reshape(-1, 1))

0 个答案:

没有答案