CommencerCommencer gratuitement

La couche de décodeur

Comme les transformeurs encodeurs, les transformeurs décodeurs sont également composés de plusieurs couches qui utilisent l’attention multi‑têtes et des sous‑couches feed‑forward. Essayez 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éé.

Cet exercice fait partie du cours

Modèles Transformer avec PyTorch

Afficher le cours

Instructions

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 de couche, norm1.
  • Effectuez le passage dans la sous‑couche feed‑forward, ff_sublayer.
  • Appliquez le dropout puis la deuxième normalisation de couche, norm2.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

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