KerasHub:预训练模型 / API文档 / 建模层 / TransformerEncoder层

TransformerEncoder layer

[源代码]

TransformerEncoder

keras_hub.layers.TransformerEncoder(
    intermediate_dim,
    num_heads,
    dropout=0,
    activation="relu",
    layer_norm_epsilon=1e-05,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    normalize_first=False,
    **kwargs
)

Transformer 编码器。

此类遵循论文 Attention is All You Need 中 Transformer 编码器层的架构。用户可以实例化多个此类实例来堆叠一个编码器。

此层将计算一个注意力掩码,优先考虑明确提供的掩码(padding_mask 或自定义 attention_mask),而不是隐式的 Keras 填充掩码(例如,通过向 keras.layers.Embedding 层传递 mask_zero=True)。如果同时提供了 padding_maskattention_mask,它们将被组合起来确定最终的掩码。有关更多详细信息,请参阅掩码和填充 指南

参数

  • intermediate_dim: int,前馈网络的隐藏大小。
  • num_heads:int,keras.layers.MultiHeadAttention 层中的头数。
  • dropout:float。dropout 值,由 keras.layers.MultiHeadAttention 和前馈网络共享。默认为 0.
  • activation:string 或 keras.activations。前馈网络的激活函数。默认为 "relu"
  • layer_norm_epsilon: float。层归一化组件中的 epsilon 值。默认为 1e-5
  • kernel_initializer: string 或 keras.initializers 初始化器。全连接层和多头注意力层的核初始化器。默认为 "glorot_uniform"
  • bias_initializer: string 或 keras.initializers 初始化器。全连接层和多头注意力层的偏置初始化器。默认为 "zeros"
  • normalize_first:bool。如果为 True,则注意力层和中间密集层的输入将被归一化(类似于 GPT-2)。如果设置为 False,则注意力层和中间密集层的输出将被归一化(类似于 BERT)。默认为 False
  • **kwargs: 传递给 keras.layers.Layer 的其他关键字参数,包括 nametrainabledtype 等。

示例

# Create a single transformer encoder layer.
encoder = keras_hub.layers.TransformerEncoder(
    intermediate_dim=64, num_heads=8)

# Create a simple model containing the encoder.
input = keras.Input(shape=(10, 64))
output = encoder(input)
model = keras.Model(inputs=input, outputs=output)

# Call encoder on the inputs.
input_data = np.random.uniform(size=(2, 10, 64))
output = model(input_data)

参考文献


[源代码]

call 方法

TransformerEncoder.call(
    inputs,
    padding_mask=None,
    attention_mask=None,
    training=None,
    return_attention_scores=False,
)

TransformerEncoder 的前向传播。

参数

  • inputs:一个 Tensor。TransformerEncoder 的输入数据,应具有形状 [batch_size, sequence_length, hidden_dim]。
  • padding_mask:一个布尔 Tensor。它指示由于填充而引入的 token 是否应被掩码。padding_mask 的形状应为 [batch_size, sequence_length]。
  • attention_mask:一个布尔 Tensor。用于掩码特定 token 的自定义掩码。attention_mask 的形状应为 [batch_size, sequence_length, sequence_length]。
  • training: 一个布尔值,指示该层是应在训练模式还是推理模式下运行。
  • return_attention_scores:一个布尔值,指示当 True 时输出是 (attention_output, attention_scores),当 False 时输出是 attention_output。默认为 False

返回

一个与 inputs 形状相同的 Tensor。