Datu zinātne

Kā aprēķināt matricas Python bez NumPy

Kā aprēķināt matricas Python bez NumPy
Daudzām lietojumprogrammām nepieciešama matemātika. Python ir matemātikas modulis, kas apstrādā tādus pamatus kā noapaļošana, faktoriālās un noapaļošanas funkcijas. Tas ietver arī jaudas un logaritmiskās, trigonometrijas, leņķa un hiperboliskās funkcijas. Sarežģītiem skaitļiem modulis ir cmath. Tie tomēr neapstrādā matricas operācijas.

Kāda ir atšķirība starp masīviem un matricām?

Daži cilvēki meklē matricu risinājumus masīvu problēmām, tāpēc kāda ir atšķirība?  Lielā atšķirība ir tā, ka matricas vērtības ir skaitļi, masīvs var saturēt citu informāciju, pat virknes.  Matricas var attēlot vienādojumus, tieši šeit tie ir vajadzīgi lielākajai daļai izstrādātāju, vismaz NumPy nomaiņas gadījumā.

Kā jūs veicat matricas aprēķinu?

Standarta matricas operācijas ir vienkārši izdarāmas, pievienojot jūs vienkārši pievienojat elementus, reizinot jūs varat izmantot skalāru katram elementam utt.

Reizināšana ir nedaudz sarežģītāka, bet ļoti maza. Tas, kas padara to smagu, ir tas, ka katram risinājumam ir jāveic daudzi aprēķini, tieši šeit parādās veiktspēja. Tā kā lielākā daļa aprēķinu nav atkarīgi viens no otra, šie aprēķini ir lieliski piemēroti paralēlai skaitļošanai. GPU ir paredzēti šāda veida aprēķiniem, un tie ir paredzēti, lai tos viegli pievienotu darbvirsmas sistēmām.

Kad jums jāveic matricas aprēķini Python, pirmais atrastais risinājums ir numPy.  Tomēr NumPy ne vienmēr ir visefektīvākā sistēma daudzu matricu aprēķināšanai.
Šis ieraksts aptvers jūsu iespējas Python.

Kad jums ir nepieciešamas alternatīvas, sāciet rūpīgāk izpētīt, kam nepieciešamas matricas operācijas. Iespējams, ka jūsu pašreizējai instalācijai jau ir sava realizācija, vai arī tā izmanto pamatā esošo bibliotēku. Kā piemēru var minēt mašīnmācīšanos, kur matricu operāciju nepieciešamība ir vissvarīgākā. TensorFlow ir sava bibliotēka matricu operācijām. Pārliecinieties, vai zināt savu pašreizējo bibliotēku.

Tomēr daudzos gadījumos jums ir nepieciešams risinājums, kas jums ir piemērots. Varbūt NumPy ir ierobežojumi, dažas bibliotēkas ir ātrākas nekā NumPy un ir īpaši izveidotas matricām. Daudzas reizes izstrādātāji vēlas paātrināt kodu, lai viņi sāktu meklēt alternatīvas. Viens iemesls ir tas, ka NumPy nevar darboties ar GPU.

Lai gan šis ziņojums ir par numPy alternatīvām, bibliotēkai, kas izveidota virs NumPy, jāpiemin Theano bibliotēka. Theano bibliotēka ir cieši integrēta ar NumPy un nodrošina GPU atbalstītu matricu. Theano ir lielāka bibliotēka mašīnmācībai, bet jūs varat izcelt tikai matricas funkcijas.

Lai iegūtu dziļāku skaidrojumu par Theano lietošanu, skatiet šo lapu: http: // www.marekrei.com / blog / theano-tutorial /

SpPy ir bibliotēka, kas īpaši paredzēta retiem blokiem, to joprojām var izmantot matricām. Retais masīvs, starp citu, ir masīvs, kurā ir daudz nulles vērtību. Šī bibliotēka ir maza un efektīva, taču tās specializācijas dēļ tā ir nedaudz ierobežota. Tas arī izmanto NumPy, bet ir efektīvāks nekā tikai NumPy.
https: // pythonhosted.org / sppy /

Eigen ir efektīva matricu ieviešana, lai to izmantotu Python, jums ir nepieciešams miniEigen, kas pieejams vietnē https: // pypi.org / pypi / minieigen. Eigen faktiski ir iekļauts daudzos citos risinājumos. Tas darbojas kā vispārēja matricas bibliotēka specializētākiem moduļiem un ietvariem. Šajā bibliotēkā ir daudz moduļu, lai manipulētu ar blīvu matricu un masīvu. Tas atbalsta arī lineāro algebru, sadalīšanos un retu lineāro algebru. Pakotnei ir arī spraudņa funkcija, lai jūs varētu pievienot savus moduļus.
Lai izmantotu Eigen, instalējiet to ar pip un importējiet to savā kodā.

PyTorch ir bibliotēka mašīnmācībai, tāpēc tai ir matricas operācijas. Visas bibliotēkas importēšana ir pārspīlēta, ja vēlaties veikt tikai dažus aprēķinus. Tomēr, ja jūs tikai sākat ar mašīnmācīšanās projektu, noteikti izlemiet, vai šis ir domāts jums.
Vēl viena alternatīva ir iegūt jebkuru C bibliotēku un to izmantot. Lai to izdarītu, ir pieejams risinājums ar nosaukumu cffi, kas jums izveidos saskarni. Šis risinājums prasa, lai jūs jau zināt C un lai izveidotu iesaiņojumu katrai funkcijai, kas jums nepieciešama. Pēc tam kods izskatīsies neskaidrs un grūti lasāms, taču tas var būt tā vērts, atkarībā no jūsu projekta.

Ja vēlaties tikai paātrināt visas masīva un skaitliskās funkcijas, tā vietā varat izmantot numba. Numba ir Python kompilators. Kad jūs to izmantojat, kompilators izveidos bināro kodu "tieši laikā", jit. Jit ideja tiek biežāk izmantota kopā ar Java, taču tā ir ļoti noderīga smagajai matemātikai Python. Tā kā Python tiek interpretēts, jūs varat iegūt veiktspējas problēmas ar smago matemātiku, numba par to rūpējas, apkopojot uz CPU vai GPU pēc jūsu izvēles.
Ir pieejamas arī paralēlas skaitļošanas funkcijas, pēc noklusējuma kompilators darbojas ar slēdzeni, kas neļauj vienlaikus darboties daudziem pavedieniem. To var izslēgt ar karodziņu, ja vien esat informēts par iespējamām problēmām, kas saistītas ar paralēlo programmēšanu.

Secinājums

Sākot programmēt Python vai citās valodās, daudzas reizes rodas valodas, kompilatora vai kaut kā cita ierobežojumi. Atrodoties šajā situācijā, jums vajadzētu apstāties un domāt par to, kāds jums ir ierobežojums, un apsvērt, cik daudziem citiem varētu būt tāda pati situācija. Python un NumPy gadījumā daudzi zinātnieki un izstrādātāji ir uzrakstījuši kodu, kuram nepieciešama ātra izpilde. Šis mantojums ir izveidojis lielu skaitu filiāļu, kas var atrisināt jūsu problēmu, neliekot jums mainīt valodu vai rakstīt jaunu paplašinājumu šai konkrētajai valodai.

Izmantojot X-Mouse Button Control, atšķirīgi mainiet peles pogas atšķirīgai programmatūrai
Varbūt jums ir nepieciešams rīks, kas varētu mainīt peles vadību ar katru lietoto lietojumprogrammu. Ja tas tā ir, varat izmēģināt lietojumprogrammu a...
Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...