可逆嵌入層

[原始碼]

ReversibleEmbedding 類別

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

參考文獻