Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon kādas ir @ izmantošanas priekšrocības matricas reizināšanai Python 3.5+ versijā


kādas ir @ izmantošanas priekšrocības matricas reizināšanai Python 3.5+ versijā


Operatora @ ieviešanai matricas reizināšanai Python 3.5+ versijā ir vairākas priekšrocības salīdzinājumā ar funkcijas `np.dot()' izmantošanu:

1. Lasāmība un skaidrība: operators “@” padara kodu lasāmāku un intuitīvāku, jo tas tieši atspoguļo matricas reizināšanas matemātisko darbību. Tas var uzlabot vispārējo koda kvalitāti un padarīt to vieglāk saprotamu citiem izstrādātājiem.

2. Saskaņa ar matemātisko apzīmējumu: operators “@” tiek saskaņots ar standarta matemātisko apzīmējumu matricas reizināšanai, kas var palīdzēt pārvarēt plaisu starp matemātiskajiem jēdzieniem un to ieviešanu kodā.

3. Samazināta daudzveidība: operatora “@” izmantošana ir kodolīgāka nekā funkcijas “np.dot()” izsaukšana, kas var radīt kompaktāku un izteiksmīgāku kodu.

4. Uzlabota kļūdu apstrāde: operators “@” nodrošina labāku kļūdu apstrādi salīdzinājumā ar “np.dot()”. Ja matricas izmēri nav saderīgi reizināšanai, operators “@” parādīs “ValueError”, savukārt “np.dot()” var klusi radīt nepareizus rezultātus.

5. Potenciālie veiktspējas uzlabojumi: dažos gadījumos operators “@” var būt nedaudz efektīvāks par “np.dot()”, jo tas ir ieviests Python tulkā. Tomēr veiktspējas atšķirība parasti ir niecīga, un izvēlei starp abām ir vairāk jābalstās uz lasāmību un konsekvenci.

6. Iepazīstamība citu programmēšanas valodu lietotājiem: operators @ matricas reizināšanai ir izplatīts līdzeklis citās programmēšanas valodās, piemēram, MATLAB un R. Izmantojot vienu un to pašu apzīmējumu programmā Python, izstrādātājiem var atvieglot pāreju. pārzina šīs valodas.

Lai gan “np.dot()” joprojām ir derīga un noderīga funkcija, jo īpaši atpakaļsaderības vai specifisku lietošanas gadījumu gadījumā, operators “@” nodrošina intuitīvāku un kodolīgāku veidu, kā Python 3.5 un jaunākās versijās veikt matricas reizināšanu. Izvēle starp abiem galu galā ir atkarīga no konkrētajām projekta prasībām un izstrādātāja personīgajām vēlmēm.

Citāts:
[1] https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication
[2] https://labex.io/tutorials/python-numpy-dot-function-86429
[3] https://madewithml.com/courses/foundations/numpy/
[4] https://www.researchgate.net/figure/The-advantages-of-matrix-multiplication-in-GPU-versus-CPU-25_fig3_320674344
[5] https://www.geeksforgeeks.org/applications-advantages-and-disadvantages-of-matrix-data-structure/

kā operators @ apstrādā apraidi atšķirīgi no np.dot

Operators @ Python 3.5+ apstrādā apraidi citādi nekā np.dot() šādos veidos:

1. Apraide: operators “@” veic apraidi savādāk nekā “np.dot()”. Operators `@` ievēro matricas reizināšanas noteikumus, kur tas apstrādā katru matricu kaudzi pēdējos divos indeksos kā atsevišķas matricas un attiecīgi pārraida. Tas nozīmē, ka, ja kāds no argumentiem ir N-D, N > 2, tas tiek uzskatīts par matricu kaudzi, kas atrodas pēdējos divos indeksos, un attiecīgi tiek pārraidīts[4].

2. Izvades forma: operators “@” atgriež 3D masīvu, ja ievades masīvi ir 3D, turpretim “np.dot()” šādos gadījumos atgriež 4D masīvu. Tas ir tāpēc, ka operators @ ir paredzēts matricas reizināšanas veikšanai, kas parasti rada 3D masīvu. No otras puses, `np.dot()' ir elastīgāks un var apstrādāt dažādas formas atkarībā no ievades masīviem[1].

3.  Axis Alignment: operators “@” izlīdzina ievades masīvu asis atšķirīgi no “np.dot()”. Operators "@" izlīdzina pirmā masīva pēdējo asi ar otrā masīva otro asi, savukārt "np.dot()" pielīdzina pirmā masīva pēdējo asi ar otrā masīva otro asi. [4].

4. Veiktspēja: operators “@” parasti ir ātrāks par “np.dot()” matricas reizināšanai, jo Python 3.5+ ir optimizēta ieviešana. Tomēr šī atšķirība parasti ir nenozīmīga, ja vien nestrādā ar ļoti lielām datu kopām[1].

Rezumējot, operators @ apstrādā apraidi citādi nekā np.dot(), ievērojot matricas reizināšanas noteikumus un apstrādājot katru pēdējo divu indeksu matricu kaudzi kā atsevišķas matricas. Tā rezultātā izvades masīviem ir dažādas formas un asu izlīdzinājumi.

Citāts:
[1] https://stackoverflow.com/questions/34142485/difference-between-numpy-dot-and-python-3-5-matrix-multiplication
[2] https://www.digitalocean.com/community/tutorials/numpy-matrix-multiplication
[3] https://labex.io/tutorials/python-numpy-dot-function-86429
[4] https://mkang32.github.io/python/2020/08/30/numpy-matmul.html
[5] https://madewithml.com/courses/foundations/numpy/