MaskedLMMaskGenerator
类keras_hub.layers.MaskedLMMaskGenerator(
vocabulary_size,
mask_selection_rate,
mask_token_id,
mask_selection_length=None,
unselectable_token_ids=[0],
mask_token_rate=0.8,
random_token_rate=0.1,
**kwargs
)
应用语言模型掩码的层。
此层对于准备用于掩码语言建模 (MaskedLM) 任务的输入非常有用。它遵循 原始 BERT 论文 中描述的掩码策略。给定分词后的文本,它会随机选择一定数量的 token 进行掩码。然后,对于每个选定的 token,它有机会(可配置)被替换为“掩码 token”或随机 token,或者保持不变。
输入数据应作为 tensor、tf.RaggedTensor
或列表传递。对于批量输入,输入应为列表的列表或秩为 2 的 tensor。对于非批量输入,每个元素应为列表或秩为 1 的 tensor。
此层可以与 tf.data
一起使用,以在训练期间动态生成掩码。
参数
mask_positions
、mask_ids
和 mask_weights
将被填充为长度为 mask_selection_length
的密集 tensor,否则输出将为 RaggedTensor。默认为 None
。0
对应于 padding token 并忽略它。默认为 [0]
。mask_token_rate
必须介于 0 和 1 之间,表示掩码 token 替换为选定进行掩码的 token 的频率。默认为 0.8
。random_token_rate
必须介于 0 和 1 之间,表示随机 token 替换为选定进行掩码的 token 的频率。注意:mask_token_rate + random_token_rate <= 1,对于 (1 - mask_token_rate - random_token_rate),token 将不会更改。默认为 0.1
。返回
mask_selection_length
为 None,则为 RaggedTensor。被掩码的 token_id 的位置。mask_ids:Tensor,如果 mask_selection_length
为 None,则为 RaggedTensor。掩码位置的原始 token ID。mask_weights:Tensor,如果 mask_selection_length
为 None,则为 RaggedTensor。mask_weights
具有与 mask_positions
和 mask_ids
相同的形状。mask_weights
中的每个元素应为 0 或 1,1 表示 mask_positions
中的相应位置是实际掩码,0 表示它是 padding。示例
基本用法。
masker = keras_hub.layers.MaskedLMMaskGenerator(
vocabulary_size=10,
mask_selection_rate=0.2,
mask_token_id=0,
mask_selection_length=5
)
# Dense input.
masker([1, 2, 3, 4, 5])
# Ragged input.
masker([[1, 2], [1, 2, 3, 4]])
掩码包含特殊 token 的批次。
pad_id, cls_id, sep_id, mask_id = 0, 1, 2, 3
batch = [
[cls_id, 4, 5, 6, sep_id, 7, 8, sep_id, pad_id, pad_id],
[cls_id, 4, 5, sep_id, 6, 7, 8, 9, sep_id, pad_id],
]
masker = keras_hub.layers.MaskedLMMaskGenerator(
vocabulary_size = 10,
mask_selection_rate = 0.2,
mask_selection_length = 5,
mask_token_id = mask_id,
unselectable_token_ids = [
cls_id,
sep_id,
pad_id,
]
)
masker(batch)