評價此頁

TransformerEncoder#

class torch.nn.TransformerEncoder(encoder_layer, num_layers, norm=None, enable_nested_tensor=True, mask_check=True)[原始碼]#

TransformerEncoder 是 N 個編碼器層的堆疊。

這個 TransformerEncoder 層實現了 《Attention Is All You Need》 論文中描述的原始架構。該層的目的是作為基礎理解的參考實現,因此相比於更新的 Transformer 架構,它只包含有限的功能。鑑於 Transformer 類架構創新的快速步伐,我們建議透過此 教程 從核心的構建塊中構建高效的層,或者使用 PyTorch 生態系統 中的更高階庫。

警告

TransformerEncoder 中的所有層都使用相同的引數進行初始化。建議在建立 TransformerEncoder 例項後手動初始化這些層。

引數
  • encoder_layer (TransformerEncoderLayer) – TransformerEncoderLayer() 類的例項 (必需)。

  • num_layers (int) – 編碼器中子編碼器層的數量 (必需)。

  • norm (Optional[Module]) – 層歸一化元件(可選)。

  • enable_nested_tensor (bool) – 如果為 True,輸入將自動轉換為巢狀張量(並在輸出時轉換回來)。當填充率較高時,這將提高 TransformerEncoder 的整體效能。預設值:True (已啟用)。

示例

>>> encoder_layer = nn.TransformerEncoderLayer(d_model=512, nhead=8)
>>> transformer_encoder = nn.TransformerEncoder(encoder_layer, num_layers=6)
>>> src = torch.rand(10, 32, 512)
>>> out = transformer_encoder(src)
forward(src, mask=None, src_key_padding_mask=None, is_causal=None)[原始碼]#

依次將輸入透過編碼器層。

引數
  • src (Tensor) – 到編碼器的序列(必需)。

  • mask (Optional[Tensor]) – src 序列的掩碼 (可選)。

  • src_key_padding_mask (Optional[Tensor]) – src 鍵的每批掩碼(可選)。

  • is_causal (Optional[bool]) – 如果指定,則將因果掩碼應用於 mask。預設值:None;嘗試檢測因果掩碼。警告:is_causal 提供了一個提示,即 mask 是因果掩碼。提供不正確的提示可能導致執行錯誤,包括前向和後向相容性問題。

返回型別

張量

形狀

請參閱Transformer中的文件。