Топ питань
Часова шкала
Чат
Перспективи
Torch
програмне забезпечення З Вікіпедії, вільної енциклопедії
Remove ads
Torch — відкрита бібліотека для машинного навчання, система для наукових обчислень[en] та мова сценаріїв на основі мови програмування Lua[3]. Пропонує широкий спектр алгоритмів для глибокого навчання і використовує мову сценаріїв LuaJIT та реалізацію мовою C в основі. Станом на 2018 рік, Torch більше не перебуває в активній розробці.[4] Проте, станом на серпень 2019 року активно розроблюють PyTorch.[5]
Remove ads
torch
Узагальнити
Перспектива
Центральним пакетом Torch є torch. Він забезпечує гнучкий N-вимірний масив, або тензор, який підтримує основні процедури для індексування[ru], розшаровування[en], транспозиції, приведення типів, зміни розмірів, розподілення зберігання, та клонування. Цей об'єкт використовується більшістю інших пакетів, і відтак є центральним об'єктом бібліотеки. Тензор також підтримує математичні операції, такі як max, min, sum, статистичні розподіли, такі як рівномірний, нормальний та поліноміальний, та операції основних підпрограм лінійної алгебри, такі як скалярний добуток, матрично-векторне множення, матрично-матричне множення, матрично-векторний скалярний добуток та матричний скалярний добуток.
Наступне ілюструє використання torch в 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 також спрощує об'єктно-орієнтоване програмування та упослідовлювання, пропонуючи різні допоміжні функції, які використовуються в його пакетах. Функцію torch.class(classname, parentclass) можливо використовувати для створення фабрик об'єктів (класів). При виклику конструктора torch ініціалізує та встановлює таблицю Lua з визначеною користувачем метатаблицею, яка робить цю таблицю об'єктом.
Об'єкти, створювані фабрикою torch, можливо також упослідовлювати, за умови, що вони не містять посилань на об'єкти, які не може бути упослідовлено, такі як співпрограми Lua та userdata Lua. Проте userdata може бути упослідовлено, якщо їх обгорнуто таблицею (або метатаблицею), яка забезпечує методи read() та write().
Remove ads
nn
Узагальнити
Перспектива
Пакет nn застосовують для побудови нейронних мереж. Його розділено на модульні об'єкти, які мають спільний інтерфейс Module. Модулі мають методи forward() і backward(), які дозволяють їм виконувати пряме та зворотне поширення відповідно. Модулі можливо з'єднувати, застосовуючи модулеві компонувальники, такі як Sequential, Parallel і Concat, щоби створювати складні, підігнані під задачу графи. Простіші модулі, такі як Linear, Tanh і Max, складають модулі основних складових. Цей модульний інтерфейс забезпечує автоматичне диференціювання градієнтів першого порядку. Нижче наведено приклад побудови багатошарового перцептрону із застосуванням модулів:
> mlp = nn.Sequential()
> mlp:add( nn.Linear(10, 25) ) -- 10 входових, 25 прихованих вузлів
> mlp:add( nn.Tanh() ) -- якась передавальна функція у вигляді гіперболічного тангенсу
> mlp:add( nn.Linear(25, 1) ) -- 1 вихід
> =mlp:forward(torch.randn(10))
-0.1815
[torch.Tensor of dimension 1]
Функції втрат реалізовано як підкласи класу Criterion, що має інтерфейс, подібний до Module. Він також має методи forward() і backward() для обчислення втрат і зворотного поширення градієнтів відповідно. Критерії є корисними для тренування нейронної мережі на класичних задачах. Уживаними критеріями є критерій середньоквадратичної похибки, реалізований в MSECriterion, та перехресно-ентропійний критерій, реалізований в ClassNLLCriterion. Нижче наведено приклад функції Lua, яку можливо викликати ітеративно для тренування модуля mlp на входовому тензорі x і цільовому тензорі y зі скалярним темпом навчання 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
Він також має клас StochasticGradient для тренування нейронної мережі методом стохастичного градієнту, хоча пакет optim забезпечує набагато більше можливостей в цьому відношенні, таких як регуляризація зникання моменту та градієнту.
Remove ads
Інші пакети
З Torch використовують багато інших пакетів, крім зазначених вище офіційних. Їх перелічено в шпаргалці torch.[6] Ці додаткові пакети забезпечують широкий спектр зручностей, таких як паралелізм, асинхронне введення/виведення, обробка зображень тощо. Їх можливо встановлювати за допомогою LuaRocks[en], пакетного менеджера Lua, який також включено до дистрибутиву Torch.
Застосування
Torch використовують Група дослідження ШІ компанії Facebook,[7] IBM,[8] Яндекс[9] і Дослідницький інститут Ідіап[en].[10] Torch було розширено для використання під Android[11] та iOS.[12] Його використовували для побудови апаратних реалізацій потоків даних, подібних тим, що в нейронних мережах.[13]
Facebook випустила набір модулів розширення як відкрите програмне забезпечення.[14]
Див. також
Примітки
Посилання
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads

