Tworzenie klasy MultiHeadAttention
Masz już zdefiniowane klasy do tworzenia osadzeń tokenów i osadzeń pozycyjnych. Czas zdefiniować klasę do wykonywania mechanizmu wielogłowicowej uwagi. Na początek skonfiguruj parametry potrzebne do obliczeń uwagi oraz warstwy liniowe służące do przekształcania osadzeń wejściowych w macierze zapytań, kluczy i wartości, a także jedną warstwę do rzutowania połączonych wag uwagi z powrotem na osadzenia.
torch.nn zostało zaimportowane jako nn.
To ćwiczenie jest częścią kursu
Modele Transformer w PyTorch
Instrukcje do ćwiczenia
- Oblicz wymiarowość osadzeń przetwarzanych przez każdą głowicę uwagi:
head_dim. - Zdefiniuj trzy warstwy wejściowe (dla zapytania, klucza i wartości) oraz jedną warstwę wyjściową; usuń parametr bias z warstw wejściowych.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 = ____