Torch — відкрита бібліотека для машинного навчання, система для [en] та мова сценаріїв на основі мови програмування Lua. Пропонує широкий спектр алгоритмів для глибокого навчання і використовує мову сценаріїв LuaJIT та реалізацію мовою C в основі. Станом на 2018 рік, Torch більше не перебуває в активній розробці. Проте, станом на серпень 2019 року активно розроблюють PyTorch.
Тип | бібліотека для машинного та глибокого навчання |
---|---|
Автор | Ronan Collobert, Samy Bengio, Johnny Mariéthoz |
Перший випуск | жовтень 2002 |
Стабільний випуск | 7.0 (27 лютого 2017 ) |
Операційна система | Linux, Android, Mac OS X, iOS |
Мова програмування | Lua, LuaJIT, C, CUDA та |
Ліцензія | ліцензія BSD |
Репозиторій | github.com/torch/torch7 |
Вебсайт | torch.ch |
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()
.
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
забезпечує набагато більше можливостей в цьому відношенні, таких як регуляризація зникання моменту та градієнту.
Інші пакети
З Torch використовують багато інших пакетів, крім зазначених вище офіційних. Їх перелічено в шпаргалці torch. Ці додаткові пакети забезпечують широкий спектр зручностей, таких як паралелізм, асинхронне введення/виведення, обробка зображень тощо. Їх можливо встановлювати за допомогою [en], пакетного менеджера Lua, який також включено до дистрибутиву Torch.
Застосування
Torch використовують Група дослідження ШІ компанії Facebook,IBM,Яндекс і [en]. Torch було розширено для використання під Android та iOS. Його використовували для побудови апаратних реалізацій потоків даних, подібних тим, що в нейронних мережах.
Facebook випустила набір модулів розширення як відкрите програмне забезпечення.
Див. також
Примітки
- . 30 жовтня 2002 р. Архів оригіналу за 24 квітня 2014. Процитовано 24 квітня 2014 р.. (англ.)
- Collobert, Ronan. . GitHub. Архів оригіналу за 15 травня 2017. Процитовано 11 травня 2017. (англ.)
- (PDF). Neural Information Processing Systems. 2011. Архів оригіналу (PDF) за 6 березня 2016. Процитовано 11 травня 2017. (англ.)
- Torch GitHub repository ReadMe [ 24 липня 2017 у Wayback Machine.] (англ.)
- PyTorch GitHub repository [ 11 листопада 2019 у Wayback Machine.] (англ.)
- . Архів оригіналу за 18 квітня 2017. Процитовано 11 травня 2017. (англ.)
- KDnuggets Interview with Yann LeCun, Deep Learning Expert, Director of Facebook AI Lab [ 30 березня 2017 у Wayback Machine.] (англ.)
- Hacker News [ 1 грудня 2017 у Wayback Machine.] (англ.)
- Yann Lecun's Facebook Page (англ.)
- IDIAP Research Institute : Torch [ 13 вересня 2016 у Wayback Machine.] (англ.)
- Torch-android GitHub repository [ 22 квітня 2017 у Wayback Machine.] (англ.)
- Torch-ios GitHub repository [ 20 серпня 2017 у Wayback Machine.] (англ.)
- NeuFlow: A Runtime Reconfigurable Dataflow Processor for Vision [ 5 травня 2017 у Wayback Machine.] (англ.)
- . Wired. 16 січня 2015. Архів оригіналу за 20 травня 2017. Процитовано 11 травня 2017. (англ.)
Посилання
- Офіційний сайт
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Torch vidkrita biblioteka dlya mashinnogo navchannya sistema dlya en ta mova scenariyiv na osnovi movi programuvannya Lua Proponuye shirokij spektr algoritmiv dlya glibokogo navchannya i vikoristovuye movu scenariyiv LuaJIT ta realizaciyu movoyu C v osnovi Stanom na 2018 rik Torch bilshe ne perebuvaye v aktivnij rozrobci Prote stanom na serpen 2019 roku aktivno rozroblyuyut PyTorch TorchTipbiblioteka dlya mashinnogo ta glibokogo navchannyaAvtorRonan Collobert Samy Bengio Johnny MariethozPershij vipuskzhovten 2002 Pomilka virazu neochikuvanij operator lt 2002 Pomilka nepravilnij chas Stabilnij vipusk7 0 27 lyutogo 2017 7 rokiv tomu 2017 02 27 Operacijna sistemaLinux Android Mac OS X iOSMova programuvannyaLua LuaJIT C CUDA ta C Licenziyalicenziya BSDRepozitorijgithub com torch torch7Vebsajttorch chtorchCentralnim paketom Torch ye torch Vin zabezpechuye gnuchkij N vimirnij masiv abo tenzor yakij pidtrimuye osnovni proceduri dlya ru en transpoziciyi privedennya tipiv zmini rozmiriv rozpodilennya zberigannya ta klonuvannya Cej ob yekt vikoristovuyetsya bilshistyu inshih paketiv i vidtak ye centralnim ob yektom biblioteki Tenzor takozh pidtrimuye matematichni operaciyi taki yak max min sum statistichni rozpodili taki yak rivnomirnij normalnij ta polinomialnij ta operaciyi osnovnih pidprogram linijnoyi algebri taki yak skalyarnij dobutok matrichno vektorne mnozhennya matrichno matrichne mnozhennya matrichno vektornij skalyarnij dobutok ta matrichnij skalyarnij dobutok Nastupne ilyustruye vikoristannya torch v REPL interpretatori gt a torch randn 3 4 gt 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 3 x4 gt a 1 2 0 34010116549482 gt 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 2 x4 gt 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 2 x4 gt a min 1 7844365427828 Paket torch takozh sproshuye ob yektno oriyentovane programuvannya ta uposlidovlyuvannya proponuyuchi rizni dopomizhni funkciyi yaki vikoristovuyutsya v jogo paketah Funkciyu torch class classname parentclass mozhlivo vikoristovuvati dlya stvorennya fabrik ob yektiv klasiv Pri vikliku konstruktora torch inicializuye ta vstanovlyuye tablicyu Lua z viznachenoyu koristuvachem metatabliceyu yaka robit cyu tablicyu ob yektom Ob yekti stvoryuvani fabrikoyu torch mozhlivo takozh uposlidovlyuvati za umovi sho voni ne mistyat posilan na ob yekti yaki ne mozhe buti uposlidovleno taki yak spivprogrami Lua ta userdata Lua Prote userdata mozhe buti uposlidovleno yaksho yih obgornuto tabliceyu abo metatabliceyu yaka zabezpechuye metodi read ta write nnPaket nn zastosovuyut dlya pobudovi nejronnih merezh Jogo rozdileno na modulni ob yekti yaki mayut spilnij interfejs Module Moduli mayut metodi forward i backward yaki dozvolyayut yim vikonuvati pryame ta zvorotne poshirennya vidpovidno Moduli mozhlivo z yednuvati zastosovuyuchi modulevi komponuvalniki taki yak Sequential Parallel i Concat shobi stvoryuvati skladni pidignani pid zadachu grafi Prostishi moduli taki yak Linear Tanh i Max skladayut moduli osnovnih skladovih Cej modulnij interfejs zabezpechuye avtomatichne diferenciyuvannya gradiyentiv pershogo poryadku Nizhche navedeno priklad pobudovi bagatosharovogo perceptronu iz zastosuvannyam moduliv gt mlp nn Sequential gt mlp add nn Linear 10 25 10 vhodovih 25 prihovanih vuzliv gt mlp add nn Tanh yakas peredavalna funkciya u viglyadi giperbolichnogo tangensu gt mlp add nn Linear 25 1 1 vihid gt mlp forward torch randn 10 0 1815 torch Tensor of dimension 1 Funkciyi vtrat realizovano yak pidklasi klasu Criterion sho maye interfejs podibnij do Module Vin takozh maye metodi forward i backward dlya obchislennya vtrat i zvorotnogo poshirennya gradiyentiv vidpovidno Kriteriyi ye korisnimi dlya trenuvannya nejronnoyi merezhi na klasichnih zadachah Uzhivanimi kriteriyami ye kriterij serednokvadratichnoyi pohibki realizovanij v MSECriterion ta perehresno entropijnij kriterij realizovanij v ClassNLLCriterion Nizhche navedeno priklad funkciyi Lua yaku mozhlivo viklikati iterativno dlya trenuvannya modulya mlp na vhodovomu tenzori x i cilovomu tenzori y zi skalyarnim tempom navchannya 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 Vin takozh maye klas StochasticGradient dlya trenuvannya nejronnoyi merezhi metodom stohastichnogo gradiyentu hocha paket optim zabezpechuye nabagato bilshe mozhlivostej v comu vidnoshenni takih yak regulyarizaciya znikannya momentu ta gradiyentu Inshi paketiZ Torch vikoristovuyut bagato inshih paketiv krim zaznachenih vishe oficijnih Yih perelicheno v shpargalci torch Ci dodatkovi paketi zabezpechuyut shirokij spektr zruchnostej takih yak paralelizm asinhronne vvedennya vivedennya obrobka zobrazhen tosho Yih mozhlivo vstanovlyuvati za dopomogoyu en paketnogo menedzhera Lua yakij takozh vklyucheno do distributivu Torch ZastosuvannyaTorch vikoristovuyut Grupa doslidzhennya ShI kompaniyi Facebook IBM Yandeks i en Torch bulo rozshireno dlya vikoristannya pid Android ta iOS Jogo vikoristovuvali dlya pobudovi aparatnih realizacij potokiv danih podibnih tim sho v nejronnih merezhah Facebook vipustila nabir moduliv rozshirennya yak vidkrite programne zabezpechennya Div takozhPorivnyannya programnogo zabezpechennya glibokogo navchannya PyTorchPrimitki 30 zhovtnya 2002 r Arhiv originalu za 24 kvitnya 2014 Procitovano 24 kvitnya 2014 r angl Collobert Ronan GitHub Arhiv originalu za 15 travnya 2017 Procitovano 11 travnya 2017 angl PDF Neural Information Processing Systems 2011 Arhiv originalu PDF za 6 bereznya 2016 Procitovano 11 travnya 2017 angl Torch GitHub repository ReadMe 24 lipnya 2017 u Wayback Machine angl PyTorch GitHub repository 11 listopada 2019 u Wayback Machine angl Arhiv originalu za 18 kvitnya 2017 Procitovano 11 travnya 2017 angl KDnuggets Interview with Yann LeCun Deep Learning Expert Director of Facebook AI Lab 30 bereznya 2017 u Wayback Machine angl Hacker News 1 grudnya 2017 u Wayback Machine angl Yann Lecun s Facebook Page angl IDIAP Research Institute Torch 13 veresnya 2016 u Wayback Machine angl Torch android GitHub repository 22 kvitnya 2017 u Wayback Machine angl Torch ios GitHub repository 20 serpnya 2017 u Wayback Machine angl NeuFlow A Runtime Reconfigurable Dataflow Processor for Vision 5 travnya 2017 u Wayback Machine angl Wired 16 sichnya 2015 Arhiv originalu za 20 travnya 2017 Procitovano 11 travnya 2017 angl PosilannyaOficijnij sajt