【问题标题】:Input for LSTM in case of time series data在时间序列数据的情况下输入 LSTM
【发布时间】:2018-07-10 15:08:23
【问题描述】:

我有一个大小为 (1152,151) 的(非文本)数据集。我希望将其分成 8 批,每批包含 144 个样本,用于在 Keras 中训练 LSTM 网络。我将发送到 LSTM 的数据重新整形为 (8,144,151)。这是正确的输入形状吗?因为当我将其作为输入发送并且该层和下一个 LSTM 层的 return_sequences=False 时,我收到了一个错误:

预期 n_dim=3,得到 n_dim=2。

X_train = X_train.reshape((8,144,151))
def deepmodel():
  model = Sequential()
  model.add(LSTM(8,input_shape=(144,151),return_sequences=False))
  model.add(LSTM(8,return_sequences=False))
  model.add(Dense(8))
  model.add(Activation('softmax'))
  adam=Adam()
  model.compile(loss = 'categorical_crossentropy', optimizer = adam)
return model

【问题讨论】:

  • 这是什么数据?如果它是一个相关的样本,那么分批拆分是没有意义的。你从哪一层得到错误?是第一个 LSTM 层还是其他层?
  • 哪一行给出了错误?

标签: python-3.x tensorflow keras deep-learning lstm


【解决方案1】:

您将在model.fit(...., batch_size=8) 中设置批量大小。看下面的例子,它应该清除你的错误信息。如果您正在寻找多个时间延迟,请务必查看这个精彩的 blog post

X_train = X_train.reshape((X_train.shape[0], 1, X_train.shape[1]))
def deepmodel():
  model = Sequential()
  model.add(LSTM(8,input_shape=(train_X.shape[1], train_X.shape[2]), return_sequences=False))
  model.add(LSTM(8,return_sequences=False))
  model.add(Dense(8))
  model.add(Activation('softmax'))
  adam=Adam()
  model.compile(loss = 'categorical_crossentropy', optimizer = adam)
return model

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 2020-11-02
    • 2018-10-28
    • 2019-04-22
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多