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) – 編碼器中子編碼器層的數量 (必需)。
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)[原始碼]#
依次將輸入透過編碼器層。
- 引數
- 返回型別
- 形狀
請參閱
Transformer中的文件。