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
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 = ____