Duomenų mokslas

Kaip apskaičiuoti matricas „Python“ be „NumPy“

Kaip apskaičiuoti matricas „Python“ be „NumPy“
Daugeliui programų jums reikia matematikos. „Python“ yra matematikos modulis, kuriame atliekami pagrindai, tokie kaip apvalinimas, faktorių ir apvalinimo funkcijos. Tai taip pat apima galios ir logaritmines, trigonometrines, kampines ir hiperbolines funkcijas. Sudėtingiems skaičiams modulis yra cmath. Tai netvarko matricos operacijų.

Kuo skiriasi masyvai ir matricos?

Kai kurie žmonės ieško matricinių sprendimų masyvo problemoms spręsti, tad koks skirtumas?  Didelis skirtumas yra tas, kad matricos reikšmės yra skaičiai, masyve gali būti kitos informacijos, net eilutės.  Matricos gali atstovauti lygtis, būtent čia daugumai kūrėjų jų reikia, bent jau tuo atveju, jei pakeisite „NumPy“.

Kaip jūs atliekate matricos skaičiavimą?

Standartines matricos operacijas atlikti paprasta, pridedant reikia tiesiog pridėti elementus, dauginant galima naudoti skaliarą kiekvienam elementui ir pan.

Dauginimas yra šiek tiek sudėtingesnis, bet labai mažas. Tai apsunkina tai, kad reikia atlikti daugybę kiekvieno sprendimo skaičiavimų, būtent čia atsiranda našumas. Kadangi dauguma skaičiavimų nepriklauso vienas nuo kito, šie skaičiavimai yra puikūs kandidatai lygiagrečiam skaičiavimui. GPU yra skirti tokiems skaičiavimams atlikti ir jie sukurti taip, kad juos būtų galima lengvai pridėti prie darbalaukio sistemų.

Kai reikia atlikti matricos skaičiavimus „Python“, pirmasis jūsų surastas sprendimas yra „numPy“.  Tačiau „NumPy“ ne visada yra efektyviausia daugelio matricų skaičiavimo sistema.
Šis įrašas apims, kokias parinktis turite „Python“.

Kai jums reikia alternatyvų, pradėkite atidžiau ieškodami, kam jums reikalingos matricos operacijos. Dabartinis jūsų diegimas jau gali būti įdiegtas arba naudojamas pagrindinė biblioteka. Pavyzdys yra mašininis mokymasis, kur svarbiausias matricos operacijų poreikis. „TensorFlow“ turi savo biblioteką matricos operacijoms atlikti. Įsitikinkite, kad žinote savo dabartinę biblioteką.

Tačiau daugeliu atvejų jums reikia tinkamo sprendimo. Gal „NumPy“ yra apribojimų, kai kurios bibliotekos yra greitesnės nei „NumPy“ ir specialiai sukurtos matricoms. Daug kartų kūrėjai nori pagreitinti savo kodą, kad jie pradėtų ieškoti alternatyvų. Viena iš priežasčių yra ta, kad „NumPy“ negali veikti su GPU.

Nors šis įrašas yra apie „NumPy“, bibliotekos, pastatytos ant „NumPy“, alternatyvas, reikia paminėti „Theano“ biblioteką. „Theano“ biblioteka yra glaudžiai integruota su „NumPy“ ir įgalina GPU palaikomą matricą. „Theano“ yra didesnė biblioteka, skirta mašininiam mokymuisi, tačiau galite iškelti tik matricos funkcijas.

Išsamesnį Theano naudojimo paaiškinimą rasite šiame puslapyje: http: // www.marekrei.com / blog / theano-tutorial /

„SpPy“ yra biblioteka, skirta specialiai retiems masyvams, ji vis dar gali būti naudojama matricoms. Retas masyvas, beje, yra masyvas, kuriame yra daug nulinės vertės. Ši biblioteka yra maža ir efektyvi, tačiau šiek tiek ribota dėl savo specializacijos. Jis taip pat naudoja „NumPy“, tačiau yra efektyvesnis nei „NumPy“.
https: // pythonhosted.org / sppy /

„Eigen“ yra efektyvus matricų įgyvendinimas, norint jį naudoti „Python“, jums reikia „miniEigen“, kurį galite rasti adresu https: // pypi.org / pypi / minieigen. Eigen iš tikrųjų yra įtrauktas į daugelį kitų sprendimų. Tai veikia kaip bendresnė matricų biblioteka, skirta labiau specializuotiems moduliams ir sistemoms. Šioje bibliotekoje yra daug modulių, skirtų manipuliuoti tankia matrica ir masyvais. Jis taip pat palaiko tiesinę algebrą, skaidymą ir retą tiesinę algebrą. Paketas taip pat turi papildinio funkciją, todėl galite pridėti savo modulius.
Norėdami naudoti „Eigen“, įdiekite jį naudodami „pip“ ir importuokite į savo kodą.

„PyTorch“ yra mašininio mokymosi biblioteka, todėl ji turi matricos operacijas. Importuoti visą biblioteką yra per daug, jei norite atlikti tik kelis skaičiavimus. Tačiau, jei jūs tik pradedate mašininio mokymosi projektą, įsitikinkite, kad nusprendėte, ar šis skirtas jums.
Kita alternatyva yra gauti bet kurią C biblioteką ir ją naudoti. Norėdami tai padaryti, yra sprendimas, pavadintas „cffi“, kuris sukurs jums sąsają. Šis sprendimas reikalauja, kad jūs jau žinote C ir kad sukurtumėte kiekvienos reikalingos funkcijos paketą. Tada kodas atrodys purvinas ir sunkiai įskaitomas, tačiau tai gali būti verta, atsižvelgiant į jūsų projektą.

Jei norite tik pagreitinti visas masyvo ir skaitines funkcijas, galite naudoti numba. Numba yra „Python“ kompiliatorius. Kai jį naudosite, kompiliatorius sukurs dvejetainį kodą „pačiu laiku“, jit. „Jit“ idėja dažniausiai naudojama kartu su „Java“, tačiau labai naudinga sunkiajai „Python“ matematikai. Kadangi „Python“ yra aiškinamas, galite susidurti su sunkiosios matematikos našumo problemomis, numba tuo pasirūpina sukompiliuodamas į jūsų pasirinktą procesorių ar GPU.
Taip pat yra lygiagrečių skaičiavimo funkcijų, pagal numatytuosius nustatymus kompiliatorius veikia su užraktu, kuris sustabdo daugelio gijų veikimą vienu metu. Tai galite išjungti pažymėdami, jei žinote apie galimas problemas, susijusias su lygiagrečiu programavimu.

Išvada

Daug kartų, kai pradedate programuoti „Python“ ar kitomis kalbomis, susiduriate su kalbos, kompiliatoriaus ar kažko kito apribojimais. Kai esate tokioje situacijoje, turėtumėte sustoti ir pagalvoti, kokį apribojimą turite, ir apsvarstyti, kiek kitų galėjo turėti tą pačią situaciją. „Python“ ir „NumPy“ atveju daugelis mokslininkų ir kūrėjų parašė kodą, kurį reikia greitai vykdyti. Šis palikimas sukūrė daug filialų, kurie gali išspręsti jūsų problemą nepriversdami pakeisti kalbos ar nerašydami naujo plėtinio į šią kalbą.

„OpenTTD“ ir „Simutrans“
Sukurti savo transporto modeliavimą gali būti smagu, atpalaiduojanti ir be galo viliojanti. Štai kodėl jūs turite įsitikinti, kad išbandėte kuo daugia...
„OpenTTD“ pamoka
„OpenTTD“ yra vienas iš populiariausių verslo modeliavimo žaidimų. Šiame žaidime turite sukurti nuostabų transporto verslą. Tačiau pradėsite nuo mažda...
„SuperTuxKart“, skirta „Linux“
„SuperTuxKart“ yra puikus pavadinimas, sukurtas nemokamai suteikti „Mario Kart“ patirtį jūsų „Linux“ sistemoje. Tai gana sudėtinga ir smagu žaisti, yr...