【问题标题】:Time series prediction with LSTM using Keras: Wrong number of dimensions: expected 3, got 2 with shape使用 Keras 使用 LSTM 进行时间序列预测:错误的维数:预期为 3,形状为 2
【发布时间】:2017-01-10 07:55:47
【问题描述】:

我正在尝试使用前 20 个值来预测时间序列中的下一个值。这是我的代码示例:

X_train.shape(15015, 20)

Y_train.shape(15015,)

EMB_SIZE = 1
HIDDEN_RNN = 3

model = Sequential()
model.add(LSTM(input_shape = (EMB_SIZE,), input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=True))
model.add(LSTM(input_shape = (EMB_SIZE,), input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=False))
model.add(Dense(1))
model.add(Activation('softmax'))
model.compile(optimizer='adam', 
              loss='binary_crossentropy', 
              metrics=['accuracy'])

model.fit(X_train, 
          Y_train, 
          nb_epoch=5, 
          batch_size = 128, 
          verbose=1, 
          validation_split=0.1)
score = model.evaluate(X_test, Y_test, batch_size=128)
print score

虽然当我运行我的代码时出现以下错误:

TypeError: ('Bad input argument to theano function with name "/usr/local/lib/python2.7/dist-packages/keras/backend/theano_backend.py:484" at index 0(0-based)', 'Wrong number of dimensions: expected 3, got 2 with shape (32, 20).')

我试图在这篇文章中复制结果:neural networks for algorithmic trading。这是 git repo 的链接:link

这似乎是一个概念错误。请发布任何可以让我更好地了解 LSTMS 以进行时间序列预测的资源。另外请解释一下我是如何修复这个错误的,以便我可以重现上面提到的文章中提到的结果。

【问题讨论】:

    标签: python machine-learning time-series keras


    【解决方案1】:

    如果我正确理解您的问题,您的输入数据是一组 15015 个长度为 20 的 1D 序列。根据 Keras 文档,输入是具有形状 (nb_samples、timesteps、input_dim) 的 3D 张量。在您的情况下,X 的形状应该是 (15015, 20, 1)

    另外,您只需将input_dim 赋予第一个LSTM 层。 input_shape 是多余的,第二层会自动推断其输入形状:

    model = Sequential()
    model.add(LSTM(input_dim=EMB_SIZE, output_dim=HIDDEN_RNN, return_sequences=True))
    model.add(LSTM(output_dim=HIDDEN_RNN, return_sequences=False))
    

    【讨论】:

      【解决方案2】:

      Keras 中的 LSTM 的输入张量形状为 (nb_samples, timesteps, feature_dim)

      在您的情况下,X_train 的输入形状可能应该为 (15015, 20, 1)。只需相应地重塑它,模型就会运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-30
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-18
        相关资源
        最近更新 更多