Den Encoder-Decoder-Transformer konstruieren
Nachdem du die Klasse DecoderLayer aktualisiert hast und die entsprechenden Änderungen in TransformerDecoder vorgenommen wurden, kannst du jetzt alles zusammenführen. Weil du deine Klassen modular und hierarchisch aufgebaut hast, musst du nur zwei davon instanziieren, um den Encoder-Decoder-Transformer zu erstellen: TransformerDecoder und TransformerEncoder.
Diese Übung ist Teil des Kurses
<Kurs>Transformer-Modelle mit PyTorch</Kurs>Übungsanweisungen
- Vervollständige den
forward()-Durchlauf, um die Encoder- und Decoder-Ausgaben zu berechnen. - Instanziiere den Transformer und rufe ihn mit
input_tokensunter Verwendung der bereitgestelltensrc_mask,tgt_maskundcross_maskauf.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)