Torch (strojové učení) - Torch (machine learning)
![]() | |
Původní autoři | Ronan Collobert, Samy Bengio, Johnny Mariéthoz[1] |
---|---|
První vydání | Říjen 2002[1] |
Stabilní uvolnění | 7.0 / 27. února 2017[2] |
Úložiště | ![]() |
Napsáno | Lua, LuaJIT, C, CUDA a C ++ |
Operační systém | Linux, Android, Mac OS X, iOS |
Typ | Knihovna pro strojové učení a hluboké učení |
Licence | Licence BSD |
webová stránka | pochodeň |
Pochodeň je open-source strojové učení knihovna, a vědecké výpočty rámec, a skriptový jazyk založeno na Lua programovací jazyk.[3] Poskytuje širokou škálu algoritmů pro hluboké učení a používá skriptovací jazyk LuaJIT a podkladový C implementace. Od roku 2018 již pochodeň není v aktivním vývoji.[4] nicméně PyTorch, který je založen na knihovně Torch, je aktivně vyvíjen od prosince 2020.[5]
pochodeň
Jádrový balíček Torch je pochodeň
. Poskytuje flexibilní N-dimenzionální pole nebo Tensor, který podporuje základní rutiny pro indexování, krájení, transpozici, vkládání typů, změnu velikosti, sdílení úložiště a klonování. Tento objekt používá většina ostatních balíčků a tvoří tak hlavní objekt knihovny. Tensor také podporuje matematické operace jako max
, min
, součet
, statistické distribuce jako jednotný, normální a multinomiální, a BLAS operace jako Tečkovaný produkt, násobení matice-vektor, násobení matice-matice, maticový vektorový produkt a maticový produkt.
Následuje příklad použití hořáku prostřednictvím jeho REPL tlumočník:
> A = pochodeň.randn(3,4)> =A-0.2381 -0.3401 -1.7844 -0.2615 0.1411 1.6249 0.1708 0.8299-1.0434 2.2291 1.0525 0.8465[pochodeň.DoubleTensor z dimenze 3x4]> A[1][2]-0.34010116549482 > A:úzký(1,1,2)-0.2381 -0.3401 -1.7844 -0.2615 0.1411 1.6249 0.1708 0.8299[pochodeň.DoubleTensor z dimenze 2x4]> A:index(1, pochodeň.LongTensor{1,2})-0.2381 -0.3401 -1.7844 -0.2615 0.1411 1.6249 0.1708 0.8299[pochodeň.DoubleTensor z dimenze 2x4]> A:min()-1.7844365427828
The pochodeň
balíček také zjednodušuje objektově orientované programování a serializace tím, že poskytuje různé praktické funkce, které se používají v jeho balíčcích. The torch.class (název třídy, nadřazená třída)
lze použít k vytvoření továrny na předměty (třídy ). Když konstruktor je zavolána, pochodeň inicializuje a nastaví Lua stůl s uživatelem definované měřitelné, což z tabulky dělá objekt.
Objekty vytvořené pomocí továrny na hořáky lze také serializovat, pokud neobsahují odkazy na objekty, které nelze serializovat, například Lua coutiny a Lua uživatelská data. Nicméně, uživatelská data lze serializovat, pokud je zabaleno tabulkou (nebo metatovatelnou), která poskytuje číst()
a psát si()
metody.
nn
The nn
balíček se používá pro stavbu neuronové sítě. Je rozdělen na modulární objekty, které sdílejí společné Modul
rozhraní. Moduly mají a vpřed()
a zpět ()
metoda, která jim umožňuje dopředu a backpropagate, resp. Moduly lze spojit pomocí modulu kompozity, jako Sekvenční
, Paralelní
a Concat
vytvářet složité grafy přizpůsobené úkolům. Jednodušší moduly jako Lineární
, Tanh
a Max
tvoří základní moduly komponent. Toto modulární rozhraní poskytuje první objednávku automatická diferenciace gradientu. Následuje příklad použití pro stavbu a vícevrstvý perceptron pomocí modulů:
> mlp = nn.Sekvenční()> mlp:přidat( nn.Lineární(10, 25) ) - 10 vstupů, 25 skrytých jednotek> mlp:přidat( nn.Tanh() ) - nějaká hyperbolická funkce přenosu tečny> mlp:přidat( nn.Lineární(25, 1) ) - 1 výstup> =mlp:vpřed(pochodeň.randn(10))-0.1815[pochodeň.Tenzor z dimenze 1]
Funkce ztráty jsou implementovány jako podtřídy Kritérium
, který má podobné rozhraní jako Modul
. Má také vpřed()
a zpět ()
metody pro výpočet gradientů ztráty a zpětného šíření. Kritéria pomáhají trénovat neuronovou síť na klasické úkoly. Společná kritéria jsou Střední čtvercová chyba kritérium implementováno v MSECritérium
a křížová entropie kritérium implementováno v Kritérium ClassNLL
. Následuje příklad funkce Lua, kterou lze iterativně nazvat trénováním mlp
Modul na vstupním tenzoru X
, zaměřte Tensor y
se skalárem learningRate
:
funkce gradUpdate(mlp, X, y, learningRate) místní kritérium = nn.Kritérium ClassNLL() před = mlp:vpřed(X) místní chybovat = kritérium:vpřed(před, y); mlp:zeroGradParameters(); místní t = kritérium:dozadu(před, y); mlp:dozadu(X, t); mlp:updateParameters(learningRate);konec
Má také StochasticGradient
třída pro výcvik neuronové sítě pomocí Stochastický gradient, Ačkoliv optim
balíček poskytuje v tomto ohledu mnohem více možností, jako je hybnost a úbytek hmotnosti regulace.
Další balíčky
Mnoho dalších než výše uvedených oficiálních balíčků se používá s Torch. Ty jsou uvedeny v cheatsheetu pochodně.[6] Tyto balíčky navíc poskytují širokou škálu nástrojů, jako je paralelismus, asynchronní vstup / výstup, zpracování obrazu atd. Mohou být instalovány s LuaRocks, správce balíčků Lua, který je také součástí distribuce Torch.
Aplikace
Pochodeň používá Facebook AI Výzkumná skupina,[7] IBM,[8] Yandex[9] a Výzkumný ústav Idiap.[10] Pochodeň byla rozšířena pro použití na Android[11] a iOS.[12] Používá se k vytváření hardwarových implementací pro datové toky, jaké se nacházejí v neuronových sítích.[13]
Facebook vydal sadu rozšiřujících modulů jako software s otevřeným zdrojovým kódem.[14]
Viz také
Reference
- ^ A b "Torch: modulární knihovna softwaru pro strojové učení". 30. října 2002. CiteSeerX 10.1.1.8.9850. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Collobert, Ronan. „Torch7“. GitHub.
- ^ „Torch7: prostředí podobné Matlabu pro strojové učení“ (PDF). Systémy zpracování neurálních informací. 2011.
- ^ Pochodeň GitHub úložiště ReadMe
- ^ Úložiště PyTorch GitHub
- ^ "Cheatheet · torch / torch7 Wiki".
- ^ KDnuggets Interview s Yannem LeCunem, expertem na hluboké učení, ředitelem Facebooku AI Lab
- ^ Hackerské zprávy
- ^ Stránka Facebooku Yanna Lecuna
- ^ Výzkumný ústav IDIAP: Torch
- ^ Úložiště GitHub pro baterky a Android
- ^ Úložiště Torch-ios GitHub
- ^ NeuFlow: Runtime Reconfigurable Dataflow Processor for Vision
- ^ „Facebook Open-Sources a Trove of AI Tools“. Kabelové. 16. ledna 2015.