Die MultiHeadAttentionClass starten
Nachdem du Klassen für Token-Embeddings und Positions-Embeddings definiert hast, ist es Zeit, eine Klasse für Multi-Head-Attention zu erstellen. Richte zunächst die Parameter für die Attention-Berechnung ein sowie die linearen Schichten, die die Eingabe-Embeddings in Query-, Key- und Value-Matrizen umwandeln, und eine weitere, die die kombinierten Attention-Gewichte zurück in Embeddings projiziert.
torch.nn wurde als nn importiert.
Diese Übung ist Teil des Kurses
<Kurs>Transformer-Modelle mit PyTorch</Kurs>Übungsanweisungen
- Berechne die Embedding-Dimension, die jeder Attention-Head verarbeitet:
head_dim. - Definiere die drei Eingabeschichten (für Query, Key und Value) und eine Ausgabeschicht; entferne den Bias-Parameter bei den Eingabeschichten.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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 = ____