Keras LSTM 多维输入

Posted

技术标签:

【中文标题】Keras LSTM 多维输入【英文标题】:Keras LSTM multi-dimension input 【发布时间】:2017-07-25 12:01:08 【问题描述】:

我的输入时间序列数据的形状为 (nb_samples, 75, 32)。 75 是时间步长,32 是输入维度。

model = Sequential()
model.add(LSTM(4, input_shape=(75, 32)))
model.summary()

LSTM 权重向量,[W_i, W_c, W_f, W_o] 都是 32 维,但输出只是单个值。上述模型的输出形状为 (1,4)。但是在 LSTM 中,输出也是一个向量,所以对于上面的多对一实现,它不应该是 (32,4) 吗?为什么它也为多维输入提供单个值?

【问题讨论】:

这个向量有 32 维是什么意思?这不是真的。 【参考方案1】:

正如您在Keras doc for reccurent layers 中看到的那样

对于形状 (nb_sample, timestep, input_dim) 的输入,您有两个可能的输出:

如果您在 LSTM 中设置 return_sequence=True(这不是您的情况),您将返回每个隐藏状态,因此 LSTM “读取”您的序列时的中间步骤。您会得到形状为 (nb_sample, timestep, output_dim) 的输出。

如果你设置return_sequence=False(这是默认值),它只会输出最后一个状态。所以你会得到一个形状为(nb_sample, output_dim)的输出。

所以如果你像这样定义你的 LSTM 层:

model.add(LSTM(4, return_sequence=True, input_shape=(75, 32)))

您将得到形状为(None, 75, 4) 的输出。如果 32 是您的时间维度,则您必须在将数据输入 LSTM 之前对其进行转置。第一个维度是时间维度。

我希望这会有所帮助:)

【讨论】:

以上是关于Keras LSTM 多维输入的主要内容,如果未能解决你的问题,请参考以下文章

keras---cnn---rnn---lstm

Tensorflow LSTM实现多维输入输出预测实践详解

Tensorflow LSTM实现多维输入输出预测实践详解

Tensorflow LSTM实现多维输入输出预测实践详解

Recurrentshop 和 Keras:多维 RNN 导致维度不匹配错误

使用 Keras 将平滑多维函数逼近到 1e-4 的误差