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
Ö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 = ____