单元/单元之间的 LSTM 连接(不是时间步长)

Posted

技术标签:

【中文标题】单元/单元之间的 LSTM 连接(不是时间步长)【英文标题】:LSTM connections between cells/units (not timesteps) 【发布时间】:2018-09-15 02:40:10 【问题描述】:

我的问题是关于如何构建 LSTM 层,例如在 keras 中:

keras.layers.LSTM(units,... other options)

这些单位是单个细胞还是细胞状态的维度?

我已经阅读了有关该主题的相互冲突的 cmets,有人可以澄清一下,如果所有 LSTM 单元或块都是以 1 个时间步长的延迟互连的不同单元,还是 LSTM 层只是一个单元格,该单元格的维数为“单位”状态?

我已经制作了 3 个图表,第一个是通常显示的正常 LSTM 单元(请随意检查是否有错误),据我了解,另外两个是关于“许多细胞层。

LSTM normal diagramm

LSTM each cell connected to the next in layer

LSTM with all cells connected?

【问题讨论】:

【参考方案1】:

单位是 LSTM 层中的单元数。

model.add(LSTM(32))

意味着您正在添加一个 LSTM 层,该层具有 32 个 LSTM 单元,这些单元连接到上一层和下一层。这将导致输出形状为 (batch_size, 32),因为单位也对应于输出形状的维度(当 return_sequences 为假时)。

【讨论】:

感谢您的澄清,但单元格之间是否存在串扰?即传递单元格状态,还是每个单元格被隔离?由于我们无法定义单元状态维度,所以它是 1 吗? 同一层中的单元格没有串扰,但每个单元格都可以访问前一层中每个单元格的输出。传递状态是一个完全不同的故事。通常单元格不会传递状态,但对于像 LSTM 这样的层,您可以使用 return_states 关键字设置此行为。 所以,我看了一下,显然单元状态的尺寸与单位相同:这来自 keras self.state_size = self.units 的 LSTM 源代码所以...... LSTM 层由LSTM 单元的数量,每个单元都有一个大小为 Units 的单元状态向量,其值从 0 到 1(S 形分布)

以上是关于单元/单元之间的 LSTM 连接(不是时间步长)的主要内容,如果未能解决你的问题,请参考以下文章

如何在张量流中创建独立的 LSTM 单元?

两个堆叠的 LSTM 层之间有啥联系?

时间步长与Keras的LSTM输入中的特征之间的差异。有谁可以用一个例子解释一下?

如何在pytorch LSTM中自定义多个隐藏层单元的数量?

Go: WebSockets单元测试

LSTM 单元和单元