Empezando la clase MultiHeadAttentionClass
Ahora que has definido clases para crear embeddings de tokens y embeddings posicionales, toca definir una clase para realizar atención multi-cabeza. Para empezar, configura los parámetros usados en el cálculo de la atención y las capas lineales usadas para transformar los embeddings de entrada en las matrices de consulta (query), clave (key) y valor (value), y otra para proyectar los pesos de atención combinados de vuelta a embeddings.
torch.nn se ha importado como nn.
Este ejercicio forma parte del curso
Modelos Transformer con PyTorch
Instrucciones del ejercicio
- Calcula las dimensiones de embedding que procesará cada cabeza de atención,
head_dim. - Define las tres capas de entrada (para query, key y value) y una capa de salida; elimina el parámetro de sesgo en las capas de entrada.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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 = ____