Latarka (uczenie maszynowe)
Oryginalni autorzy | Ronan Collobert, Samy Bengio , Johnny Mariéthoz |
---|---|
Pierwsze wydanie | październik 2002 |
Wersja stabilna | 7.0 / 27 lutego 2017
|
Magazyn | |
Napisane w | Lua , LuaJIT , C , CUDA i C++ |
System operacyjny | Linux , Android , Mac OS X , iOS |
Typ | Biblioteka do uczenia maszynowego i uczenia głębokiego |
Licencja | Licencja BSD |
Strona internetowa |
Torch to biblioteka uczenia maszynowego typu open source , naukowa platforma obliczeniowa i język skryptowy oparty na języku programowania Lua . Zapewnia szeroką gamę algorytmów do głębokiego uczenia się i wykorzystuje język skryptowy LuaJIT oraz podstawową implementację C. Został stworzony w IDIAP w EPFL . Od 2018 roku Torch nie jest już aktywnie rozwijany. Jednak PyTorch , który jest oparty na bibliotece Torch, jest aktywnie rozwijany od grudnia 2022 r.
latarka
Podstawowym pakietem Torch jest torch
. Zapewnia elastyczną tablicę N-wymiarową lub Tensor, która obsługuje podstawowe procedury indeksowania, krojenia, transponowania, rzutowania typów, zmiany rozmiaru, udostępniania pamięci i klonowania. Ten obiekt jest używany przez większość innych pakietów i dlatego stanowi główny obiekt biblioteki. Tensor obsługuje również operacje matematyczne, takie jak maks
, min
, suma
, rozkłady statystyczne, takie jak jednolite , normalne i wielomianowe , oraz operacje BLAS , takie jak iloczyn skalarny , mnożenie macierz-wektor , mnożenie macierz-macierz i iloczyn macierzowy .
Poniższy przykład ilustruje użycie latarki za pośrednictwem jej interpretera REPL :
> a = pochodnia . rann ( 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 [ latarka . DoubleTensor o wymiarze 3x4 ] > a [ 1 ] [
2 ] - 0,34010116549482 > a : wąski ( 1 , 1 , 2 ) - 0,2381 - 0,3401 - 1,7844 - 0,2615 0,1411 1,6249 0,1708 0,8299 [ latarka . DoubleTensor o wymiarach 2x4 ] > a : index ( 1 , torch . _
LongTensor { 1 , 2 }) - 0,2381 - 0,3401 - 1,7844 - 0,2615 0,1411 1,6249 0,1708 0,8299 [ latarka . DoubleTensor o wymiarze 2 x4 ] > a : min () - 1,7844365427828
Pakiet latarki
upraszcza również programowanie obiektowe i serializację , udostępniając różne wygodne funkcje, które są używane w jego pakietach. Funkcja torch.class (classname, parentclass)
może służyć do tworzenia fabryk obiektów ( klas ). Kiedy konstruktor jest wywoływany, torch inicjuje i ustawia tabelę Lua ze zdefiniowaną przez użytkownika metatabelą , co sprawia, że tabela jest obiektem .
Obiekty utworzone za pomocą fabryki palników również mogą być serializowane, o ile nie zawierają odniesień do obiektów, których nie można serializować, takich jak Lua coroutines i Lua userdata . Jednak dane użytkownika mogą być serializowane, jeśli są opakowane w tabelę (lub metatabelę), która udostępnia metody read()
i write() .
nn
Pakiet nn
służy do budowy sieci neuronowych . Jest podzielony na modułowe obiekty, które mają wspólny modułu
. Moduły mają forward()
i reverse()
, które umożliwiają im odpowiednio sprzężenie zwrotne i propagację wsteczną . Moduły można łączyć za pomocą kompozytów modułów , takich jak Sequential
, Parallel
i Concat
, aby tworzyć złożone wykresy dostosowane do zadań. Prostsze moduły, takie jak Linear
, Tanh
i Max
tworzą podstawowe moduły składowe. Ten modułowy interfejs zapewnia automatyczne różnicowanie gradientu pierwszego rzędu . Poniżej znajduje się przykładowy przypadek użycia do zbudowania wielowarstwowego perceptronu przy użyciu modułów:
> mlp = nn . Sequential () > mlp : add ( nn . Linear ( 10 , 25 ) ) -- 10 wejść , 25 jednostek ukrytych > mlp : add ( nn . Tanh ( ) ) -- jakaś hiperboliczna funkcja transferu tangensa > mlp : add ( nn . Liniowy ( 25 ,
1 ) ) -- 1 wyjście > = mlp : do przodu ( torch . rann ( 10 )) - 0.1815 [ torch . Tensor wymiaru 1 ] _
Funkcje strat są zaimplementowane jako podklasy Criterion
, które mają podobny interfejs do Module
. Posiada również forward()
i reverse()
odpowiednio do obliczania strat i wstecznej propagacji gradientów. Kryteria są pomocne w trenowaniu sieci neuronowej na klasycznych zadaniach. Typowymi kryteriami są średniokwadratowego błędu zaimplementowane w MSECriterion
oraz kryterium entropii krzyżowej zaimplementowane w ClassNLLCriterion
. Poniżej znajduje się przykład funkcji Lua, którą można wywoływać iteracyjnie w celu trenowania mlp
na wejściu Tensor x
, target Tensor y
ze skalarną szybkością uczenia się
:
funkcja gradUpdate ( mlp , x , y , learningRate ) kryterium lokalne = nn . ClassNLLCriterion () pred = mlp : do przodu ( x ) local err = kryterium : do przodu ( pred , y ); mlp : zeroGradParameters (); lokalne t =
kryterium : wstecz ( pred , y ); mlp : wstecz ( x , t ); mlp : updateParameters ( szybkość uczenia się ); koniec
Posiada również klasę StochasticGradient
do uczenia sieci neuronowej z wykorzystaniem metody Stochastic gradient descent , choć pakiet optim
zapewnia znacznie więcej opcji w tym zakresie, jak chociażby regularyzacja rozkładu pędu i masy .
Inne pakiety
Wiele pakietów innych niż powyższe oficjalne pakiety jest używanych z Torch. Są one wymienione w ściągawce latarki. Te dodatkowe pakiety zapewniają szeroką gamę narzędzi, takich jak równoległość, asynchroniczne wejście/wyjście, przetwarzanie obrazu i tak dalej. Można je zainstalować za pomocą LuaRocks , menedżera pakietów Lua, który jest również dołączony do dystrybucji Torch.
Aplikacje
Torch jest używany przez Facebook AI Research Group, IBM , Yandex i Idiap Research Institute . Torch został rozszerzony do użytku na Androidzie i iOS . Został wykorzystany do zbudowania implementacji sprzętowych dla przepływów danych, takich jak te występujące w sieciach neuronowych.
Facebook wydał zestaw modułów rozszerzeń jako oprogramowanie typu open source.