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

MaskedLMHead 层

[来源]

MaskedLMHead

keras_hub.layers.MaskedLMHead(
    vocabulary_size=None,
    token_embedding=None,
    intermediate_activation="relu",
    activation=None,
    layer_norm_epsilon=1e-05,
    kernel_initializer="glorot_uniform",
    bias_initializer="zeros",
    **kwargs
)

掩码语言模型 (MaskedLM) 头部。

此层接受两个输入

  • inputs:应为编码令牌的张量,形状为 (batch_size, sequence_length, hidden_dim)
  • mask_positions:应为要预测的整数位置的张量,形状为 (batch_size, masks_per_sequence)

令牌编码通常应为编码器模型的最后一个输出,掩码位置应为您要为 MaskedLM 任务预测的整数位置。

该层将首先收集掩码位置的令牌编码。这些收集的令牌将通过与编码维度大小相同的密集层传递,然后转换为与输入词汇表大小相同的预测。此层将生成一个形状为 (batch_size, masks_per_sequence, vocabulary_size) 的单个输出,该输出可用于计算 MaskedLM 损失函数。

此层通常与 keras_hub.layers.MaskedLMMaskGenerator 配对使用,这将有助于为 MaskedLM 任务准备输入。

参数

  • vocabulary_size:预测的词汇表总大小。
  • token_embedding:可选。keras_hub.layers.ReversibleEmbedding 实例。如果传递,则该层将用于将模型的 hidden_dim 投影到输出 vocabulary_size
  • intermediate_activation:中间密集层的激活函数。
  • activation:层输出的激活函数。通常为 None(返回 logits)或 "softmax"(返回概率)。
  • layer_norm_epsilon:float。层归一化组件中的 epsilon 值。默认为 1e-5
  • kernel_initializer:字符串或 keras.initializers 初始化器。密集层和多头注意力层的内核初始化器。默认为 "glorot_uniform"
  • bias_initializer:字符串或 keras.initializers 初始化器。密集层和多头注意力层的偏置初始化器。默认为 "zeros"
  • **kwargs:传递给 keras.layers.Layer 的其他关键字参数,包括 nametrainabledtype 等。

示例

batch_size = 16
vocab_size = 100
hidden_dim = 32
seq_length = 50

# Generate random inputs.
token_ids = np.random.randint(vocab_size, size=(batch_size, seq_length))
# Choose random positions as the masked inputs.
mask_positions = np.random.randint(seq_length, size=(batch_size, 5))

# Embed tokens in a `hidden_dim` feature space.
token_embedding = keras_hub.layers.ReversibleEmbedding(
    vocab_size,
    hidden_dim,
)
hidden_states = token_embedding(token_ids)

preds = keras_hub.layers.MaskedLMHead(
    vocabulary_size=vocab_size,
    token_embedding=token_embedding,
    activation="softmax",
)(hidden_states, mask_positions)

参考文献