CommencezCommencez gratuitement

Démarrer la classe MultiHeadAttentionClass

Maintenant que vous avez défini des classes pour créer les intégrations de jetons (token embeddings) et les intégrations positionnelles, il est temps de définir une classe pour effectuer l'attention à têtes multiples. Pour commencer, configurez les paramètres utilisés pour le calcul de l'attention et les couches linéaires servant à transformer les intégrations d'entrée en matrices de requêtes (query), de clés (key) et de valeurs (value), ainsi qu'une couche pour projeter les pondérations d'attention combinées de nouveau en intégrations.

torch.nn a été importé sous le nom nn.

Cette activité fait partie du cours

Modèles Transformer avec PyTorch

Voir le cours

Instructions de l’exercice

  • Calculez la dimension d'intégration que chaque tête d'attention traitera, head_dim.
  • Définissez les trois couches d'entrée (pour query, key et value) ainsi qu'une couche de sortie; retirez le paramètre de biais des couches d'entrée.

Exercice interactif pratique

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

class MultiHeadAttention(nn.Module):
    def __init__(self, d_model, num_heads):
        super().__init__()
        # Calculate the dimensions each head will process
        self.num_heads = num_heads
        self.d_model = d_model
        self.head_dim = ____
        # Define the three input layers and one output layer
        self.query_linear = nn.Linear(____, ____, bias=False)
        self.key_linear = nn.Linear(____)
        self.value_linear = ____
        self.output_linear = ____
Modifier et exécuter le code