Kakšna je razlika med nizi in matricami?
Nekateri iščejo matrične rešitve težav z nizi, v čem je torej razlika? Velika razlika je v tem, da so matrične vrednosti številke, polje lahko vsebuje druge informacije, tudi nize. Matrice lahko predstavljajo enačbe, tu jih potrebuje večina razvijalcev, vsaj v primeru zamenjave NumPy.
Kako naredite matrični izračun?
Standardne matrične operacije je enostavno narediti, ko dodajate le elemente, pri množenju lahko uporabite skalar za vsak element itd.
Množenje je nekoliko bolj zapleteno, vendar zelo malo. Težko je, da morate za vsako rešitev narediti veliko izračunov, tu pride do zmogljivosti. Ker večina izračunov ni odvisna drug od drugega, so ti izračuni odlični kandidati za vzporedno računanje. Grafični procesorji so zasnovani za tovrstne izračune in so zasnovani za enostavno dodajanje v namizne sisteme.
Ko morate v Pythonu opraviti matrične izračune, je prva rešitev, ki jo najdete, numPy. Vendar NumPy ni vedno najučinkovitejši sistem za izračun številnih matric.
Ta objava bo zajela, katere možnosti imate v Pythonu.
Ko potrebujete druge možnosti, najprej natančneje preglejte, za kaj potrebujete matrične operacije. Vaša trenutna namestitev je morda že lastna ali pa uporablja osnovno knjižnico. Primer je strojno učenje, kjer je potreba po matričnih operacijah najpomembnejša. TensorFlow ima svojo knjižnico za matrične operacije. Prepričajte se, da poznate svojo trenutno knjižnico.
V mnogih primerih pa potrebujete rešitev, ki ustreza vam. Mogoče obstajajo omejitve v NumPy, nekatere knjižnice so hitrejše od NumPy in posebej narejene za matrike. Velikokrat želijo razvijalci svojo kodo pospešiti, zato začnejo iskati alternative. Eden od razlogov je, da NumPy ne more delovati na grafičnih procesorjih.
Medtem ko gre v tem prispevku o alternativah NumPy, knjižnici, zgrajeni nad NumPy, je treba omeniti knjižnico Theano. Knjižnica Theano je tesno integrirana z NumPy in omogoča matriko, podprto z GPU. Theano je večja knjižnica za strojno učenje, vendar lahko uporabite samo funkcije matrike.
Za podrobnejšo razlago uporabe Theano glejte to stran: http: // www.marekrei.com / blog / theano-tutorial /
SpPy je knjižnica posebej za redke nize, še vedno jo je mogoče uporabiti za matrike. Mimogrede, redka matrika je matrika, v kateri je veliko nič vrednosti. Ta knjižnica je majhna in učinkovita, a zaradi svoje specializacije nekoliko omejena. Uporablja tudi NumPy, vendar je bolj učinkovit kot samo NumPy.
https: // pythonhosted.org / sppy /
Eigen je učinkovita izvedba matric, za njegovo uporabo v Pythonu potrebujete miniEigen, ki je na voljo na https: // pypi.org / pypi / minieigen. Eigen je dejansko vključen v številne druge rešitve. Deluje kot generična matrična knjižnica za bolj specializirane module in okvire. Ta knjižnica ima veliko modulov za gosto manipulacijo matrike in matrike. Podpira tudi linearno algebro, razgradnjo in redko linearno algebro. Paket ima tudi funkcijo vtičnika, tako da lahko dodate svoje module.
Če želite uporabljati Eigen, ga namestite s pipom in uvozite v kodo.
PyTorch je knjižnica za strojno učenje, zato ima matrične operacije. Uvoz celotne knjižnice je presežek, če želite narediti le nekaj izračunov. Če pa šele začenjate s projektom strojnega učenja, se odločite, ali je ta namenjen vam.
Druga možnost je pridobiti katero koli knjižnico C in jo uporabiti. Da bi to omogočili, obstaja rešitev z imenom cffi, ki bo ustvarila vmesnik za vas. Ta rešitev zahteva, da že poznate C in da ustvarite ovoj za vsako funkcijo, ki jo potrebujete. Nato bo koda videti zmedena in težko berljiva, vendar se to morda splača, odvisno od vašega projekta.
Če želite samo pospešiti vse matrične in numerične funkcije, lahko namesto tega uporabite numba. Numba je prevajalnik Python. Ko jo uporabite, bo prevajalnik ustvaril binarno kodo "ravno v času", jit. Ideja jit se bolj pogosto uporablja z Javo, vendar je zelo koristna za težko matematiko v Pythonu. Ker se razlaga Python, lahko pri težki matematiki dobite težave z zmogljivostjo, Numba poskrbi za to, tako da pripravi CPU ali GPU po vaši izbiri.
Na voljo so tudi funkcije vzporednega računalništva, privzeto se prevajalnik izvaja s ključavnico, ki ustavi, da bi se več niti izvajalo hkrati. To lahko izklopite z zastavico, če se zavedate morebitnih težav, povezanih z vzporednim programiranjem.
Zaključek
Velikokrat, ko začnete programirati v Pythonu ali drugih jezikih, naletite na omejitve jezika, prevajalnika ali česa drugega. Ko se znajdete v tej situaciji, se ustavite in premislite, kakšno omejitev imate, ter razmislite, koliko drugih je morda imelo enako situacijo. V primeru Python in NumPy so mnogi znanstveniki in razvijalci napisali kodo, ki zahteva hitro izvedbo. Ta zapuščina je ustvarila veliko število podružnic, ki lahko rešijo vaš problem, ne da bi vas prisilile, da zamenjate jezik ali napišete novo razširitev v ta jezik.