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 論文 中描述的遮罩策略。給定分詞後的文字,它會隨機選擇一定數量的詞進行遮罩。然後,對於每個選定的詞,它都有一定的機率(可配置)被替換為「遮罩詞」或隨機詞,或者保持不變。
輸入資料應作為張量、tf.RaggedTensor
或列表傳遞。對於批次輸入,輸入應為列表的列表或二階張量。對於非批次輸入,每個元素都應為列表或一階張量。
此層可以與 tf.data
一起使用,以便在訓練期間動態生成遮罩。
參數
mask_positions
、mask_ids
和 mask_weights
將被填充到長度為 mask_selection_length
的密集張量,否則輸出將為 RaggedTensor。預設為 None
。0
對應於填充詞並忽略它。預設為 [0]
。mask_token_rate
必須介於 0 和 1 之間,表示遮罩詞替換選定遮罩詞的頻率。預設為 0.8
。random_token_rate
必須介於 0 到 1 之間,表示以隨機詞彙替換選定遮罩詞彙的頻率。注意:mask_token_rate + random_token_rate <= 1,而對於 (1 - mask_token_rate - random_token_rate),詞彙將不會被更改。預設值為 0.1
。回傳值
mask_selection_length
為 None,則為不規則張量。被遮罩的 token_ids 的位置。mask_ids:張量,如果 mask_selection_length
為 None,則為不規則張量。遮罩位置的原始詞彙 ID。mask_weights:張量,如果 mask_selection_length
為 None,則為不規則張量。mask_weights
的形狀與 mask_positions
和 mask_ids
相同。mask_weights
中的每個元素應為 0 或 1,1 表示 mask_positions
中的對應位置是實際遮罩,0 表示它是填充。範例
基本用法。
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]])
遮罩包含特殊詞彙的批次。
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)