Latarka (uczenie maszynowe) - Torch (machine learning)

Pochodnia
Logo latarki
Pierwotny autor (autorzy) Ronan Collobert, Samy Bengio , Johnny Mariéthoz
Pierwsze wydanie październik 2002 ; 18 lat temu ( 2002-10 )
Wersja stabilna
7,0 / 27 lutego 2017 ; 4 lata temu ( 27.02.2017 )
Magazyn Edytuj to na Wikidata
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 .ch

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

torchPakiet 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

nnPakiet służy do budowy sieci neuronowych . Jest podzielony na modułowe obiekty, które mają wspólny Moduleinterfejs. 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, Paralleli Concattworzyć złożone wykresy dostosowane do zadań. Prostsze moduły, takie jak Linear, Tanhi Maxtworzą 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 MSECriterionoraz 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 mlpmodułu na wejściu Tensor x, docelowym Tensorze yze 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ż StochasticGradientzajęcia do trenowania sieci neuronowej za pomocą stochastycznego gradientu , chociaż optimpakiet 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.

Zobacz też

Bibliografia

Linki zewnętrzne