nn.Transformer Layers

黑逍逍發表於2024-03-08

nn.TransformerEncoderLayer

https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoder.html#torch.nn.TransformerEncoder

當使用這個層時,需要提供特定的輸入資料。這些輸入主要包括

  1. 輸入序列(src): 這是主要的輸入資料,通常是一個張量,其形狀為 (S, N, E)

    • S 是序列長度(即每個輸入序列中的元素或詞彙數量)(也可以是線性層的維度)。
    • N 是批次大小(即同時處理的序列數量)。
    • E 是特徵數量(即每個元素的嵌入向量維度)。
  2. 掩碼(mask 或 src_key_padding_mask): 這些是可選引數,用於改變注意力機制的行為。

    • 注意力掩碼(mask): 通常用於遮蔽(遮蔽)序列中的某些部分,使模型在自注意力計算時忽略這些部分。這對於避免資訊洩露,特別是在解碼器中非常重要。在編碼器中,它也可以用於特定目的,比如實現特定形式的注意力。
    • 填充掩碼(src_key_padding_mask): 這個掩碼用於指示哪些元素是填充元素,不應該被模型考慮。這對於處理長度不一的序列非常重要,因為它允許模型知道哪些部分是填充的,從而在自注意力計算中忽略這些部分。

使用 nn.TransformerEncoderLayer 時,你通常會首先將你的原始輸入(比如文字資料)轉換為嵌入向量,可能還會加上位置編碼,然後將這些資料作為輸入序列提供給 nn.TransformerEncoderLayer。如果需要,還會提供相應的掩碼以處理序列中的特