MaskedLMHead
类keras_nlp.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_nlp.layers.MaskedLMMaskGenerator
配合使用,这将有助于为 MaskedLM 任务准备输入。
参数
keras_nlp.layers.ReversibleEmbedding
实例。如果传递,该层将用于从模型的 hidden_dim
投影到输出 vocabulary_size
。None
(返回 logits)或 "softmax"
(返回概率)。1e-5
。keras.initializers
初始化器。密集层和多头注意力层的核初始化器。默认为 "glorot_uniform"
。keras.initializers
初始化器。密集层和多头注意力层的偏差初始化器。默认为 "zeros"
。keras.layers.Layer
的其他关键字参数,包括 name
、trainable
、dtype
等。示例
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_nlp.layers.ReversibleEmbedding(
vocab_size,
hidden_dim,
)
hidden_states = token_embedding(token_ids)
preds = keras_nlp.layers.MaskedLMHead(
vocabulary_size=vocab_size,
token_embedding=token_embedding,
activation="softmax",
)(hidden_states, mask_positions)
参考文献