SinePositionEncoding 类keras_hub.layers.SinePositionEncoding(max_wavelength=10000, **kwargs)
正弦位置编码层。
该层将位置编码计算为具有几何增长波长的正弦和余弦函数的混合。在 Attention is All You Need 中定义和公式化。
输入为一个嵌入的token张量。输入形状必须为 [batch_size, sequence_length, feature_size]。该层将返回一个与嵌入的token张量大小相同的位置编码,可以直接加到嵌入的token张量上。
参数
10000。keras.layers.Layer 的其他关键字参数,包括 name、trainable、dtype 等。调用参数
(batch_size, sequence_length, hidden_dim)。(sequence_length,) 或 (batch_size, sequence_length) 的张量。输入序列的自定义位置。如果指定,将使用此张量来计算位置嵌入,并且 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
参考文献