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

SinePositionEncoding layer

[源代码]

SinePositionEncoding

keras_hub.layers.SinePositionEncoding(max_wavelength=10000, **kwargs)

正弦位置编码层。

该层将位置编码计算为具有几何增长波长的正弦和余弦函数的混合。在 Attention is All You Need 中定义和公式化。

输入为一个嵌入的token张量。输入形状必须为 [batch_size, sequence_length, feature_size]。该层将返回一个与嵌入的token张量大小相同的位置编码,可以直接加到嵌入的token张量上。

参数

  • max_wavelength:正弦/余弦曲线的最大角波长,如Attention is All You Need中所述。默认为 10000
  • **kwargs: 传递给 keras.layers.Layer 的其他关键字参数,包括 nametrainabledtype 等。

调用参数

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

示例

# create a simple embedding layer with sinusoidal positional encoding
seq_len = 100
vocab_size = 1000
embedding_dim = 32
inputs = keras.Input((seq_len,), dtype="float32")
embedding = keras.layers.Embedding(
    input_dim=vocab_size, output_dim=embedding_dim
)(inputs)
positional_encoding = keras_hub.layers.SinePositionEncoding()(embedding)
outputs = embedding + positional_encoding

参考文献