Zacznij terazZacznij za darmo

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

Zobacz kurs

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 = ____
Edytuj i uruchom kod