De encoder-decodertransformer construeren
Nu je de klasse DecoderLayer hebt bijgewerkt, en de equivalente wijzigingen zijn doorgevoerd in TransformerDecoder, kun je alles samenvoegen. Doordat je je klassen modulair en hiërarchisch hebt opgebouwd, hoef je er maar twee te instantieren om de encoder-decodertransformer te bouwen: TransformerDecoder en TransformerEncoder.
Deze oefening maakt deel uit van de cursus
Transformermodels met PyTorch
Oefeninstructies
- Maak de
forward()-pass af om de encoder- en decoderuitvoer te berekenen. - Instantieer en roep de transformer aan op
input_tokensmet gebruik van de meegeleverdesrc_mask,tgt_maskencross_mask.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)