NumPy allowed · plain Python earns 10 bonus points
Q · Kᵀ / √d scores normalized with softmax
Implement the head-splitting operation in multi-head attention, dividing the embedding dimension into parallel attention sub-spaces.
Implement split_heads(x, num_heads) that splits vector x (length d_model) into num_heads chunks of size d_model // num_heads.
split_heads(x: list[float], num_heads: int) -> list[list[float]]