nn.TransformerEncoderLayer
https://pytorch.org/docs/stable/generated/torch.nn.TransformerEncoder.html#torch.nn.TransformerEncoder
當使用這個層時,需要提供特定的輸入資料。這些輸入主要包括
-
輸入序列(src): 這是主要的輸入資料,通常是一個張量,其形狀為
(S, N, E)
:S
是序列長度(即每個輸入序列中的元素或詞彙數量)(也可以是線性層的維度)。N
是批次大小(即同時處理的序列數量)。E
是特徵數量(即每個元素的嵌入向量維度)。
-
掩碼(mask 或 src_key_padding_mask): 這些是可選引數,用於改變注意力機制的行為。
- 注意力掩碼(mask): 通常用於遮蔽(遮蔽)序列中的某些部分,使模型在自注意力計算時忽略這些部分。這對於避免資訊洩露,特別是在解碼器中非常重要。在編碼器中,它也可以用於特定目的,比如實現特定形式的注意力。
- 填充掩碼(src_key_padding_mask): 這個掩碼用於指示哪些元素是填充元素,不應該被模型考慮。這對於處理長度不一的序列非常重要,因為它允許模型知道哪些部分是填充的,從而在自注意力計算中忽略這些部分。
使用 nn.TransformerEncoderLayer
時,你通常會首先將你的原始輸入(比如文字資料)轉換為嵌入向量,可能還會加上位置編碼,然後將這些資料作為輸入序列提供給 nn.TransformerEncoderLayer
。如果需要,還會提供相應的掩碼以處理序列中的特