时间序列 Keras LSTM 回显而不是预测

Posted

技术标签:

【中文标题】时间序列 Keras LSTM 回显而不是预测【英文标题】:Time Series Keras LSTM echoing instead of predicting 【发布时间】:2018-12-28 04:22:59 【问题描述】:

我正在尝试训练 LSTM 来预测给定最后 8 个值的时间序列中的下一个值。结果是一个网络在响应当前值而不是下一个值作为其预测时逐渐变得更好。

这是我数据中的一个样本 火车_X [[0.01549889 0.0200023 0.01537059 0.01064907 0.00771096 0.00352831 0.00363095 0.00413133]]

train_y [0.00357963]

测试_X [[0.0275208 0.01929664 0.02047702 0.02625061 0.03220383 0.02612231 0.02551929 0.01510116]]

test_y [0.01250945]

这是我的模型

model = Sequential()
model.add(Activation('relu'))
model.add(LSTM(128, input_shape=(train_X.shape[1], train_X.shape[2])))
#model.add(Dropout(.2))
model.add(Dense(1, activation='relu'))
model.compile(loss='mse', optimizer='adam')
# fit network
history = model.fit(train_X, train_y, epochs=100,  validation_data=(test_X, test_y), batch_size=10, verbose=2,
                    shuffle=False)

所以输出的只是一个非常接近输入数组中最后一个数字的数字。这适用于测试集或训练集上的 model.predict()。看来该模型正在训练错误。提前感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

我自己解决了这个问题。我通过让 RNN 预测超过一天的未来来做到这一点。这增加了损失并消除了我不断陷入的局部最小值。但它确实让它开始根据实际预测进行训练。

【讨论】:

以上是关于时间序列 Keras LSTM 回显而不是预测的主要内容,如果未能解决你的问题,请参考以下文章

使用 LSTM 和 keras 进行时间序列预测的分类变量

如何处理keras中多元LSTM中的多步时间序列预测

Keras LSTM:如何预测超越验证与预测?

Keras 中的 LSTM 序列预测只输出输入的最后一步

Keras深度学习实战(32)——基于LSTM预测股价

Keras LSTM 预测的时间序列被挤压和移位