Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Takto funguje `np.tensordot a ako ho efektívne používať:
Pochopenie parametra osí:
Jadro `np.tensordot` leží vo svojom parametri` Axes ". Tento parameter určuje, ktoré osi vstupných polí (`a` a` b`) by sa mali spočítať počas bodového produktu. Môže to byť:
* celé číslo: To určuje počet osí, ktoré sa majú zhrnúť z * konca * každého poľa. Ak `sekery =1`, sumarizuje poslednú os` A` a poslednú os `B`. Ak `osi =2`, sumarizuje posledné dve osi každej z nich a tak ďalej. Toto je najjednoduchšia forma.
* a tuple dvoch sekvencií: To poskytuje najviac kontroly. Každá sekvencia špecifikuje osi `a` a` b`, ktoré by sa mali sťahovať (sčítané). Dĺžky sekvencií musia byť rovnaké.
Príklady:
1. jednoduchý bodku produktu (násobenie matíc):
`` `Python
import numpy ako np
a =np.array ([[1, 2], [3, 4]]))))
b =np.array ([[5, 6], [7, 8]])
c =np.tensordot (a, b, osi =1) # ekvivalent s np.dot (a, b)
Tlač (C) # Výstup:[[19 22] [43 50]]
c =np.tensordot (a, b, osi =((1), (0))) #same Ako je uvedené vyššie
Tlač (C) # Výstup:[[19 22] [43 50]]
`` `
2.
`` `Python
a =np.arange (24) .Reshape ((2,3,4))
b =np.arange (24) .Reshape ((4,3,2))
c =np.tensordot (a, b, osi =([2], [0]))))))
Tlač (C.Shape) # výstup:(2, 3, 3, 2)
#Zložitejšie kontrakcie:
c =np.tensordot (a, b, osi =([(0,2)], [(1,0)])))))))))))))))))))))))))
tlač (C.Shape) #Output:(3, 2)
`` `
3.
`np.tensordot 'účinne vykonáva operácie podobné zápisu Einsteinovho sčítania. Napríklad, ak je „A` (i, j, k) a` b` (k, l), potom kontrakcia nad `k` môže byť napísaná ako:
`C_ {ijl} =\ sum_k a_ {ijk} b_ {kl}`
To sa dá dosiahnuť efektívne pomocou:
`` `Python
a =np.random.rand (2,3,4)
b =np.random.rand (4,5)
c =np.tensordot (a, b, osi =([2], [0]))))))
tlač (C.Shape) # výstup:(2, 3, 5)
`` `
Úvahy o účinnosti:
* Poradie osi: Poradie, v ktorom zadáte osi, môže ovplyvniť výkon. Interné optimalizácie spoločnosti Numpy môžu byť pri určitých objednávkach efektívnejšie. Experimentujte a nájdite najrýchlejšiu konfiguráciu pre vaše konkrétne tenzory.
* Použitie pamäte: V prípade extrémne veľkých tenzorov môže „np.tensordot“ viesť k problémom s pamäťou. V takýchto prípadoch zvážte použitie iteračných metód alebo knižníc navrhnutých pre rozsiahle tenzorové operácie (napríklad TensorFlow alebo Pytorch), ktoré majú často lepšie stratégie správy pamäte.
* Alternatíva pre jednoduché prípady: Pre jednoduché bodové produkty alebo násobenie matíc sú operátor `np.dot` alebo`@`Operátor zvyčajne rýchlejšie ako` np.tensordot`.
Stručne povedané, „np.tensordot“ je výkonný nástroj, ale pochopenie parametra `sekery“ je rozhodujúce pre efektívne a správne využitie. Vyberte správnu metódu založenú na zložitosti vašich tenzorových operácií a veľkosti vašich údajov, aby ste optimalizovali rýchlosť aj využitie pamäte.