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
層中的 head 數量。keras.layers.MultiHeadAttention
和前饋網路共用。預設值為 0.
。keras.activations
。前饋網路的啟動函數。預設值為 "relu"
。1e-5
。keras.initializers
初始化器。用於密集層和多頭注意力層的 kernel 初始化器。預設值為 "glorot_uniform"
。keras.initializers
初始化器。用於密集層和多頭注意力層的 bias 初始化器。預設值為 "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]。True
,輸出應為 (attention_output, attention_scores)
,如果為 False
,則輸出應為 attention_output
。預設值為 False
。返回
一個與 inputs
相同形狀的 Tensor。