TransformerEncoder
类keras_hub.layers.TransformerEncoder(
intermediate_dim,
num_heads,
dropout=0,
activation="relu",
layer_norm_epsilon=1e-05,
kernel_initializer="glorot_uniform",
bias_initializer="zeros",
normalize_first=False,
**kwargs
)
Transformer 编码器。
此类遵循论文 Attention is All You Need 中 Transformer 编码器层的架构。用户可以实例化此类的多个实例来堆叠编码器。
此层将根据隐式的 Keras 填充掩码(例如,通过将mask_zero=True
传递给keras.layers.Embedding
层)正确计算注意力掩码。有关更多详细信息,请参阅掩码和填充指南。
参数
keras.layers.MultiHeadAttention
层中的头部数量。keras.layers.MultiHeadAttention
和前馈网络共享。默认为0.
。keras.activations
。前馈网络的激活函数。默认为"relu"
。1e-5
。keras.initializers
初始化器。密集层和多头注意力层的内核初始化器。默认为"glorot_uniform"
。keras.initializers
初始化器。密集层和多头注意力层的偏置初始化器。默认为"zeros"
。False
。keras.layers.Layer
的其他关键字参数,包括name
、trainable
、dtype
等。示例
# Create a single transformer encoder layer.
encoder = keras_hub.layers.TransformerEncoder(
intermediate_dim=64, num_heads=8)
# Create a simple model containing the encoder.
input = keras.Input(shape=(10, 64))
output = encoder(input)
model = keras.Model(inputs=input, outputs=output)
# Call encoder on the inputs.
input_data = np.random.uniform(size=(2, 10, 64))
output = model(input_data)
参考文献
call
方法TransformerEncoder.call(
inputs,
padding_mask=None,
attention_mask=None,
training=None,
return_attention_scores=False,
)
TransformerEncoder 的前向传递。
参数
padding_mask
的形状应为 [batch_size, sequence_length]。attention_mask
的形状应为 [batch_size, sequence_length, sequence_length]。(attention_output, attention_scores)
(如果为True
)或attention_output
(如果为False
)。默认为False
。返回值
与inputs
形状相同的张量。