当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


Python tf.keras.layers.GRU用法及代码示例

门控循环单元 - Cho 等人。 2014 年。

继承自:GRURNNLayerModule

用法

tf.keras.layers.GRU(
    units, activation='tanh', recurrent_activation='sigmoid',
    use_bias=True, kernel_initializer='glorot_uniform',
    recurrent_initializer='orthogonal',
    bias_initializer='zeros', kernel_regularizer=None,
    recurrent_regularizer=None, bias_regularizer=None, activity_regularizer=None,
    kernel_constraint=None, recurrent_constraint=None, bias_constraint=None,
    dropout=0.0, recurrent_dropout=0.0, return_sequences=False, return_state=False,
    go_backwards=False, stateful=False, unroll=False, time_major=False,
    reset_after=True, **kwargs
)

参数

  • units 正整数,输出空间的维度。
  • activation 要使用的激活函数。默认值:双曲正切(tanh)。如果您通过 None ,则不会应用激活(即 "linear" 激活:a(x) = x )。
  • recurrent_activation 用于循环步骤的激活函数。默认值:sigmoid (sigmoid)。如果您通过 None ,则不会应用激活(即 "linear" 激活:a(x) = x )。
  • use_bias 布尔值,(默认 True ),图层是否使用偏置向量。
  • kernel_initializer kernel 权重矩阵的初始化器,用于输入的线性变换。默认值:glorot_uniform
  • recurrent_initializer recurrent_kernel 权重矩阵的初始化器,用于循环状态的线性变换。默认值:orthogonal
  • bias_initializer 偏置向量的初始化器。默认值:zeros
  • kernel_regularizer 应用于kernel 权重矩阵的正则化函数。默认值:None
  • recurrent_regularizer 应用于recurrent_kernel 权重矩阵的正则化函数。默认值:None
  • bias_regularizer 应用于偏置向量的正则化函数。默认值:None
  • activity_regularizer 应用于层输出的正则化函数("activation")。默认值:None
  • kernel_constraint 应用于kernel 权重矩阵的约束函数。默认值:None
  • recurrent_constraint 应用于recurrent_kernel 权重矩阵的约束函数。默认值:None
  • bias_constraint 应用于偏置向量的约束函数。默认值:None
  • dropout 在 0 和 1 之间浮点数。为输入的线性变换而下降的单位分数。默认值:0。
  • recurrent_dropout 在 0 和 1 之间浮点数。用于循环状态的线性变换的单位的分数。默认值:0。
  • return_sequences 布尔值。是返回输出序列中的最后一个输出,还是返回完整序列。默认值:False
  • return_state 布尔值。是否返回除了输出之外的最后一个状态。默认值:False
  • go_backwards 布尔值(默认 False )。如果为 True,则反向处理输入序列并返回反向序列。
  • stateful 布尔值(默认为 False)。如果为 True,则批次中索引 i 处每个样本的最后状态将用作下一批中索引 i 的样本的初始状态。
  • unroll 布尔值(默认为 False)。如果为 True,则网络将展开,否则将使用符号循环。展开可以speed-up一个RNN,虽然它往往更多memory-intensive。展开仅适用于短序列。
  • time_major inputsoutputs 张量的形状格式。如果为 True,输入和输出的形状将是 [timesteps, batch, feature] ,而在 False 情况下,它将是 [batch, timesteps, feature] 。使用time_major = True 效率更高一些,因为它避免了 RNN 计算开始和结束时的转置。但是,大多数 TensorFlow 数据是 batch-major,因此默认情况下,此函数接受输入并以 batch-major 形式发出输出。
  • reset_after GRU 约定(是否在矩阵乘法之后或之前应用重置门)。 False = "before",True = "after"(默认和 cuDNN 兼容)。

属性

  • activation
  • bias_constraint
  • bias_initializer
  • bias_regularizer
  • dropout
  • implementation
  • kernel_constraint
  • kernel_initializer
  • kernel_regularizer
  • recurrent_activation
  • recurrent_constraint
  • recurrent_dropout
  • recurrent_initializer
  • recurrent_regularizer
  • reset_after
  • states
  • units
  • use_bias

有关 RNN API 使用的详细信息,请参阅 Keras RNN API 指南。

根据可用的运行时硬件和约束,该层将选择不同的实现(基于 cuDNN 或 pure-TensorFlow)以最大化性能。如果 GPU 可用并且该层的所有参数都满足 cuDNN 内核的要求(详见下文),则该层将使用快速 cuDNN 实现。

使用 cuDNN 实现的要求是:

  1. activation == tanh
  2. recurrent_activation == sigmoid
  3. recurrent_dropout == 0
  4. unrollFalse
  5. use_biasTrue
  6. reset_afterTrue
  7. 输入,如果使用掩码,严格来说是right-padded。
  8. 在最外层的上下文中启用了即刻执行。

GRU 实现有两种变体。默认的基于 v3,并在矩阵乘法之前将重置门应用于隐藏状态。另一种是根据原件,顺序颠倒。

第二个变体与 CuDNNGRU (GPU-only) 兼容,并允许在 CPU 上进行推理。因此,它对 kernelrecurrent_kernel 有不同的偏见。要使用此变体,请设置 reset_after=Truerecurrent_activation='sigmoid'

例如:

inputs = tf.random.normal([32, 10, 8])
gru = tf.keras.layers.GRU(4)
output = gru(inputs)
print(output.shape)
(32, 4)
gru = tf.keras.layers.GRU(4, return_sequences=True, return_state=True)
whole_sequence_output, final_state = gru(inputs)
print(whole_sequence_output.shape)
(32, 10, 4)
print(final_state.shape)
(32, 4)

调用参数:

  • inputs:一个 3D 张量,有形状[batch, timesteps, feature].
  • mask: 形状的二进制张量[samples, timesteps]指示是否应屏蔽给定时间步(可选,默认为None)。个人True条目指示应使用相应的时间步长,而Falseentry 表示应该忽略相应的时间步长。
  • training:Python 布尔值,指示层应该在训练模式还是推理模式下运行。此参数在调用时传递给单元格。这仅在以下情况下才相关dropout或者recurrent_dropout使用(可选,默认为None)。
  • initial_state:要传递给单元格第一次调用的初始状态张量列表(可选,默认为None这会导致创建zero-filled 初始状态张量)。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.layers.GRU。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。