Початок роботи з MultiHeadAttentionClass
Тепер, коли ви визначили класи для створення токен-вкладень і позиційних вкладень, час оголосити клас для багатоголової уваги. Спочатку налаштуйте параметри, що використовуються для обчислення уваги, а також лінійні шари для перетворення вхідних вкладень у матриці запиту (query), ключа (key) і значення (value), і ще один шар для проєкції об'єднаних ваг уваги назад у вкладення.
torch.nn імпортовано як nn.
Ця вправа є частиною курсу
Моделі Transformer з PyTorch
Інструкції до вправи
- Обчисліть розмірність вкладень, яку опрацьовуватиме кожна голова уваги —
head_dim. - Оголосіть три вхідні шари (для query, key і value) та один вихідний шар; приберіть параметр зміщення з вхідних шарів.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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 = ____