Keras 3 API 文件 / KerasHub / 建模層 / 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:浮點數。層歸一化組件中的 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)

參考文獻