Broadcasting es la forma en la que numpy maneja operaciones entre arrays de formas distintas. La idea es que si las dimensiones son compatibles, numpy “extiende” automáticamente el array más pequeño para que cuadre con el más grande, sin tener que escribir bucles.

El ejemplo más simple es sumar un vector a un escalar. Numpy entiende que el escalar se suma a cada elemento del vector. No necesitas escribir un bucle.

Más interesante: sumar una matriz con un vector . Numpy interpreta que el vector se suma a cada fila de la matriz. Es como si el vector fuera de con todas las filas iguales, pero como tal no queremos gastar memoria.

En el proyecto aparece todo el rato. Cuando hago con un batch, es un vector y se suma automáticamente a cada fila de la matriz que sale de . Sin broadcasting, tendría que repetir el bias 32 veces a mano.

También en softmax con keepdims=True. Tengo una matriz y quiero dividir cada fila por su suma. Calculo las sumas con forma (gracias a keepdims), y al dividir broadcasting expande automáticamente la columna a 10 columnas. Cada fila se divide por su propia suma.

Las reglas exactas de broadcasting son un poco intrincadas, pero la regla práctica es: las dimensiones cuadran si son iguales o si una de ellas es 1. Si no cuadran, numpy se queja y tienes que reformar con reshape o keepdims.