有人可以解释一下 Keras LSTM 层的以下参数吗

数据挖掘 深度学习 喀拉斯 lstm
2022-03-15 23:26:41
keras.layers.LSTM(units,stateful=False,unroll=False)

什么单位,有状态和展开在这里代表?

1个回答

units:根据官方文档,它定义了输出维度。简而言之,将使用的 LSTM 单元的数量。

单位:正整数,输出空间的维度。

单元只不过是用于处理输入的 LSTM 单元。

stateful

根据文档:

有状态的:布尔值(默认为 False)。如果为 True,则批次中索引 i 处每个样本的最后状态将用作下一批中索引 i 的样本的初始状态。

如果此参数设置为 False,则 LSTM 单元的状态或内存将在每个通过它的样本处重置。它遵循这种方式:

  1. 从批次中取样。
  2. 样本将通过 LSTM 并产生一个状态向量(条件记忆)。
  3. 给出的输出
  4. 如果stateful=True这样,状态向量将用作第二个样本的初始状态。
  5. 如果stateful=False是这样,新的状态向量将用于第二个样本。

因此,内存应该从一个样本迁移到另一个样本是由stateful参数决定的。

unroll

根据文档,

展开:布尔值(默认为 False)。如果为 True,则网络将展开,否则将使用符号循环。展开可以加速 RNN,尽管它往往更占用内存。展开仅适用于短序列。

它可以认为是:

RNN 一旦及时展开,就可以被视为非常深的前馈网络,其中所有层共享相同的权重。(深度学习,自然,2015 年)

你可以在这里阅读一篇优秀的文章

展开将使 LSTM 成为具有共享权重的深度前馈网络。通过这个图你可以看到和理解。

展开的 LSTM