Latarka (uczenie maszynowe) - Torch (machine learning)
Pierwotny autor (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 |
Rodzaj | Biblioteka do uczenia maszynowego i głębokiego uczenia |
Licencja | Licencja BSD |
Stronie internetowej | latarka |
Torch to biblioteka uczenia maszynowego typu open source , platforma obliczeń naukowych i język skryptowy oparty na języku programowania Lua . Zapewnia szeroką gamę algorytmów do głębokiego uczenia i wykorzystuje język skryptowy LuaJIT oraz podstawową implementację C. Od 2018 roku Torch nie jest już aktywnie rozwijany. Jednak PyTorch , który jest oparty na bibliotece Torch, jest aktywnie rozwijany od czerwca 2021 roku.
pochodnia
Podstawowy pakiet Torch to torch
. Zapewnia elastyczną N-wymiarową tablicę lub tensor, która obsługuje podstawowe procedury indeksowania, dzielenia na plasterki, transpozycji, rzutowania typów, zmiany rozmiaru, współdzielenia pamięci i klonowania. Obiekt ten jest używany przez większość innych pakietów i dlatego stanowi główny obiekt biblioteki. Tensora obsługuje operacje arytmetyczne, takie jak max
, min
, sum
, Rozkłady statystyczne takie jak jednolite , normalne i wielomianu i blas operacje jak iloczyn skalarny , matrycę mnożenie wektorowe , macierzy matrycy , produkt matrycy wektora i iloczyn macierzy .
Poniżej przedstawiono przykład korzystania z latarki za pośrednictwem jej interpretera REPL :
> a = torch.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
[torch.DoubleTensor of dimension 3x4]
> a[1][2]
-0.34010116549482
> a:narrow(1,1,2)
-0.2381 -0.3401 -1.7844 -0.2615
0.1411 1.6249 0.1708 0.8299
[torch.DoubleTensor of dimension 2x4]
> a:index(1, torch.LongTensor{1,2})
-0.2381 -0.3401 -1.7844 -0.2615
0.1411 1.6249 0.1708 0.8299
[torch.DoubleTensor of dimension 2x4]
> a:min()
-1.7844365427828
torch
Pakiet upraszcza również programowania obiektowego i serializacji , zapewniając wygodę różne funkcje, które są stosowane w całej jego pakietach. torch.class(classname, parentclass)
Funkcja może być wykorzystywane do tworzenia fabryk obiektów ( klas ). Po wywołaniu konstruktora , torch inicjalizuje i ustawia tabelę Lua ze zdefiniowaną przez użytkownika metatablicą , co sprawia, że tabela staje się obiektem .
Przedmioty tworzone z fabryki palnika może być również w odcinkach, o ile nie zawierają odniesienia do obiektów, które nie są możliwe do serializacji, takich jak Lua współprogram i Lua UserData . Jednakże userdata może być serializowane, jeśli jest owinięta tabeli metatable (lub), który zawiera read()
i write()
metod.
nn
nn
Pakiet służy do budowy sieci neuronowych . Jest podzielony na modułowe obiekty, które mają wspólny Module
interfejs. Moduły mają forward()
i backward()
metody, które pozwalają im na wyprzedzającym i backpropagate odpowiednio. Moduły można łączyć ze sobą za pomocą kompozytów modułów , takich jak Sequential
, Parallel
i Concat
tworzyć złożone wykresy dostosowane do zadań. Prostsze moduły, takie jak Linear
, Tanh
i Max
tworzą podstawowe moduły komponentów. Ten modułowy interfejs zapewnia automatyczne różnicowanie gradientów pierwszego rzędu . Poniżej znajduje się przykładowy przypadek użycia do budowy wielowarstwowego perceptronu przy użyciu modułów:
> mlp = nn.Sequential()
> mlp:add( nn.Linear(10, 25) ) -- 10 input, 25 hidden units
> mlp:add( nn.Tanh() ) -- some hyperbolic tangent transfer function
> mlp:add( nn.Linear(25, 1) ) -- 1 output
> =mlp:forward(torch.randn(10))
-0.1815
[torch.Tensor of dimension 1]
Funkcje strat są zaimplementowane jako podklasy Criterion
, które mają podobny interfejs do Module
. Ma też forward()
i backward()
sposoby obliczania straty i backpropagating gradienty, odpowiednio. Kryteria są pomocne w szkoleniu sieci neuronowej na zadaniach klasycznych. Wspólne kryteria to kryterium błędu średniokwadratowego zaimplementowane w MSECriterion
oraz kryterium entropii krzyżowej zaimplementowane w ClassNLLCriterion
. Poniżej znajduje się przykład funkcji Lua, która może być iteracyjnie wywoływana w celu uczenia mlp
modułu na wejściu Tensor x
, docelowym Tensorze y
ze skalarem learningRate
:
function gradUpdate(mlp, x, y, learningRate)
local criterion = nn.ClassNLLCriterion()
pred = mlp:forward(x)
local err = criterion:forward(pred, y);
mlp:zeroGradParameters();
local t = criterion:backward(pred, y);
mlp:backward(x, t);
mlp:updateParameters(learningRate);
end
Posiada również StochasticGradient
zajęcia do trenowania sieci neuronowej za pomocą stochastycznego gradientu , chociaż optim
pakiet zapewnia znacznie więcej opcji w tym zakresie, takich jak regularyzacja pędu i zaniku wagi .
Inne pakiety
Wiele pakietów innych niż powyższe oficjalne pakiety jest używanych z Torch. Są one wymienione w ściągówce z pochodnią. 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
Latarka jest używana przez Facebook AI Research Group, IBM , Yandex i Idiap Research Institute . Latarka została rozszerzona do użytku na Androidzie i iOS . Był używany do budowania 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 open source.