Bygg encoder-decoder-transformern
Nu när du har uppdaterat klassen DecoderLayer och motsvarande ändringar har gjorts i TransformerDecoder, är det dags att sätta ihop allt. Tack vare att du har byggt dina klasser på ett modulärt och hierarkiskt sätt behöver du bara instansiera två av dem för att bygga encoder-decoder-transformern: TransformerDecoder och TransformerEncoder.
Den här övningen är en del av kursen
Transformermodeller med PyTorch
Övningsinstruktioner
- Slutför
forward()-passet för att beräkna encoder- och decoderresultaten. - Instansiera och anropa transformern på
input_tokensmed hjälp avsrc_mask,tgt_maskochcross_mask.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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)