KerasHub: 预训练模型 / API 文档 / 建模层 / ReversibleEmbedding 层

ReversibleEmbedding 层

[源]

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_initializer: embeddings 矩阵的初始化器(参见 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 的其他关键字参数,包括 name, trainable, dtype 等。

Call 参数

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

参考文献