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

时间:2018-07-19 22:42:04

标签: python tensorflow keras

我正在尝试训练LSTM以在给定最后8个值的情况下预测时间序列中的下一个值。结果是,网络将逐渐更好地回显当前值,而不是下一个值作为预测值。

这是我数据中的一个示例
train_X
[[0.01549889 0.0200023 0.01537059 0.01064907 0.00771096 0.00352831   0.00363095 0.00413133]]

train_y
[0.00357963]

test_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 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。我通过使RNN预测未来一天以上的时间来做到这一点。这增加了损失,并消除了我一直陷入的局部最小值。但这确实使它开始训练实际的预测。