Keras 3 API 文档 / KerasNLP / 建模层 / 可逆嵌入层

可逆嵌入层

[源代码]

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,则模型将使用单独的可训练变量进行反向投影。

此层没有偏置项。

参数

  • 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:反向投影计算的数据类型。默认为层的 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_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)

参考文献