构建编码器-解码器 Transformer
现在您已经更新了 DecoderLayer 类,并在 TransformerDecoder 中做了相应更改,可以把所有组件组装起来了。由于这些类采用模块化、分层设计,您只需实例化其中两个就能构建编码器-解码器 Transformer:TransformerDecoder 和 TransformerEncoder。
本练习是课程的一部分
使用 PyTorch 的 Transformer 模型
练习说明
- 完成
forward()前向计算,得到编码器与解码器的输出。 - 实例化并调用 Transformer,对
input_tokens使用提供的src_mask、tgt_mask和cross_mask。
交互式实操练习
通过完成这段示例代码来试试这个练习。
class Transformer(nn.Module):
def __init__(self, vocab_size, d_model, num_heads, num_layers, d_ff, max_seq_length, dropout):
super().__init__()
self.encoder = TransformerEncoder(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)
self.decoder = TransformerDecoder(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)
def forward(self, x, src_mask, tgt_mask, cross_mask):
# Complete the forward pass
encoder_output = self.encoder(____, ____)
decoder_output = self.decoder(____, ____, tgt_mask, cross_mask)
return decoder_output
# Instantiate and call the transformer
transformer = ____(vocab_size, d_model, num_heads, num_layers, d_ff, max_seq_length, dropout)
outputs = ____
print(outputs)
print(outputs.shape)