Data Science

Jak vypočítat matice v Pythonu bez NumPy

Jak vypočítat matice v Pythonu bez NumPy
Pro mnoho aplikací potřebujete matematiku. V Pythonu existuje matematický modul, který zpracovává základní funkce, jako jsou funkce zaokrouhlování, faktoriál a zaokrouhlování. Zahrnuje také Power & logaritmické, trigonometrické, úhlové a hyperbolické funkce. Pro komplexní čísla je modul cmath. Ty však nezpracovávají maticové operace.

Jaký je rozdíl mezi poli a maticemi?

Někteří lidé hledají maticová řešení problémů s poli, v čem je tedy rozdíl?  Velkým rozdílem je, že maticové hodnoty jsou čísla, pole může obsahovat další informace, dokonce i řetězce.  Matice mohou představovat rovnice, to je místo, kde je většina vývojářů potřebuje, alespoň v případě nahrazení NumPy.

Jak provedete maticový výpočet?

Standardní operace s maticemi se dají snadno udělat, při přidávání stačí přidat prvky, při násobení můžete ke každému prvku použít skalár atd.

Násobení je trochu složitější, ale jen velmi málo. Ztěžuje to, že musíte udělat mnoho výpočtů pro každé řešení, to je místo, kde přichází výkon. Protože většina výpočtů na sobě nezávisí, jsou tyto výpočty vynikajícími kandidáty pro paralelní výpočet. GPU jsou navrženy pro tyto druhy výpočtů a jsou navrženy pro snadné přidání do desktopových systémů.

Když potřebujete provést maticové výpočty v Pythonu, první řešení, které najdete, je numPy.  NumPy však není vždy nejúčinnějším systémem pro výpočet mnoha matic.
Tento příspěvek se bude zabývat tím, jaké možnosti máte v Pythonu.

Pokud potřebujete alternativy, začněte pečlivějším hledáním toho, pro co potřebujete maticové operace. Vaše aktuální instalace již může mít buď vlastní implementaci, nebo používá podkladovou knihovnu. Příkladem je Machine Learning, kde je prvořadá potřeba maticových operací. TensorFlow má vlastní knihovnu pro maticové operace. Ujistěte se, že znáte svou aktuální knihovnu.

V mnoha případech však potřebujete řešení, které vám vyhovuje. Možná existují omezení v NumPy, některé knihovny jsou rychlejší než NumPy a jsou speciálně vytvořeny pro matice. Mnohokrát chtějí vývojáři urychlit svůj kód, aby začali hledat alternativy. Jedním z důvodů je, že NumPy nemůže běžet na GPU.

I když je tento příspěvek o alternativách k NumPy, knihovně postavené na vrcholu NumPy, je třeba zmínit Theano Library. Knihovna Theano je úzce integrována s NumPy a umožňuje matici podporovanou GPU. Theano je větší knihovna pro strojové učení, ale můžete zvednout pouze maticové funkce.

Podrobnější vysvětlení použití Theano najdete na této stránce: http: // www.marekrei.com / blog / theano-tutorial /

SpPy je knihovna speciálně pro řídká pole, stále ji lze použít pro matice. Řídké pole, mimochodem, je pole, které má v sobě mnoho nulových hodnot. Tato knihovna je malá a efektivní, ale díky své specializaci trochu omezená. Používá také NumPy, ale je efektivnější než jen NumPy.
https: // pythonhosted.org / sppy /

Eigen je efektivní implementace matic, pro jeho použití v Pythonu potřebujete miniEigen, dostupný na https: // pypi.org / pypi / minieigen. Vlastní je vlastně součástí mnoha dalších řešení. Funguje jako knihovna generických matic pro specializovanější moduly a rámce. Tato knihovna má mnoho modulů pro manipulaci s hustou maticí a maticemi. Podporuje také lineární algebru, rozklad a řídkou lineární algebru. Balíček má také funkci pluginu, takže můžete přidat své vlastní moduly.
Chcete-li použít Eigen, nainstalujte jej pomocí pipu a importujte jej do svého kódu.

PyTorch je knihovna pro strojové učení, protože má maticové operace. Import celé knihovny je přehnaný, pokud chcete provést jen několik výpočtů. Pokud však právě začínáte s projektem strojového učení, rozhodněte se, zda je tento pro vás.
Další alternativou je načíst libovolnou C-knihovnu a použít ji. Aby to bylo možné, existuje řešení s názvem cffi, které pro vás vytvoří rozhraní. Toto řešení vyžaduje, abyste již věděli C a abyste vytvořili obal pro každou funkci, kterou potřebujete. Kód pak bude vypadat zmateně a těžko čitelný, ale v závislosti na vašem projektu to může stát za to.

Pokud chcete jen urychlit všechny matice a numerické funkce, můžete místo toho použít numbu. Numba je překladač Pythonu. Když jej použijete, kompilátor vytvoří binární kód „just in time“, jit. Myšlenka jit se běžněji používá v Javě, ale je velmi užitečná pro těžkou matematiku v Pythonu. Vzhledem k tomu, že je Python interpretován, můžete s těžkou matematikou získat problémy s výkonem, numba se o to postará kompilací na CPU nebo GPU podle vašeho výběru.
K dispozici jsou také funkce paralelního výpočtu, ve výchozím nastavení kompilátor běží se zámkem, který zastaví běh mnoha vláken současně. Toto můžete vypnout příznakem, pokud víte o potenciálních problémech spojených s paralelním programováním.

Závěr

Mnohokrát, když začnete programovat v Pythonu nebo jiných jazycích, narazíte na omezení jazyka, kompilátoru nebo něčeho jiného. Když jste v této situaci, měli byste se zastavit a přemýšlet o tom, jaké máte omezení, a zvážit, kolik dalších mohlo mít stejnou situaci. V případě Pythonu a NumPy mnoho vědců a vývojářů napsalo kód, který vyžaduje rychlé provedení. Toto dědictví vytvořilo velké množství větví, které mohou vyřešit váš problém, aniž by vás musely přepínat jazyk nebo psát nové rozšíření do tohoto konkrétního jazyka.

Jak nainstalovat a používat Hiri v systému Linux Mint
E-mailové služby založené na prohlížeči rostly v obrovské popularitě. Někteří přesto stále preferují e-mailové klienty pro stolní počítače, aby si zko...
Jak nainstalovat a používat Stacer v systému Linux Mint
Optimalizace systému je zajímavý postup, který zajistí, že ze systému získáte maximální možný výkon. Mohou existovat různé vrstvy optimalizace - hardw...
Jak nainstalovat a používat aplikaci Hudba Google Play pro stolní počítače v systému Linux Mint
Hudba je univerzálním lákadlem. Sotva existuje někdo, kdo nemá rád žádnou formu hudby. Láska k hudbě je hluboce zakořeněna v naší přirozenosti. Každý ...