【问题标题】:Keras LSTM Shape for Pandas DataFramePandas DataFrame 的 Keras LSTM 形状
【发布时间】:2017-12-12 01:16:15
【问题描述】:

我正在玩机器学习并尝试跟随一些示例,但我一直在尝试将我的数据放入 Keras LSTM 层。

我在 Pandas DataFrame 中有一些股票行情数据,这些数据每隔 15 分钟使用 ohlc 进行重新采样,并为每一行加载其他指标。

我的代码如下。 df 是我的数据框:

x = df.iloc[:, :-1].values
y = df.iloc[:, -1:].values

dimof_input = x.shape[1]
dimof_output = len(set(y.flat))

model = Sequential()
model.add(LSTM(4, input_dim=dimof_input, return_sequences=True))
model.compile(loss='mse', optimizer='rmsprop')

model.fit(x, y, nb_epoch=1, batch_size=1, verbose=2)

当我尝试和适应时,我得到:

Error when checking input: expected lstm_16_input to have 3 dimensions, 
but got array with shape (33, 100)

我从其他地方的例子中复制了这个。我不太明白如何将正确的数据形状放入该模型中。有人可以帮忙吗?

感谢负载。

【问题讨论】:

  • 你实际上想用 LSTM 实现什么?
  • 我正在关注一些股票价格预测教程。主要是这只是一个可以解决的问题,而不是任何严重的问题。
  • 好吧...也许它与您通过执行x.shape[1] 得到的dimof_input 有关...x 的形状是什么?通常我只是在没有索引的情况下做x.shape...
  • @Ludo 您是否设法解决了这个问题?想看看如何从 df 到 3D 张量...

标签: python machine-learning keras lstm


【解决方案1】:

输入形状

形状为(batch_size, timesteps, input_dim) 的3D 张量,(可选)形状为(batch_size, output_dim) 的2D 张量。 (来自there)。
你指定了input_dim=dimof_input。模型期望 3D 张量作为输入,但得到了 2D。如果您参考正在实施的教程,我可能会更多地说明问题的原因。
您可以尝试按如下方式重塑您的输入数据:

x = x.reshape(x.shape[0], 1, x.shape[1])

另外,关于 Keras LSTM 层输入数据的输入数据的一些信息可以在here找到。

【讨论】:

  • 谢谢!尝试您建议的重塑现在将错误更改为: ValueError: Error when checks input: expected lstm_17_input to have shape (None, None, 1) but got array with shape (33, 1, 100) 我想我一定是从根本上误解了这些输入形状工作。我现在已经设法丢失了我正在遵循的教程。让我试着找到它。感谢您的帮助。
猜你喜欢
  • 2018-02-27
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2020-09-04
相关资源
最近更新 更多