我正在使用 keras 对浮点类型的单变量时间序列进行多步提前时间序列预测。从我得到的结果来看,这种方法效果很好。然而,训练过程中有一个重要的细节让我感到困惑:
keras 要求输入序列(X 矩阵)的序列长度等于预测范围(y 矩阵)。这意味着,例如,keras 需要长度为 20 的输入序列才能预测接下来的 20 个时间步长。在给定最后 20 个时间步长的情况下,我的目标是能够预测我指定的尽可能多的时间步长。使用以下代码,这是不可能的:
import numpy as np
from keras.layers.core import Dense, Activation, Dropout, TimeDistributedDense
from keras.layers.recurrent import LSTM
from keras.models import Sequential
from keras.optimizers import RMSprop
np.random.seed(1234)
model = Sequential()
layers = [1, 20, 40, 1]
model.add(LSTM(
input_dim=layers[0],
output_dim=layers[1],
return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(
layers[2],
return_sequences=True))
model.add(Dropout(0.3))
model.add(TimeDistributedDense(
output_dim=layers[3]))
model.add(Activation("linear"))
rms = RMSprop(lr=0.001)
model.compile(loss="mse", optimizer=rms)
model.fit(
X_train, y_train,
batch_size=512, nb_epoch=100, validation_split=0.1)
每当 X_train 和 y_train 中序列的序列长度彼此不同时,我都会遇到尺寸错误。
我做错了什么,我该如何解决?为什么我的成绩还是不错的?
问题与此有关。