Keras LSTM多维输入

3
我的输入时间序列数据的形状为(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个维度是什么意思?这不是真的。 - Marcin Możejko
1个回答

5
作为您可以在Keras文档中的循环层中看到的:
对于输入形状为(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之前,你需要进行转置。第一维是时间维度。
希望这能帮到你 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接