keras.LSTM 如何将 3D 输入转换为 2D 输出?

问题描述 投票:0回答:1

根据 keras 的 LSTM 文档,输入应该是具有形状(批量、时间步长、特征)的 3D 张量

输出将为(批次,单位),其中单位是我们想要从 LSTM 单元获得的数字特征。

据我所知,lstm 的单个单元将隐藏状态、单元状态和单个数字作为时间戳 t 的输入,并将其输出以 c(t+1) 和 h(t+1) 的形式传递到下一个单元。但从文档代码来看,它正在生成 2D 形式的输出?

inputs = np.random.random((32, 10, 8))
lstm = keras.layers.LSTM(4)
output = lstm(inputs)
output.shape
(32, 4)

问题1:向量表示如何传递给LSTM? (在每个时间戳处,它传递 8 个特征。如果有 8 个 lstm 单元并行运行,则输出大小也应为 8)

问题2:最终输出的大小如何为4。(如果我们忽略batch size)

machine-learning keras lstm
1个回答
0
投票

LSTM 与基本人工神经元架构兼容,因此您的输入层有 8 个特征,这些特征完全连接到输出层中的所有 4 个 LSTM 单元,因此在每个时间步骤中,您的网络都由大小为 8 的特征向量馈送,产生大小为 4 的输出,并且每个 LSTM 单元正在学习(除其他外)大小为 8 的向量来衡量输入。

LSTM,或者一般的循环神经网络 (RNN),通常在每个训练步骤中随时间推移输入输入向量序列,以利用其隐藏状态。在您的情况下,这些序列的长度为 10。对于每个时间步 LSTM 都会生成一个输出,但除非将

return_sequences
设置为
True
对于 LSTM 单位,否则仅返回最后一个输出。因此,每个批次的输出大小为 4,而不是 (10, 4)。

为了更深入地了解 LSTM,我推荐阅读以下内容:https://colah.github.io/posts/2015-08-Understanding-LSTMs/。 为了学习如何使用 Tensorflow 通过 LSTM 进行时间序列预测,我发现这非常有用:https://www.tensorflow.org/tutorials/structed_data/time_series

© www.soinside.com 2019 - 2024. All rights reserved.