CommencezCommencez gratuitement

La couche de décodeur

Comme les encodeurs, les décodeurs Transformer sont aussi composés de plusieurs couches qui utilisent l'attention à têtes multiples et des sous‑couches feed‑forward. À vous de combiner ces composants pour construire une classe DecoderLayer.

Les classes MultiHeadAttention et FeedForwardSubLayer sont à votre disposition, ainsi que le tgt_mask que vous avez créé.

Cette activité fait partie du cours

Modèles Transformer avec PyTorch

Voir le cours

Instructions de l’exercice

Complétez la méthode forward() pour faire passer les plongements d'entrée à travers les couches définies dans la méthode __init__ :

  • Effectuez le calcul d'attention en utilisant le tgt_mask fourni et les plongements d'entrée, x, pour les matrices requête, clé et valeur.
  • Appliquez le dropout puis la première normalisation, norm1.
  • Effectuez la passe dans la sous‑couche feed‑forward, ff_sublayer.
  • Appliquez le dropout puis la deuxième normalisation, norm2.

Exercice interactif pratique

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

class DecoderLayer(nn.Module):
    def __init__(self, d_model, num_heads, d_ff, dropout):
        super().__init__()
        self.self_attn = MultiHeadAttention(d_model, num_heads)
        self.ff_sublayer = FeedForwardSubLayer(d_model, d_ff)
        self.norm1 = nn.LayerNorm(d_model)
        self.norm2 = nn.LayerNorm(d_model)
        self.dropout = nn.Dropout(dropout)

    def forward(self, x, tgt_mask):
        # Perform the attention calculation
        attn_output = self.____
        # Apply dropout and the first layer normalization
        x = self.____(x + self.____(attn_output))
        # Pass through the feed-forward sublayer
        ff_output = self.____(x)
        # Apply dropout and the second layer normalization
        x = self.____(x + self.____(ff_output))
        return x
Modifier et exécuter le code