关于Keras RNN输入形状要求的困惑

时间:2017-11-13 16:06:15

标签: keras lstm

我已经阅读了很多关于这一点的帖子。它们彼此不一致,每个答案似乎都有不同的解释,所以我想根据我对所有答案的分析来提问。

正如Keras RNN文档所述,输入形状始终采用此格式(batch_size, timesteps, input_dim)。我对此感到有点困惑,但我想,不确定,input_dim始终为1而timesteps取决于您的问题(也可能是数据维度)。这大致是正确的吗?

这个问题的原因是我在尝试将input_dim的值更改为我的数据集维度时总是出错(因为input_dim听起来像!!)所以我假设{{ 1}}一次表示LSTM的输入向量的形状。我错了吗?

input_dim

谢谢!

1 个答案:

答案 0 :(得分:2)

实际上,input_dim一次是输入向量的形状。换句话说,input_dim是输入features的编号。

但是,它不一定是1。如果您正在使用多个var,则可以是任何数字。

假设您有10个序列,每个序列有200个时间步长,并且您只测量温度。然后你有一个功能:

  • input_shape = (200,1) - 请注意,此处忽略批量大小(序列数)
  • batch_input_shape = (10,200,1) - 仅在特定情况下,例如stateful = True,您需要批量输入形状。

现在假设您不仅要测量温度,还要测量压力和体积。现在你有三个输入功能:

  • input_shape = (200,3)
  • batch_input_shape = (10,200,3)

换句话说,第一个维度是不同序列的数量。第二个是序列的长度(沿时间有多少个度量)。最后一次是每次有多少变量。