TransformerEncoder#
- class torch.nn.modules.transformer.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
中的文档。