A Hadamard-szorzat [1] ( Schur szorzat [2] , komponensenkénti szorzat ) egy bináris művelet két azonos dimenziójú mátrixon , melynek eredménye egy azonos dimenziójú mátrix, amelyben minden indexes elem a szorzata elemeket az eredeti mátrixok indexeivel . A művelet nevét Jacques Hadamard francia matematikus és Isai Schur német matematikus után kapta .
Két azonos méretű mátrix esetén a Hadamard-szorzatot két mátrix komponensenkénti szorzataként határozzuk meg:
Két különböző méretű mátrix esetén a Hadamard-szorzat nincs meghatározva.
Példa 3×3 mátrixokra:
.Egy asszociatív és elosztó művelet, és a szokásos mátrixszorzattól eltérően kommutatív :
, , .A mátrixszorzás más változataival kevert termékek tulajdonságai:
, hol van a Kronecker termék ; , hol van a végtermék [3] ; , hol van a Khatri-Rao oszloptermék .Veszteséges tömörítési algoritmusokban , például JPEG -ben használják .
A MATLAB és GNU Octave szoftvercsomagokban a műveletet szabványos tömbszorzási műveletként használják, és a ".*" [4] szimbólummal jelölik .
A vektoros adattípusokon történő termékművelet a GPGPU programozási technológiákban szintén a Hadamard termékelv szerint valósul meg. Más primitív matematikai műveletek vektoros adattípusokon komponensenkénti műveletekként valósulnak meg az összetevőiken.
Ez a fajta mátrixművelet a Hadamard-szorzaton alapul, és lehetővé teszi a mátrix elemenkénti szorzását tetszőleges számú azonos méretű blokkkal , így blokkmátrixot alkotva [5] :
.Például azért
kapunk:
.Főbb tulajdonságai :
; ,ahol a mátrixok végtermékének szimbóluma .
, ahol egy vektor.Ezt a típusú mátrixszorzást 1998-ban javasolta Slyusar V.I. nem azonos vételi csatornákkal rendelkező digitális antennatömb válaszainak leírására [5] . Ezenkívül ez a munka lehetővé teszi a konvolúciós neurális hálózat működési folyamatának formalizálását. Például, ha a megadott mátrixot képpontok tömbjének tekintjük a neurális hálózati algoritmus bemenetén, akkor a mátrix blokkjai különböző együtthatókészleteknek felelnek meg, amelyek a képfeldolgozás több párhuzamos csatornájában konvolúciós réteget képeznek. neurális hálózattal [6 ] .
Egy vektor és egy mátrix behatoló végtermékének működése a TensorFlow gépi tanulási könyvtárban valósul meg a beépített "tf.multiply" [6] [7] függvény segítségével .