Keras 3 API 文件 / KerasHub / 建模層 / 可逆嵌入層

可逆嵌入層

[來源]

可逆嵌入 類別

keras_hub.layers.ReversibleEmbedding(
    input_dim,
    output_dim,
    tie_weights=True,
    embeddings_initializer="uniform",
    embeddings_regularizer=None,
    embeddings_constraint=None,
    mask_zero=False,
    reverse_dtype=None,
    logit_soft_cap=None,
    **kwargs
)

一種可以反向投影到輸入維度的嵌入層。

此層是 keras.layers.Embedding 的擴展,用於語言模型。 可以透過設定 reverse=True 來「反向」呼叫此層,此時該層將從 output_dim 線性投影回 input_dim

預設情況下,反向投影將使用 embeddings 權重的轉置來投影到 input_dim(權重是「綁定」的)。 如果 tie_weights=False,模型將使用單獨的、可訓練的變數進行反向投影。

此層沒有偏差項。

參數

  • input_dim:整數。詞彙量大小,即最大整數索引 + 1。
  • output_dim:整數。密集嵌入的維度。
  • tie_weights:布林值,表示嵌入矩陣和 reverse 投影矩陣是否應該共享相同的權重。
  • embeddings_initializerembeddings 矩陣的初始化器(請參閱 keras.initializers)。
  • embeddings_regularizer:應用於 embeddings 矩陣的正則化函數(請參閱 keras.regularizers)。
  • embeddings_constraint:應用於 embeddings 矩陣的約束函數(請參閱 keras.constraints)。
  • mask_zero:布林值,表示輸入值 0 是否為應被遮罩的特殊「填充」值。
  • reverse_dtype:反向投影計算的 dtype。預設為該層的 compute_dtype
  • logit_soft_cap:如果設定了 logit_soft_cap 並且 reverse=True,則輸出 logits 將按 tanh(logits / logit_soft_cap) * logit_soft_cap 進行縮放。這會縮小輸出 logits 的範圍,並且可以改善訓練效果。
  • **kwargs:傳遞給 keras.layers.Embedding 的其他關鍵字參數,包括 nametrainabledtype 等。

呼叫參數

  • inputs:層的張量輸入。
  • reverse:布林值。如果為 True,則該層將執行從 output_diminput_dim 的線性投影,而不是正常的嵌入呼叫。預設為 False

範例

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))

embedding = keras_hub.layers.ReversibleEmbedding(vocab_size, hidden_dim)
# Embed tokens to shape `(batch_size, seq_length, hidden_dim)`.
hidden_states = embedding(token_ids)
# Project hidden states to shape `(batch_size, seq_length, vocab_size)`.
logits = embedding(hidden_states, reverse=True)

參考