循环层

28 Aug 2024 | 阅读 24 分钟

RNN

RNN 层作为循环层的基类。

参数

  • cell: 可以将其定义为 RNN 单元的实例,RNN 单元是一个类,它包含
    • 一个 call(input_at_t, states_at_t) 方法,该方法返回 (output_at_t, states_at_t_plus_1)。 它还可以选择接受一个 constant 参数,这将在下面的“关于传递外部常量的说明”部分更简要地解释。
    • state_size 属性可以简单地定义为单个整数(状态整数)或整数列表/元组(每个状态一个大小)。如果是一个单独的整数,它将作为循环状态的大小,并且必须与单元输出的大小相同。
    • 一个 output_size 属性,可以将其称为单个整数或 TensorShape,以概括输出的形状。为了向后兼容,当单元不可用该属性时,可能会通过 state_size 的初始元素推断出该值。
    此外,如果单元是 RNN 单元实例的列表,那么在这种情况下,单元将按顺序堆叠在 RNN 中,从而高效实现堆叠 RNN。
  • return_sequences: 这是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 这也是一个布尔值,表示是否应在输出之外返回最后一个状态。
  • go_backwards: 这是一个布尔值,默认为 False。如果设置为 True,则会反向处理输入序列并返回反向处理后的序列。
  • stateful: 这是一个布尔值,默认为 False。如果 stateful 设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。
  • unroll: 这是一个布尔值(默认为 False)。如果设置为 true,则会展开网络,或者使用符号循环。RNN 在展开后可以提速,即使它占用大量内存,因为它更适合于较短的序列。
  • input_dim: 这是一个整数,表示输入的维度。当该层用作模型中的初始层时,将使用 input_shape 参数。
  • input_length: 它描述了输入序列的长度,当它是常量时指定。当我们想先将其连接到 Flatten 然后连接到上游的 Dense 层时,会使用它,因为它有助于计算密集层的输出形状。如果循环层不是模型中的初始层,则必须在第一层级别通过 input_shape 指定输入的长度。

输入形状

这是一个形状为 (batch_size, timesteps, input_dim) 的 3D 张量。

输出形状

  • 如果 return_state: 是一个张量列表,那么第一个张量将是输出,其余的将是最后一个状态,每个张量的形状为 (batch_size, units),例如;对于 RNN 和 GRU,状态张量的数量为 1,对于 LSTM 为 2。
  • 如果 return_sequence: 是 3D 的,那么张量的形状将是 (batch_size, timesteps, units),否则如果它是 2D 的,那么形状将是 (batch_size, units)

Masking

该层支持掩码,用于输入具有不同时间步数的 T 数据。Embedding 层与 mask_zero 参数一起使用,该参数设置为 True,用于向数据引入掩码。

关于 RNN 状态性的说明

如果将 RNN 层设置为“stateful”,则意味着在一个批次中为样本计算的状态将再次用作下一个批次样本的初始状态。这意味着在连续批次之间的样本之间进行了一对一的映射。

要启用状态性,您需要在构造函数层内指定 stateful=True,然后为模型指定固定的批次大小,这可以通过传递给模型中初始(第一)层的 batch_input_shape=(...) 来实现(如果是顺序模型),或者对于任何由 1 个或多个 Input 层组成的函数式模型,则传递给模型中所有第一层的 batch_shape=(...)。输入的预期形状包括批次大小,为一个整数元组,例如 (32, 10, 100),并在调用 fit() 时指定 shuffle=False

此外,如果您愿意重置模型的某些层或整个模型的状态,则需要调用 .reset_states()

关于指定 RNN 初始状态的说明

可以通过使用 initial_state 关键字参数来符号化指定 RNN 层的初始状态,其值必须是一个张量或张量列表,表示 RNN 层的初始状态。

可以通过使用 states 关键字参数调用 reset_states 来数值化指定 RNN 层的初始状态,其值必须是一个 NumPy 数组或数组列表,表示 RNN 层的初始状态。

关于向 RNN 传递外部常量的说明

可以通过使用 RNN.__call__RNN.call 方法的 constants 关键字参数来将外部常量传递给单元,这要求 cell.call 方法接受相同的关键字参数 constants。这些常量用于根据其他静态输入(随时间不变)来条件化单元转换。

示例

SimpleRNN

它是一个全连接层,其输出会反馈到输入。

参数 

  • units: 可以将其定义为一个正整数,表示输出空间的维度。
  • activation: 要使用的激活函数,默认为双曲正切 (tanh)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • use_bias: 这是一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 指的是用于偏置向量的初始化器。
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(层的输出)的正则化函数。
  • kernel_constraint: 可以定义为应用于 kernel 的约束函数。
  • bias_constraint: 可以定义为应用于偏置向量的约束函数。
  • recurrent_constraint: 可以定义为应用于 recurrent_kernel 权重矩阵的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。
  • return_sequences: 指的是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 指的是一个布尔值,表示是否应在输出之外返回最后一个状态。
  • go_backwards: 指的是一个布尔值,默认为 False。如果设置为 true,则会反向处理输入序列并返回反向处理后的序列。
  • stateful: 指的是一个布尔值,默认为 False。如果设置为 true,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。
  • unroll: 这是一个布尔值(默认为 False)。如果设置为 true,则会展开网络,或者使用符号循环。RNN 在展开后可以提速,即使它占用大量内存,因为它更适合于较短的序列。

GRU

它被称为门控循环单元(Gated Recurrent Unit),有其两种变体,其中默认的一种(基于 1406.1078v3)包含一个在矩阵乘法应用于隐藏状态之前应用的重置门,另一种(基于原始 1406.1078v1)则顺序相反。

第二个版本(第二个)与 CuDNNGRU(仅 GPU)匹配,允许 CPU 推理。因此,可以说它包含 kernelrecurrent_kernel 的不同偏置,因此最好使用 'reset_after'=Truerecurrent_activation= 'sigmoid'

参数

  • units: 可以将其定义为一个正整数,表示输出空间的维度。
  • activation: 指的是要使用的激活函数,默认为双曲正切 (tanh)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • recurrent_activation: 是用于循环步骤的激活函数,默认为硬 S 型函数 (hard_sigmoid)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • use_bias: 这是一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指示用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 可以定义为偏置向量的初始化器。
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(层的输出)的正则化函数。
  • kernel_constraint: 指示应用于 kernel 的约束函数。
  • bias_constraint: 指的是应用于偏置向量的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。
  • implementation: 这是一个实现模式,为 1 或 2。在模式 1 中,操作将构造为大量较小的点积和加法,而在模式 2 中,它们将被批量化为几个大的操作。这些模式将在不同的硬件和应用程序上展示不同的性能特征。
  • return_sequences: 指的是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 它还指一个布尔值,表示是否应在输出之外返回最后一个状态。
  • go_backwards: 指的是一个布尔值,默认为 False。如果设置为 true,则会反向处理输入序列并返回反向处理后的序列。
  • stateful: 可以定义为一个布尔值,默认为 False。如果设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。
  • unroll: 可以定义为一个布尔值(默认为 False)。如果设置为 true,则会展开网络,或者使用符号循环。RNN 在展开后可以提速,即使它占用大量内存,因为它更适合于较短的序列。
  • reset_after: 这是一个 GRU 的约定,表示重置门是在矩阵乘法之前还是之后应用。False = “之前”(默认),True = “之后”(与 CuDNN 兼容)。

LSTM

它被称为长短期记忆(Long Short-Term Memory),由 Hochreiter 在 1997 年提出。

参数

  • units: 指的是一个正整数,表示输出空间的维度。
  • activation: 可以定义为要使用的激活函数,默认为双曲正切 (tanh)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • recurrent_activation: 是用于循环步骤的激活函数,默认为硬 S 型函数 (hard_sigmoid)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • use_bias: 指的是一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 指示偏置向量的初始化器。
  • unit_forget_bias: 指示一个布尔值,如果设置为 True,则在初始化时会在遗忘门的偏置上加 1。同时,它会强制 bias_initializer="zeros"
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(层的输出)的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 矩阵的约束函数。
  • bias_constraint: 指的是应用于偏置向量的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。
  • implementation: 这是一个实现模式,为 1 或 2。在模式 1 中,操作将构造为大量较小的点积和加法,而在模式 2 中,它们将被批量化为几个大的操作。这些模式将在不同的硬件和应用程序上展示不同的性能特征。
  • return_sequences: 指的是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 它还指一个布尔值,表示是否应在输出之外返回最后一个状态。
  • go_backwards: 可以定义为一个布尔值,默认为 False。如果设置为 true,则会反向处理输入序列并返回反向处理后的序列。
  • stateful: 可以理解为一个布尔值,默认为 False。如果设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。
  • unroll: 指示一个布尔值(默认为 False)。如果设置为 true,则会展开网络,或者使用符号循环。RNN 在展开后可以提速,即使它占用大量内存,因为它更适合于较短的序列。

ConvLSTM2D

这是一个卷积 LSTM 层,与 LSTM 层相同,只是输入和循环转换都是卷积的。

参数

  • filters: 指的是一个整数,表示输出空间的维度或卷积中的总输出滤波器数。
  • kernel_size: 可以是整数或 n 个整数的元组/列表,表示卷积窗口的维度。
  • strides: 可以是整数或 n 个整数的元组/列表,表示卷积步幅。如果指定任何步幅值不等于 1,则它与指定 dilation_rate 值不等于 1 不兼容。
  • padding: “valid”或“same”(区分大小写)。
  • data_format: 一个字符串,为“channels_last”或“channels_first”,表示输入维度的顺序。“channels_last”对应输入形状 (batch, time, ..., channels),“channels_first”对应输入形状 (batch, time, channels, ...)。默认值为 Keras 配置文件中 ~/.keras/keras.jsonimage_data_format 值。如果无法在该文件夹中找到,则默认为“channels_last”。
  • dilation_rate: 可以是整数或 n 个整数的元组/列表,表示要用于膨胀卷积的膨胀率。如果指定任何步幅值不等于 1,则它与指定 dilation_rate 值不等于 1 不兼容。
  • activation: 要使用的激活函数。当未指定时,默认为线性激活 a(x) = x,或者我们可以说未应用任何激活函数。
  • recurrent_activation: 是用于循环步骤的激活函数。
  • use_bias: 指的是一个布尔值,定义该层是否使用偏置向量。
  • kernel_initializer: 可以定义为 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 可以理解为用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 指的是用于偏置向量的初始化器。
  • unit_forget_bias: 可以定义为一个布尔值,如果设置为 True,则在初始化时会在遗忘门的偏置上加 1。同时,它会强制 bias_initializer="zeros"
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(即层的输出)的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 矩阵的约束函数。
  • recurrent_constraint: 定义为应用于 recurrent_kernel 权重矩阵的约束函数。
  • bias_constraint: 指示应用于偏置向量的约束函数。
  • return_sequences: 指的是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • go_backwards: 指的是一个布尔值,默认为 False。如果设置为 true,则会反向处理输入序列并返回反向处理后的序列。
  • stateful: 指示一个布尔值,默认为 False。如果设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。

输入形状

如果 data_format"channels_first",则 5D 张量的输入形状为 (samples, time, channels, rows, cols),否则如果 data_format"channels_last",则 5D 张量的输入形状为 (samples, time, rows, cols, channels)

输出形状

  • 如果 return_sequences
    • 如果 data_format"channels_first",则 5D 张量的输出形状为 (samples, time, filters, output_row, output_col)
    • 如果 data_format"channels_last",则 5D 张量的输出形状为 (samples, time, output_row, output_col, filters)
  • else
    • 如果 data_format"channels_first",则 4D 张量的输出形状为 (samples, filters, output_row, output_col)
    • 如果 data_format"channels_last",则 4D 张量的输出形状为 (samples, output_row, output_col, filters),其中 o_row 和 o_col 取决于滤波器和填充的形状。

引发

  • ValueError: 在构造参数无效时引发。

ConvLSTM2DCell

它是 ConvLSTM2D 层的单元类。

参数

  • filters: 指的是一个整数,表示输出空间的维度或卷积中的总输出滤波器数。
  • kernel_size: 可以是整数或 n 个整数的元组/列表,表示卷积窗口的维度。
  • strides: 可以是整数或 n 个整数的元组/列表,表示卷积步幅。如果指定任何步幅值不等于 1,则它与指定 dilation_rate 值不等于 1 不兼容。
  • padding: “valid”或“same”(区分大小写)。
  • data_format: 可以定义为字符串“channels_last”或“channels_first”,表示输入维度的顺序。默认值为 Keras 配置文件中 ~/.keras/keras.jsonimage_data_format 值。如果无法在该文件夹中找到,则默认为“channels_last”。
  • dilation_rate: 可以是整数或 n 个整数的元组/列表,表示要用于膨胀卷积的膨胀率。如果指定任何步幅值不等于 1,则它与指定 dilation_rate 值不等于 1 不兼容。
  • activation: 要使用的激活函数。当未指定时,默认为线性激活 a(x) = x,或者我们可以说未应用任何激活函数。
  • recurrent_activation: 是用于循环步骤的激活函数。
  • use_bias: 可以定义为一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 可以定义为偏置向量的初始化器。
  • unit_forget_bias: 可以定义为一个布尔值,如果设置为 True,则在初始化时会在遗忘门的偏置上加 1。同时,它会强制 bias_initializer="zeros"
  • kernel_regularizer: 可以定义为应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 可以定义为应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 矩阵的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • bias_constraint: 可以定义为应用于偏置向量的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。

SimpleRNNCell

它是 SimpleRNN 的单元类。

参数

  • units: 一个正整数,表示输出空间的维度。
  • activation: 要使用的激活函数。当未指定时,默认为线性激活 a(x) = x,或者我们可以说未应用任何激活函数。
  • use_bias: 可以定义为一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 指示偏置向量的初始化器。
  • kernel_regularizer: 可以定义为应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 可以定义为应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 矩阵的约束函数。
  • recurrent_constraint: 可以定义为应用于 recurrent_kernel 权重矩阵的约束函数。
  • bias_constraint: 是应用于偏置向量的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。

GRUCell

它是 GRU 层的单元类。

参数

  • units: 指的是一个正整数,表示输出空间的维度。
  • activation: 可以理解为要使用的激活函数,默认为双曲正切 (tanh)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • recurrent_activation: 可以定义为用于循环步骤的激活函数,默认为硬 S 型函数 (hard_sigmoid)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • use_bias: 指的是一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 可以定义为用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 它指的是偏置向量的初始化器。
  • kernel_regularizer: 可以定义为应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 是应用于偏置向量的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 的约束函数。
  • bias_constraint: 可以理解为应用于偏置向量的约束函数。
  • recurrent_constraint: 指示应用于 recurrent_kernel 权重矩阵的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。
  • implementation: 这是一个实现模式,为 1 或 2。在模式 1 中,操作将构造为大量较小的点积和加法,而在模式 2 中,它们将被批量化为几个大的操作。这些模式将在不同的硬件和应用程序上展示不同的性能特征。
  • reset_after: 这是一个 GRU 的约定,表示重置门是在矩阵乘法之前还是之后应用。False = “之前”(默认),True = “之后”(与 CuDNN 兼容)。

LSTMCell

它被称为 LSTM 层的单元类。

参数

  • units: 指的是一个正整数,表示输出空间的维度。
  • activation: 要使用的激活函数,默认为双曲正切 (tanh)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • recurrent_activation: 是用于循环步骤的激活函数,默认为硬 S 型函数 (hard_sigmoid)。如果传递 None,则表示未应用任何函数(即“线性”激活 a(x) = x)。
  • use_bias: 指的是一个布尔值,表示该层是否使用偏置向量。
  • kernel_initializer: 指的是用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指示用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 它指的是偏置向量的初始化器。
  • unit_forget_bias: 这是一个布尔值,如果设置为 True,则在初始化时会在遗忘门的偏置上加 1。同时,它会强制 bias_initializer="zeros"
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • kernel_constraint: 指的是应用于 kernel 的约束函数。
  • bias_constraint: 指的是应用于偏置向量的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换输入的单元的比例。
  • recurrent_dropout: 是一个介于 0 和 1 之间的浮点数,表示用于线性变换循环状态的单元的比例。
  • implementation: 这是一个实现模式,为 1 或 2。在模式 1 中,操作将构造为大量较小的点积和加法,而在模式 2 中,它们将被批量化为几个大的操作。这些模式将在不同的硬件和应用程序上展示不同的性能特征。

CuDNNGRU

它是 GRU 最快的实现之一,由 CuDNN 支持,只能在 GPU 上运行,并使用 TensorFlow 作为后端。

参数

  • units: 指的是一个正整数,表示输出空间的维度。
  • kernel_initializer: 可以定义为用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 可以定义为用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 可以定义为偏置向量的初始化器。
  • kernel_regularizer: 指的是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 指的是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 指的是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(层的输出)的正则化函数。
  • kernel_constraint: 是应用于 kernel 的约束函数。
  • bias_constraint: 是应用于偏置向量的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • return_sequences: 这是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 这也是一个布尔值,表示是否应在输出之外返回最后一个状态。
  • stateful: 这是一个布尔值,默认为 False。如果设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。

CuDNNLSTM

它是 LSTM 最快的实现,由 CuDNN 支持,只能在 GPU 上运行,并使用 TensorFlow 作为后端。

参数

  • units: 这是一个正整数,表示输出空间的维度。
  • kernel_initializer: 是用于线性变换输入的 kernel 权重矩阵的初始化器。
  • recurrent_initializer: 指的是用于线性变换循环状态的 recurrent_kernel 权重矩阵的初始化器。
  • bias_initializer: 是偏置向量的初始化器。
  • unit_forget_bias: 这是一个布尔值,如果设置为 True,则在初始化时会在遗忘门的偏置上加 1。同时,它会强制 bias_initializer="zeros"
  • kernel_regularizer: 是应用于 kernel 权重矩阵的正则化函数。
  • recurrent_regularizer: 是应用于 recurrent_kernel 权重矩阵的正则化函数。
  • bias_regularizer: 是应用于偏置向量的正则化函数。
  • activity_regularizer: 指的是应用于激活(层的输出)的正则化函数。
  • kernel_constraint: 是应用于 kernel 的约束函数。
  • bias_constraint: 是应用于偏置向量的约束函数。
  • recurrent_constraint: 指的是应用于 recurrent_kernel 权重矩阵的约束函数。
  • return_sequences: 这是一个布尔值,表示是返回输出序列的最后一个输出还是完整的输出序列。
  • return_states: 这也是一个布尔值,表示是否应在输出之外返回最后一个状态。

stateful: 这是一个布尔值,默认为 False。如果设置为 True,则对于批次中索引为 i 的每个样本,最后一个状态将用作下一个批次中索引为 i 的样本的初始状态。