El producto de Hadamard [1] ( producto de Schur [2] , producto por componentes ) es una operación binaria sobre dos matrices de la misma dimensión, cuyo resultado es una matriz de la misma dimensión, en la que cada elemento con índices es el producto de elementos con índices de las matrices originales. La operación lleva el nombre del matemático francés Jacques Hadamard y el matemático alemán Isai Schur .
Para dos matrices de la misma dimensión , el producto de Hadamard se define como el producto por componentes de dos matrices:
Para dos matrices que tienen dimensiones diferentes, el producto de Hadamard no está definido.
Ejemplo para matrices de 3×3:
.Es una operación asociativa y distributiva y, a diferencia del producto matricial habitual, es conmutativa :
, , .Propiedades de productos mixtos con otras variantes de multiplicación de matrices:
, donde esta el producto Kronecker ; , donde es el producto final [3] ; , donde es el producto de la columna Khatri-Rao .Se utiliza en algoritmos de compresión con pérdida , como JPEG .
En los paquetes de software MATLAB y GNU Octave , la operación se utiliza como una operación estándar de multiplicación de matrices y se indica con el símbolo ".*" [4] .
La operación del producto en tipos de datos vectoriales en tecnologías de programación GPGPU también se implementa de acuerdo con el principio de producto de Hadamard. Otras operaciones matemáticas primitivas en tipos de datos vectoriales se implementan como operaciones por componentes en sus componentes.
Este tipo de operación de matriz se basa en el producto de Hadamard y le permite multiplicar la matriz elemento por elemento por un número arbitrario de bloques de la misma dimensión , formando una matriz de bloques [5] :
.por ejemplo, para
obtenemos:
.Propiedades principales :
; ,donde es el símbolo del producto final de matrices.
, donde es un vector.Este tipo de multiplicación de matrices fue propuesto en 1998 por Slyusar V.I. describir las respuestas de un conjunto de antenas digitales con canales de recepción no idénticos [5] . Además, este trabajo permite formalizar el proceso de funcionamiento de una red neuronal convolucional. Por ejemplo, si consideramos la matriz especificada como una matriz de píxeles de imagen a la entrada del algoritmo de la red neuronal, los bloques de la matriz corresponderán a diferentes conjuntos de coeficientes utilizados para formar una capa convolucional en varios canales paralelos de procesamiento de imágenes. por una red neuronal [6] .
La operación del producto final penetrante de un vector y una matriz se implementa en la biblioteca de aprendizaje automático de TensorFlow mediante la función integrada "tf.multiply" [6] [7] .