Project DelphiTensors Workshop

Ejercicio B — la atención son dos contracciones

La atención responde la pregunta 5 del ejercicio del pipeline de video: ¿qué partes de una secuencia importan más?

scores = np.einsum('bid,bjd->bij', Q, K) / np.sqrt(dim) # (4, 12, 12) weights = softmax(scores, axis=-1) output = np.einsum('bij,bjd->bid', weights, V) # (4, 12, 16) mask = np.zeros((seq_len, seq_len)); mask[:, -3:] = -np.inf weights_masked = softmax(scores + mask, axis=-1) # las posiciones rellenadas reciben peso 0

scores es el producto punto del capítulo 2; output es la combinación lineal del capítulo 2. La atención son dos contracciones construidas con ideas que ya has leído.

Y la máscara resuelve el problema de longitud variable de la Parte II: es cómo los modelos reales manejan secuencias y videos de distinta longitud.