Avviare la classe MultiHeadAttention
Ora che hai definito le classi per creare i token embedding e i positional embedding, è il momento di definire una classe per eseguire la multi-head attention. Per iniziare, configura i parametri usati per il calcolo dell'attenzione e i layer lineari usati per trasformare gli embedding di input nelle matrici di query, key e value, oltre a un layer per proiettare i pesi di attenzione combinati di nuovo in embedding.
torch.nn è stato importato come nn.
Questo esercizio fa parte del corso
Modelli Transformer con PyTorch
Istruzioni dell'esercizio
- Calcola le dimensioni dell'embedding elaborate da ciascuna testa di attention,
head_dim. - Definisci i tre layer di input (per query, key e value) e un layer di output; rimuovi il parametro di bias dai layer di input.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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 = ____