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

PositionEmbedding layer

[源代码]

PositionEmbedding

keras_hub.layers.PositionEmbedding(
    sequence_length, initializer="glorot_uniform", **kwargs
)

一个为输入序列学习位置嵌入的层。

此类假设在输入张量中,最后一个维度对应特征,倒数第二个维度对应序列。

此层不支持遮罩(masking),但可以与 keras.layers.Embedding 结合使用以支持填充遮罩。

参数

  • sequence_length: 动态序列的最大长度。
  • initializer: 用于嵌入权重的初始化器。默认为 "glorot_uniform"
  • seq_axis: 输入张量中添加嵌入的轴。
  • **kwargs: 传递给 keras.layers.Layer 的其他关键字参数,包括 nametrainabledtype 等。

调用参数

  • inputs: 要计算嵌入的张量输入,形状为 (batch_size, sequence_length, hidden_dim)。仅使用输入形状,因为位置嵌入不依赖于输入序列的内容。
  • start_index: 一个整数或整数张量。用于计算位置嵌入的起始位置。这在缓存解码中很有用,其中每个位置在一个循环中单独预测。
  • positions: 形状为 (sequence_length,)(batch_size, sequence_length) 的张量。输入序列的自定义位置。如果指定,将使用此张量来计算位置嵌入,并且将忽略 start_index 参数。这对于非标准位置的情况很有用。

示例

直接在输入上调用。

>>> layer = keras_hub.layers.PositionEmbedding(sequence_length=10)
>>> layer(np.zeros((8, 10, 16)))

与 token 嵌入结合。

seq_length = 50
vocab_size = 5000
embed_dim = 128
inputs = keras.Input(shape=(seq_length,))
token_embeddings = keras.layers.Embedding(
    input_dim=vocab_size, output_dim=embed_dim
)(inputs)
position_embeddings = keras_hub.layers.PositionEmbedding(
    sequence_length=seq_length
)(token_embeddings)
outputs = token_embeddings + position_embeddings

参考