Iniciando a MultiHeadAttentionClass
Agora que você definiu classes para criar embeddings de tokens e embeddings posicionais, é hora de definir uma classe para executar a atenção multihead. Para começar, configure os parâmetros usados no cálculo da atenção e as camadas lineares usadas para transformar os embeddings de entrada em matrizes de query, key e value, além de uma para projetar os pesos de atenção combinados de volta em embeddings.
torch.nn foi importado como nn.
Este exercício faz parte do curso
Modelos Transformer com PyTorch
Instruções do exercício
- Calcule as dimensões do embedding que cada cabeça de atenção processará,
head_dim. - Defina as três camadas de entrada (para query, key e value) e uma camada de saída; remova o parâmetro de bias das camadas de entrada.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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 = ____