nn.Transformer 模块中包含一个编码器部分,可通过属性transformer.encoder访问,其本质是一个nn.TransformerEncoder
实例。通过其forward方法,可以对源序列进行编码,提取上下文相关的语义表示。如下图所示:
![图片[1]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-526.png)
示例代码如下:
from torch import nn
# 初始化 Transformer
transformer = nn.Transformer(
d_model=512, nhead=8,
num_encoder_layers=6, num_decoder_layers=6,
batch_first=True
)
# 调用编码器
memory = transformer.encoder(
src=src_emb,
src_key_padding_mask=src_pad_mask
)
假如源序列为:
![图片[2]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-527.png)
则具体的输入输出为:
- 输入
![图片[3]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-528.png)
输出
![图片[4]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-529.png)
7.4.6 Transformer.decoder
nn.Transformer 模块中包含一个解码器部分,可通过属性transformer.decoder访问,其本质是一个nn.TransformerDecoder实例。通过其forward方法,可以基于编码器的输出(memory)和目标序列的嵌入表示,逐步生成目标序列中的各个token。如下图所示:
![图片[5]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-530.png)
示例代码如下
from torch import nn
# 初始化 Transformer
transformer = nn.Transformer(
d_model=512, nhead=8,
num_encoder_layers=6, num_decoder_layers=6,
batch_first=True
)
# 调用编码器
memory = transformer.encoder(
src=src_emb,
src_key_padding_mask=src_pad_mask
)
# 调用解码器(逐步生成)
output = transformer.decoder(
tgt=tgt_emb,
memory=memory,
tgt_mask=tgt_mask,
tgt_key_padding_mask=tgt_pad_mask,
memory_key_padding_mask=src_pad_mask
)
若源序列和目标序列为:
![图片[6]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-531.png)
则具体输出输出为:
- 输入
![图片[7]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-532.png)
![图片[8]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-533.png)
![图片[9]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-534.png)
输出
![图片[10]-7.4.5 Transformer.encoder-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-535.png)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
















请登录后查看评论内容