使用 Keras 预测未来时间序列值的 lstm

lstm for prediction of future time series values with Keras

我想预测多元时间序列的未来值。我使用此代码作为模板,但将输出激活修改为线性

https://gist.github.com/karpathy/587454dc0146a6ae21fc

输入数据是双精度值的 8 维向量序列。输出是比输入序列早一个时间段的相同 8 维向量。这就是选择线性激活的原因。

model = Sequential()
model.add(LSTM(512, input_dim=len(chars),return_sequences=True)) #minesh witout specifying the input_length
model.add(LSTM(512, return_sequences=True)) #- original
model.add(Dropout(0.2))
model.add(TimeDistributed(Dense(len(chars))))
model.add(Activation('linear'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')

我是 Keras 和 RNN 的新手。有人可以确认这个设计吗?

您在每个样本中有 8x2 个输入,对于这 8 个时间步长中的每一个,您都编码了 512 个您跟踪的特征。话又说回来,512个值……参数的数量一定很大吧?我希望你有足够的数据和模式的多样性来使用大量的参数,否则你会过拟合。

我还建议您像这样对 LSTM 使用 dropout:

model.add(LSTM(512, return_sequences=True, dropout_W = 0.2)) #- original

还有 dropout_U 功能,但我不会使用那个功能。如您所知,LSTM 有多个门,每个门都是密集层,因此您可以选择要在哪个门上应用 dropout。最佳做法是将其应用于输入门 (dropout_W) 而不是循环门 (dropout_U)。

否则整体架构是有道理的。