KerasHub:预训练模型 / API 文档 / 建模层 / RotaryEmbedding 层

RotaryEmbedding 层

[source]

RotaryEmbedding

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

旋转位置编码层。

此层使用旋转矩阵编码绝对位置信息。它使用几何级数增加波长的正弦和余弦函数混合计算旋转编码。定义和公式化在 RoFormer: Enhanced Transformer with Rotary Position Embedding 中。输入必须是具有序列维度和特征维度形状的张量。通常,这将是形状为 (batch_size, sequence_length, feature_length)(batch_size, sequence_length, num_heads, feature_length) 的输入。此层将返回一个新张量,其中旋转嵌入已应用于输入张量。

参数

  • max_wavelength: int。正弦/余弦曲线的最大角波长。
  • scaling_factor: float。用于缩放 token 位置的缩放因子。
  • sequence_axis: int。输入张量中的序列轴。
  • feature_axis: int。输入张量中的特征轴。
  • **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)

参考文献