La regla de einsum
La regla, en una frase: un índice que aparece en las entradas pero no después de la flecha se suma. Un índice que aparece después de la flecha se conserva.
np.einsum('hwc,c->hw', photo, w)
c aparece en las entradas y no después de la flecha, así que se suma: esa es la contracción. h y w aparecen después de la flecha, así que se conservan.
No hay nada más que memorizar. Toda cadena de einsum del taller es esta misma regla aplicada a letras distintas.