KerasHub:預訓練模型 / API 文件 / 模型化層 / SinePositionEncoding 層

SinePositionEncoding 層

[原始碼]

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:整數或整數張量。用於計算編碼的起始位置。這在快取解碼期間很有用,其中每個位置都在迴圈中單獨預測。

範例

# 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

參考文獻