首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LSTM结果似乎向后移动了一段时间

LSTM结果似乎向后移动了一段时间
EN

Stack Overflow用户
提问于 2017-09-14 23:14:05
回答 1查看 966关注 0票数 1

我使用LSTM和Keras构建了一个简单的时间序列预测模型,其工作原理如下:假设我有过去10个时间段的数据(标准化并准备进行训练),该模型预测前两个时间段的值。

我的数据形状类似于:

X= [[1,2,3,4,5,6,7,8,9,10,2,3,4,5,6,7,8,9,10,11,3,4,5,6,7,8,9,10,11,12]]

Y= [11,12,12,13,14,15]

该模型由一个具有rnn_size个节点的LSTM层和一个丢弃层组成。

代码语言:javascript
复制
    model = Sequential()

    model.add(LSTM(rnn_size,
    batch_input_shape=(batch_size, X.shape[1], 
    X.shape[2]),stateful=True,dropout=dropout))

    model.add(Dropout(dropout)) 
    model.add(Dense(y.shape[1]))
    adam_optimizer = keras.optimizers.Adam(clipvalue=5)
    model.compile(loss='mean_squared_error', optimizer=adam_optimizer)
    history = model.fit(X, y, batch_size=batch_size, epochs=nb_epoch, 
                    verbose=2, validation_split=0.1,shuffle=False)
    #################################    
    # Predict
    result = scaler.inverse_transform(
              model.predict_on_batch(test_values[start_date:end_date]
              .values.reshape(1, 1, -1)))

问题是时间周期t+1的预测值-如图中所示-似乎只是与时间周期t的值略有不同。

这是(正常的)行为吗?如果没有,我如何克服它?

我想我对LSTM的工作原理有一个相对较好的理解,但是我不能理解这个特定的问题。

编辑1:

我编辑了代码以使用无状态网络配置,并按照Daniel的建议编辑了形状。然而,这个问题仍然存在。同样奇怪的是,验证损失(MSE)总是低于训练损失。

编辑2:

根据Marcin's请求添加的其余代码

actual value vs. predicted value for the test data set that was not shown to the model before

Validation Loss is less than Training Loss! ( small fluctuation is because of Dropout )

EN

回答 1

Stack Overflow用户

发布于 2017-09-15 01:21:27

为了让LSMT能够理解序列,它必须具有像(batch,timeSteps,featuresPerStep)这样的输入形状

因此,X.shape必须为(batch,10,1)

代码语言:javascript
复制
[[[1],[2],[3],[4],[5],[6],[7],[8],[9],[10]],
 [[2],[3],...........................,[11]],
 [........................................]]

要创建LSTM层,如果不使用stateful=True,则不需要传递批处理大小(仅当第二个bach中的序列是第一个批处理中的序列的续集时才使用此选项)。对于这种滑动窗口情况,您不能一起修复序列。每个序列都是独立的。

代码语言:javascript
复制
LSTM(rnn_size,input_shape=(X.shape[1],X.shape[2]))

这两个更改(X形状和有状态)可能会显著改变您的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46222755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档