KerasHub:預訓練模型 / API 文件 / 模型層 / TransformerEncoder 層

TransformerEncoder 層

[原始碼]

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 層)。請參閱「遮罩與填充」指南 以取得更多詳細資訊。

參數

  • intermediate_dim:整數,前饋網路的隱藏層大小。
  • num_heads:整數,keras.layers.MultiHeadAttention 層中的 head 數量。
  • dropout:浮點數。dropout 值,由 keras.layers.MultiHeadAttention 和前饋網路共用。預設值為 0.
  • activation:字串或 keras.activations。前饋網路的啟動函數。預設值為 "relu"
  • layer_norm_epsilon:浮點數。層歸一化組件中的 epsilon 值。預設值為 1e-5
  • kernel_initializer:字串或 keras.initializers 初始化器。用於密集層和多頭注意力層的 kernel 初始化器。預設值為 "glorot_uniform"
  • bias_initializer:字串或 keras.initializers 初始化器。用於密集層和多頭注意力層的 bias 初始化器。預設值為 "zeros"
  • normalize_first:布林值。如果為 True,則注意力層和中間密集層的輸入會被正規化 (類似於 GPT-2)。如果設定為 False,則注意力層和中間密集層的輸出會被正規化 (類似於 BERT)。預設值為 False
  • **kwargs:傳遞給 keras.layers.Layer 的其他關鍵字參數,包括 nametrainabledtype 等。

範例

# 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 的前向傳遞。

參數

  • inputs:一個 Tensor。TransformerEncoder 的輸入資料,形狀應為 [batch_size, sequence_length, hidden_dim]。
  • padding_mask:一個布林 Tensor。指示是否應遮罩 token,因為 token 是由於填充而引入的。padding_mask 的形狀應為 [batch_size, sequence_length]。
  • attention_mask:一個布林 Tensor。用於遮罩特定 token 的自訂遮罩。attention_mask 的形狀應為 [batch_size, sequence_length, sequence_length]。
  • training:一個布林值,指示層應在訓練模式還是推論模式下運作。
  • return_attention_scores:一個布林值,指示如果為 True,輸出應為 (attention_output, attention_scores),如果為 False,則輸出應為 attention_output。預設值為 False

返回

一個與 inputs 相同形狀的 Tensor。