【问题标题】:LSTM architecture in Keras implementation?Keras 实现中的 LSTM 架构?
【发布时间】:2019-05-26 17:54:42
【问题描述】:

我是Keras 的新手,我正在了解Keras documentation 中的LSTM 及其实现细节。这很容易,但突然间我看到了this SO 的帖子和评论。它让我对实际的 LSTM 架构感到困惑:

代码如下:

model = Sequential()
model.add(LSTM(32, input_shape=(10, 64)))
model.add(Dense(2))

据我了解,10 表示编号。时间步长,每一个都被馈送到各自的LSTM cell; 64 表示编号。每个时间步的特征。

但是,上面帖子中的评论和实际答案让我对 32 的含义感到困惑。

另外,LSTM 的输出如何连接到Dense 层。

手绘的图解说明对架构的可视化很有帮助。

编辑

this another SO帖子而言,32表示return_sequences=True每个产生的输出向量的长度。

如果这是真的,那么我们如何将 10 个 LSTM 单元产生的每个 32 维输出连接到下一个密集层?

另外,请告知第一个 SO 帖子答案是否模棱两可

【问题讨论】:

标签: python keras deep-learning lstm rnn


【解决方案1】:

我们如何连接每个产生的 32 维输出 10 个 LSTM 单元到下一个密集层?

这取决于你想怎么做。假设你有:

model.add(LSTM(32, input_shape=(10, 64), return_sequences=True))

然后,该层的输出形状为(10, 32)。此时,您可以使用Flatten 层来获取带有320 分量的单个向量,或者使用TimeDistributed 独立处理每个10 向量:

model.add(TimeDistributed(Dense(15))

该层的输出形状为(10, 15),并且相同的权重应用于每个LSTM单元的输出。

很容易找出号码。输入所需的 LSTM 单元数(以时间跨度指定)

如何确定号码。输出中需要多少个 LSTM 单元?

根据return_sequences 的值,您要么获得最后一个 LSTM 单元(最后一个时间步)的输出,要么获得每个LSTM 单元的输出。至于输出向量的维度,这只是你必须做出的选择,就像密集层的大小,或者卷积层中的过滤器数量一样。

来自 10 个 LSTM 单元的 32 维向量中的每一个如何连接到 TimeDistributed 层?

按照前面的示例,您将拥有一个 (10, 32) 张量,即 10 个 LSTM 单元中的每个单元都有一个大小为 32 的向量。 TimeDistributed(Dense(15)) 所做的是创建一个 (15, 32) 权重矩阵和一个大小为 15 的偏置向量,然后:

for h_t in lstm_outputs:
    dense_outputs.append(
        activation(dense_weights.dot(h_t) + dense_bias)
    )

因此,dense_outputs 的大小为 (10, 15),并且相同的权重独立应用于每个 LSTM 输出。

请注意,当您不知道需要多少时间步时,一切仍然有效,例如用于机器翻译。在这种情况下,您使用None 作为时间步长;我写的所有内容仍然适用,唯一的区别是时间步数不再固定。 Keras 将根据需要重复 LSTM、TimeDistributed 等多次(取决于输入)。

【讨论】:

  • 所以,这意味着单位是指每个时间步长 LSTM 单元输出的向量的大小。但是,Keras 怎么知道这些 LSTM 单元中有多少要使用 OR 来训练数据呢?我的意思是,很容易找出不。输入所需的 LSTM 单元的数量(以时间跨度指定),但是,如何找出编号。输出中需要多少个 LSTM 单元?
  • 另外,你能解释一下来自 10 个 LSTM 单元的 32 维向量是如何连接到 TimeDistributed 层的吗?
  • 在您的回答中,您写的是:You either get the output of the last LSTM cell (last timestep) or the output of every LSTM cell,但我问的是机器翻译等翻译/输出句子长度可变且无法提前知道的情况。那么,在这种情况下,有多少LSTM cells在输出翻译后的句子中发挥了作用?
猜你喜欢
  • 2019-06-29
  • 2019-07-03
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 2018-07-21
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多