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
中的文档。