Kom igångKom igång gratis

Börja bygga MultiHeadAttention-klassen

Nu när du har definierat klasser för att skapa token-inbäddningar och positionsinbäddningar är det dags att definiera en klass för multi-head attention. Börja med att konfigurera de parametrar som används vid attention-beräkningen samt de linjära lager som transformerar inbäddningarna till query-, key- och value-matriser, och ett lager för att projicera de kombinerade attention-vikterna tillbaka till inbäddningar.

torch.nn har importerats som nn.

Den här övningen är en del av kursen

Transformermodeller med PyTorch

Visa kurs

Övningsinstruktioner

  • Beräkna den inbäddningsdimension som varje attention-huvud ska bearbeta, head_dim.
  • Definiera de tre ingångslagren (för query, key och value) och ett utgångslager; ta bort bias-parametern från ingångslagren.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 = ____
Redigera och kör kod