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