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 多维输入的主要内容,如果未能解决你的问题,请参考以下文章