CommencerCommencer gratuitement

Commencer la classe MultiHeadAttentionClass

Vous avez maintenant défini des classes pour créer des embeddings de jetons et des embeddings positionnels ; il est temps de définir une classe pour effectuer l’attention multi-tête. Pour commencer, paramétrez les éléments utilisés pour le calcul de l’attention et les couches linéaires servant à transformer les embeddings d’entrée en matrices de requête (query), de clé (key) et de valeur (value), ainsi qu’une couche pour projeter les poids d’attention combinés de nouveau en embeddings.

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

Cet exercice fait partie du cours

Modèles Transformer avec PyTorch

Afficher le cours

Instructions

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

Exercice interactif pratique

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

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