Single-head self-attention с Q/K/V projections

HardML coding
08:00
Лучше работает на десктопе
NumPyTransformerSelf-AttentionSoftmax
Реальный собес00:03:57-00:20:252026-03-05 22-16-02.movСтраница собеса
Кадр с условием задачи 1
Кроп кадра с собеседования

Реализуйте single-head self-attention для входной матрицы токенов X.

Даны матрицы весов W_q, W_k, W_v. Нужно посчитать:

Q = X @ W_q
K = X @ W_k
V = X @ W_v
Attention = softmax(Q @ K.T / sqrt(d_k)) @ V

Softmax применяется построчно. Для численной стабильности вычитайте максимум строки перед exp.

Сигнатура

def single_head_self_attention(
    X: list[list[float]],
    W_q: list[list[float]],
    W_k: list[list[float]],
    W_v: list[list[float]],
) -> list[list[float]]:

Верните результат, округленный до 6 знаков после запятой.

Примеры

Пример 1

Вход:
X = [[1,0],[0,1]]
W_q = [[1,0],[0,1]]
W_k = [[1,0],[0,1]]
W_v = [[1,0],[0,1]]
Выход:[[0.669762,0.330238],[0.330238,0.669762]]

Identity projections with two tokens

Пример 2

Вход:
X = [[1,2]]
W_q = [[1],[1]]
W_k = [[2],[0]]
W_v = [[3,1],[1,3]]
Выход:[[5,7]]

Single token attends only to itself

Пример 3

Вход:
X = [[1,0],[0,1]]
W_q = [[1],[0]]
W_k = [[1],[0]]
W_v = [[2],[4]]
Выход:[[2.537883],[3]]

One-dimensional Q/K and scalar V

Консоль
Нажмите Run или Ctrl+Enter для запуска