Keras 3 API 文档 / KerasNLP / 模型层 / SinePositionEncoding 层

正弦位置编码层

[源代码]

SinePositionEncoding

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

正弦位置编码层。

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

以嵌入的标记张量作为输入。输入必须具有形状 [batch_size, sequence_length, feature_size]。此层将返回与嵌入的标记张量大小相同的位

参数

  • 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_nlp.layers.SinePositionEncoding()(embedding)
outputs = embedding + positional_encoding

参考文献