KerasHub:預訓練模型 / API 文件 / 模型化層 / 旋轉式嵌入層

旋轉式嵌入層

[原始碼]

RotaryEmbedding 類別

keras_hub.layers.RotaryEmbedding(
    max_wavelength=10000, scaling_factor=1.0, sequence_axis=1, feature_axis=-1, **kwargs
)

旋轉位置編碼層。

此層使用旋轉矩陣編碼絕對位置資訊。它使用幾何級數增加波長的正弦和餘弦函數混合計算旋轉編碼。定義和公式化於 RoFormer:使用旋轉位置嵌入增強的 Transformer 中。輸入必須是具有序列維度和特徵維度的張量。通常,這將是形狀為 (batch_size, sequence_length, feature_length)(batch_size, sequence_length, num_heads, feature_length) 的輸入。此層將返回一個新張量,其中旋轉嵌入已應用於輸入張量。

引數

  • max_wavelength:整數。正弦/餘弦曲線的最大角波長。
  • scaling_factor:浮點數。用於縮放詞符位置的縮放因子。
  • sequence_axis:整數。輸入張量中的序列軸。
  • feature_axis:整數。輸入張量中的特徵軸。
  • **kwargs:傳遞給 keras.layers.Layer 的其他關鍵字引數,包括 nametrainabledtype 等。

呼叫引數

  • inputs:要應用嵌入的張量輸入。這可以是任何形狀,但必須同時包含序列軸和特徵軸。旋轉嵌入將應用於 inputs 並返回。
  • start_index:整數或整數張量。用於計算旋轉嵌入的起始位置。這在快取解碼期間很有用,其中每個位置都在迴圈中單獨預測。

範例

batch_size = 16
feature_length = 18
sequence_length = 256
num_heads = 8

# No multi-head dimension.
tensor = np.ones((batch_size, sequence_length, feature_length))
rot_emb_layer = RotaryEmbedding()
tensor_rot = rot_emb_layer(tensor)

# With multi-head dimension.
tensor = np.ones((batch_size, sequence_length, num_heads, feature_length))
tensor_rot = rot_emb_layer(tensor)

參考文獻