Keras 3 API 文件 / KerasHub / 模型層 / SinePositionEncoding 層

SinePositionEncoding 層

[來源]

SinePositionEncoding 類別

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

正弦位置編碼層。

此層將位置編碼計算為正弦和餘弦函數的混合,其波長呈幾何級數增長。在 Attention is All You Need 中定義和公式化。

將嵌入的詞彙張量作為輸入。輸入必須具有形狀 [批次大小, 序列長度, 特徵大小]。此層將返回與嵌入詞彙張量大小相同的位置編碼,可以直接將其添加到嵌入詞彙張量中。

參數

  • max_wavelength:正弦/餘弦曲線的最大角波長,如 Attention is All You Need 中所述。預設值為 10000
  • **kwargs:傳遞給 keras.layers.Layer 的其他關鍵字參數,包括 nametrainabledtype 等。

呼叫參數

  • inputs:要計算嵌入的張量輸入,形狀為 (批次大小, 序列長度, 隱藏維度)
  • 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

參考