Keras 中 LSTM 层的输入维度如何转换为输出维度?从阅读可拉的博客文章 http://colah.github.io/posts/2015-08-Understanding-LSTMs/,看起来好像有"timesteps"
(又名input_dim
或中的第一个值input_shape
)应等于神经元的数量,神经元的数量应等于该 LSTM 层的输出数量(由units
论证LSTM
layer).
来自阅读这个帖子 https://stats.stackexchange.com/questions/274478/understanding-input-shape-parameter-in-lstm-with-keras,我了解输入形状。我感到困惑的是 Keras 如何将输入插入到每个 LSTM“智能神经元”中。
Keras LSTM 参考 https://keras.io/layers/recurrent/#lstm
让我困惑的示例代码:
model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model.add(Dense(2))
由此,我认为 LSTM 层有 10 个神经元,每个神经元都被输入一个长度为 64 的向量。然而,它似乎有 32 个神经元,我不知道每个神经元输入了什么。据我所知,为了将 LSTM 连接到密集层,我们只需将所有 32 个输出插入到 2 个神经元中的每一个即可。让我困惑的是 LSTM 的输入层。
(类似的帖子,但不完全是我需要的 https://stackoverflow.com/questions/39969717/how-to-process-input-and-output-shape-for-keras-lstm)
2020 年重新审视和更新:我是部分地正确的!该架构有 32 个神经元。 10 代表时间步值。每个神经元都被输入一个 64 长度的向量(可能代表一个单词向量),代表 10 个时间步长的 64 个特征(可能是 64 个有助于识别单词的单词)。
32代表神经元的数量。它代表该层有多少个隐藏状态,也代表输出维度(因为我们在每个 LSTM 神经元的末尾输出一个隐藏状态)。
最后,最后一个时间步从 32 个神经元生成的 32 维输出向量被馈送到 2 个神经元的密集层,这基本上意味着将 32 长度向量插入到两个神经元,并在输入和激活上赋予权重。
更多阅读一些有帮助的答案:
- 了解 Keras LSTM https://stackoverflow.com/questions/38714959/understanding-keras-lstms
- 当我创建一个包含 N 个单元的有状态 LSTM 层时,我到底要配置什么 https://stackoverflow.com/questions/44273249/in-keras-what-exactly-am-i-configuring-when-i-create-a-stateful-lstm-layer-wi
- 初始化 LSTM 隐藏状态
喀拉斯 https://stackoverflow.com/questions/42415909/initializing-lstm-hidden-state-tensorflow-keras
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)