ReversibleEmbedding
类keras_nlp.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_nlp.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)
参考文献