可逆嵌入
類別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
,模型將使用單獨的、可訓練的變數進行反向投影。
此層沒有偏差項。
參數
reverse
投影矩陣是否應該共享相同的權重。embeddings
矩陣的初始化器(請參閱 keras.initializers
)。embeddings
矩陣的正則化函數(請參閱 keras.regularizers
)。embeddings
矩陣的約束函數(請參閱 keras.constraints
)。compute_dtype
。logit_soft_cap
並且 reverse=True
,則輸出 logits 將按 tanh(logits / logit_soft_cap) * logit_soft_cap
進行縮放。這會縮小輸出 logits 的範圍,並且可以改善訓練效果。keras.layers.Embedding
的其他關鍵字參數,包括 name
、trainable
、dtype
等。呼叫參數
True
,則該層將執行從 output_dim
到 input_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)
參考