Andmeteadus

Kuidas arvutada Pythoni maatriksid ilma NumPy-ta

Kuidas arvutada Pythoni maatriksid ilma NumPy-ta
Paljude rakenduste jaoks vajate matemaatikat. Pythonis on matemaatika moodul, mis käsitleb selliseid põhitõdesid nagu ümardamis-, faktoriaal- ja ümardamisfunktsioonid. See hõlmab ka võimsus- ja logaritmilisi, trigonomeetrilisi, nurga- ja hüperboolseid funktsioone. Kompleksarvude korral on moodul cmath. Need ei käsitle küll maatriksoperatsioone.

Mis vahe on massiividel ja maatriksitel?

Mõned inimesed otsivad massiprobleemidele maatrikslahendusi, mis siis nende vahet on?  Suur erinevus on see, et maatriksväärtused on arvud, massiiv võib sisaldada muud teavet, isegi stringe.  Maatriksid võivad kujutada võrrandeid, siin on enamik arendajaid neid vaja, vähemalt NumPy asendamise korral.

Kuidas teha maatriksarvutust?

Standardseid maatriksioperatsioone on lihtne teha, lisades lisate lihtsalt elemendid, korrutades saate kasutada iga elemendi skalaari ja nii edasi.

Korrutamine on veidi keerulisem, kuid väga väike. Selle teeb raskeks see, et peate iga lahenduse jaoks tegema palju arvutusi, siin tuleb jõudlus. Kuna enamik arvutustest ei sõltu üksteisest, sobivad need arvutused paralleelseks arvutamiseks suurepäraselt. GPU-d on mõeldud sellist tüüpi arvutuste jaoks ja need on mõeldud hõlpsasti töölaua süsteemidesse lisamiseks.

Kui peate Pythonis tegema maatriksarvutusi, on esimene leitud lahendus numPy.  Kuid NumPy ei ole alati paljude maatriksite arvutamiseks kõige tõhusam süsteem.
See postitus käsitleb Pythonis olevaid valikuid.

Kui vajate alternatiive, uurige kõigepealt hoolikamalt, milleks vajate maatriksioperatsioone. Teie praegusel installil võib olla juba oma rakendus või see kasutab aluseks olevat teeki. Näitena võib tuua masinõppe, kus maatriksioperatsioonide vajadus on esmatähtis. TensorFlow'l on oma maatriksitehingute teek. Veenduge, et teaksite oma praegust kogu.

Paljudel juhtudel vajate siiski teile sobivat lahendust. Võib-olla on NumPy-s piiranguid, mõned teegid on NumPy-st kiiremad ja spetsiaalselt maatriksite jaoks loodud. Mitu korda soovivad arendajad oma koodi kiirendada, et nad hakkaksid alternatiive otsima. Üks põhjus on see, et NumPy ei saa GPU-dega töötada.

Kuigi see postitus räägib NumPy, NumPy peale ehitatud raamatukogu alternatiividest, tuleb mainida Theano raamatukogu. Theano teek on NumPy-ga tihedalt integreeritud ja võimaldab GPU-ga toetatud maatriksit. Theano on suurem masinõppe teek, kuid saate tõsta ainult maatriksi funktsioone.

Theano kasutamise sügavamat selgitust leiate sellelt lehelt: http: // www.marekrei.com / blog / theano-tutorial /

SpPy on spetsiaalselt hõredate massiivide jaoks mõeldud teek, seda saab endiselt kasutada maatriksite jaoks. Hõre massiiv, muide, on massiiv, millel on palju nullväärtusi. See raamatukogu on väike ja tõhus, kuid oma spetsialiseerumise tõttu veidi piiratud. Samuti kasutab see NumPyt, kuid on tõhusam kui lihtsalt NumPy.
https: // pythonhosted.org / sppy /

Eigen on maatriksite tõhus rakendamine, Pythonis kasutamiseks on vaja miniEigeni, mis on saadaval aadressil https: // pypi.org / pypi / minieigen. Eigen kuulub tegelikult paljude teiste lahenduste hulka. See toimib spetsiaalsemate moodulite ja raamistike üldise maatriksiteekuna. Selles teegis on palju mooduleid tiheda maatriksi ja massiivi manipuleerimiseks. Samuti toetab see lineaarset algebrat, lagundamist ja hõredat lineaarset algebrat. Paketil on ka pistikprogrammi funktsioon, nii et saate oma mooduleid lisada.
Eigeni kasutamiseks installige see pipiga ja importige see oma koodi.

PyTorch on masinõppe teek, seetõttu on sellel maatriksoperatsioone. Kogu teegi importimine on üle jõu käiv, kui soovite teha vaid paar arvutust. Kui aga alustate alles masinõppeprojektiga, otsustage kindlasti, kas see on teie jaoks.
Teine võimalus on hankida mis tahes C-teek ja kasutada seda. Selle võimaldamiseks on olemas lahendus cffi, mis loob teile liidese. See lahendus eeldab, et tunnete juba C-d ja loote iga vajaliku funktsiooni jaoks ümbrise. Seejärel näib kood segane ja raskesti loetav, kuid see võib olla seda väärt, sõltuvalt teie projektist.

Kui soovite lihtsalt kiirendada kõiki massiivi- ja numbrifunktsioone, võite selle asemel kasutada numba. Numba on Pythoni kompilaator. Selle kasutamisel loob kompilaator binaarkoodi just õigel ajal, jit. Jiti ideed kasutatakse Java-s sagedamini, kuid see on Pythoni raskete matemaatika jaoks väga kasulik. Kuna Pythoni tõlgendatakse, võite raske matemaatikaga saada jõudlusprobleeme, hoolitseb numba selle eest, kompileerides teie valitud protsessorisse või GPU-sse.
Saadaval on ka paralleelsed arvutusfunktsioonid, vaikimisi töötab kompilaator lukuga, mis peatab paljude niitide samaaegse töötamise. Saate selle lipu abil välja lülitada, kui olete teadlik paralleelse programmeerimisega seotud võimalikest probleemidest.

Järeldus

Mitu korda, kui hakkate programmeerima Pythonis või mõnes muus keeles, satute keele, kompilaatori või millegi muu piirangutesse. Sellises olukorras peaksite peatuma ja mõtlema, milline piirang teil on ja kaaluma, kui paljudel teistel võib olla sama olukord. Pythoni ja NumPy puhul on paljud teadlased ja arendajad kirjutanud koodi, mis vajab kiiret käivitamist. See pärand on loonud suure hulga harusid, mis võivad teie probleemi lahendada, sundimata teid keelt vahetama või sellele konkreetsele keelele uut laiendit kirjutama.

Kuidas kuvada OSD ülekatet täisekraanil Linuxi rakendustes ja mängudes
Täisekraaniga mängude mängimine või rakenduste kasutamine häireteta täisekraanirežiimis võib teid paneelil või tegumiribal kuvatavast asjakohasest süs...
Viis parimat mängu püüdmise kaarti
Me kõik oleme YouTube'is voogesituse mänge näinud ja armastanud. PewDiePie, Jakesepticye ja Markiplier on vaid mõned tipptasemel mängijatest, kes on t...
Kuidas mängu Linuxis arendada
Kümme aastat tagasi ei osanud paljud Linuxi kasutajad ennustada, et nende lemmikoperatsioonisüsteem on ühel päeval populaarne kommertsvideomängude män...