Keras 3 API 文档 / KerasHub / 建模层 / SinePositionEncoding 层

正弦位置编码层

[来源]

SinePositionEncoding

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

正弦位置编码层。

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

以嵌入的标记张量作为输入。输入必须具有形状 [batch_size, sequence_length, feature_size]。此层将返回与嵌入的标记张量大小相同的positional encoding,可以直接添加到嵌入的标记张量中。

参数

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

调用参数

  • inputs:用于计算嵌入的张量输入,形状为 (batch_size, sequence_length, hidden_dim)
  • 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

参考资料