¿Qué significa el término difusión en bibliotecas numéricas con matrices como MATLAB, Numpy o TensorFlow?

La transmisión en su forma más simple es el mecanismo a través del cual podemos hacer cálculos matemáticos elemento por elemento con matrices o matrices a pesar de que tienen dimensiones incompatibles.

Lo que eso significa es, supongamos que tiene un vector de fila A y desea agregar 23 a todos sus elementos. Ahora, puedes probar cualquiera de los siguientes:

importar numpy como np

###### MÉTODO-1 (La forma habitual de aficionados)
A = matriz np. ([[1, 10, 7]]) #forma = (1,3)
B = matriz np. ([[23, 23, 23]]) #forma = (1,3)

resultado1 = A + B

###### MÉTODO-2 (¡Ah, la forma inteligente!)
A = matriz np. ([[1, 10, 7]]) #forma = (1,3)
B = 23

resultado2 = A + B

Sorprendentemente, ¡terminarás con el mismo resultado! Gracias a Broadcasting!

Es un verdadero salvavidas cuando se ejecutan cálculos complejos que consumen mucho tiempo, ya que evita el uso de bucles for (en python) para iterar sobre cada elemento de la matriz, lo que reduce en gran medida la complejidad del tiempo.

Echa un vistazo a esto :

importar numpy como np

A = matriz np. ([[1,2,3], [4,5,6]]) #forma = = 2,3

B = matriz np. ([[10,70,50]]) #forma = (1,3)

# Nota: ¡La forma de A y B es diferente!
# Broadcasting nos permite calcular:

C = A + B

Sin embargo, hay algunas reglas que rigen su juego, ¡asegúrese de consultar la documentación de Numpy para eso y mucho más! ¡Prepárate para sorprenderte!

El término difusión describe cómo numpy trata las matrices con diferentes formas durante las operaciones aritméticas. Sujeto a ciertas restricciones, la matriz más pequeña se “transmite” a través de la matriz más grande para que tengan formas compatibles. La difusión proporciona un medio de vectorizar las operaciones de matriz para que el bucle se produzca en C en lugar de Python. Hace esto sin hacer copias innecesarias de datos y generalmente conduce a implementaciones de algoritmos eficientes. Sin embargo, hay casos en los que la transmisión es una mala idea porque conduce a un uso ineficiente de la memoria que ralentiza el cálculo.

Fuente: Broadcasting – NumPy v1.11 Manual

Todos se basan en la misma idea: hacer que la matriz tenga el mismo tamaño.