CommencezCommencez gratuitement

Compléter le transformeur décodeur

C'est le moment de construire le corps du transformeur décodeur ! Il s'agit de combiner les classes InputEmbeddings, PositionalEncoding et DecoderLayer que vous avez créées plus tôt.

Cette activité fait partie du cours

Modèles Transformer avec PyTorch

Voir le cours

Instructions de l’exercice

  • Définissez une liste de couches de décodeur de longueur num_layers à l'aide d'une compréhension de liste et de la classe DecoderLayer.
  • Définissez une couche linéaire pour projeter les états cachés en vraisemblances de mots.
  • Complétez le passage avant à travers les couches définies dans __init__.
  • Instanciez un transformeur décodeur et appliquez-le à input_tokens et tgt_mask.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

class TransformerDecoder(nn.Module):
    def __init__(self, vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length):
        super(TransformerDecoder, self).__init__()
        self.embedding = InputEmbeddings(vocab_size, d_model)
        self.positional_encoding = PositionalEncoding(d_model, max_seq_length)
        # Define the list of decoder layers and linear layer
        self.layers = nn.____([____(d_model, num_heads, d_ff, dropout) for _ in range(num_layers)])
        # Define a linear layer to project hidden states to likelihoods
        self.fc = ____
  
    def forward(self, x, tgt_mask):
        # Complete the forward pass
        x = self.____(x)
        x = self.____(x)
        for layer in self.layers:
            x = ____
        x = self.____(x)
        return F.log_softmax(x, dim=-1)

# Instantiate a decoder transformer and apply it to input_tokens and tgt_mask
transformer_decoder = ____(vocab_size, d_model, num_layers, num_heads, d_ff, dropout, max_seq_length)   
output = ____
print(output)
print(output.shape)
Modifier et exécuter le code