Факел (машинное обучение)
![]() | |
Оригинальный автор(ы) | Ронан Коллоберт, Сами Бенджио , Джонни Мариетос [1] |
---|---|
Первоначальный выпуск | октябрь 2002 г [1] |
Финальный выпуск | 7.0
/ 27 февраля 2017 г [2] |
Репозиторий | |
Написано в | Луа , С , С++ |
Операционная система | Linux , Android , Mac OS X , iOS |
Тип | Библиотека для машинного и глубокого обучения |
Лицензия | Лицензия БСД |
Веб-сайт | факел |
Torch — это с открытым исходным кодом библиотека машинного обучения . среда научных вычислений и язык сценариев на основе Lua . [3] Он предоставляет LuaJIT интерфейсы глубокого обучения для алгоритмов реализованных на C. , Он был создан Исследовательским институтом Идиап при EPFL . Разработка Torch перешла в 2017 году на PyTorch , порт библиотеки на Python . [4] [5] [ нужен лучший источник ]
факел [ править ]
Основной пакет Torch torch
. Он предоставляет гибкий N-мерный массив или тензор, который поддерживает базовые процедуры индексации, нарезки, транспонирования, приведения типов, изменения размера, совместного использования хранилища и клонирования. Этот объект используется большинством других пакетов и, таким образом, образует основной объект библиотеки. Тензор также поддерживает математические операции, такие как max
, min
, sum
статистические распределения, такие как равномерное , нормальное и полиномиальное , а также BLAS, операции такие как скалярное произведение , умножение матрицы на вектор , умножение матрицы на матрицу и матричное произведение .
Ниже приведен пример использования 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
The torch
Пакет также упрощает объектно-ориентированное программирование и сериализацию , предоставляя различные удобные функции, которые используются во всех его пакетах. torch.class(classname, parentclass)
Функция может использоваться для создания фабрик объектов ( классов ). Когда конструктор вызывается , torch инициализирует и устанавливает таблицу Lua с определяемой пользователем метатаблицей , что делает таблицу объектом .
Объекты, созданные с помощью фабрики torch, также могут быть сериализованы, если они не содержат ссылок на объекты, которые не могут быть сериализованы, такие как сопрограммы Lua и пользовательские данные Lua . Однако пользовательские данные можно сериализовать, если они обернуты таблицей (или метатаблицей), которая предоставляет read()
и write()
методы.
нн [ править ]
The nn
Пакет используется для построения нейронных сетей . Он разделен на модульные объекты, имеющие общую Module
интерфейс. Модули имеют forward()
и backward()
метод, который позволяет им осуществлять прямое и обратное распространение соответственно. Модули можно объединять с помощью составных модулей , например Sequential
, Parallel
и Concat
для создания сложных графиков, адаптированных к задачам. Более простые модули, такие как Linear
, Tanh
и Max
составляют основные компоненты модулей. первого порядка Этот модульный интерфейс обеспечивает автоматическое дифференцирование градиентов . Ниже приводится пример варианта использования многослойного перцептрона с использованием модулей:
> 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]
Функции потерь реализованы как подклассы Criterion
, который имеет аналогичный интерфейс Module
. Он также имеет forward()
и backward()
методы расчета градиентов потерь и обратного распространения ошибки соответственно. Критерии полезны для обучения нейронной сети классическим задачам. Общими критериями являются критерий среднеквадратической ошибки, реализованный в MSECriterion
и критерий перекрестной энтропии, реализованный в ClassNLLCriterion
. Ниже приведен пример функции Lua, которую можно итеративно вызывать для обучения.
а mlp
Модуль на входе Тензор x
, целевой Тензор y
со скаляром learningRate
:
function gradUpdate(mlp, x, y, learningRate)
local criterion = nn.ClassNLLCriterion()
local 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 используются многие пакеты, отличные от перечисленных выше официальных. Они перечислены в шпаргалке факела. [6] Эти дополнительные пакеты предоставляют широкий спектр утилит, таких как параллелизм, асинхронный ввод/вывод, обработка изображений и т. д. Их можно установить с помощью LuaRocks , менеджера пакетов Lua, который также включен в дистрибутив Torch.
Приложения [ править ]
Torch используется исследовательской группой Facebook AI . [7] ИБМ , [8] Yandex [9] и Исследовательский институт Идиап . [10] Torch был расширен для использования на Android. [11] [ нужен лучший источник ] и iOS . [12] [ нужен лучший источник ] Он использовался для создания аппаратных реализаций потоков данных, подобных тем, которые встречаются в нейронных сетях. [13]
Facebook выпустил набор модулей расширения в виде программного обеспечения с открытым исходным кодом. [14]
См. также [ править ]
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б «Torch: модульная библиотека программного обеспечения для машинного обучения». 30 октября 2002 г. CiteSeerX 10.1.1.8.9850 .
- ^ Коллобер, Ронан. «Факел7» . Гитхаб .
- ^ «Torch7: среда для машинного обучения, подобная Matlab» (PDF) . Нейронные системы обработки информации . 2011.
- ^ Репозиторий Torch на GitHub ReadMe.
- ^ Репозиторий PyTorch на GitHub.
- ^ «Шпаргалка · torch/torch7 Wiki» . Гитхаб .
- ^ Интервью KDnuggets с Яном Лекуном, экспертом по глубокому обучению, директором лаборатории искусственного интеллекта Facebook.
- ^ Хакерские новости
- ^ Страница Янна Лекуна в Facebook.
- ^ Исследовательский институт IDIAP: Факел
- ^ Репозиторий Torch-android на GitHub.
- ^ Репозиторий Torch-ios GitHub.
- ^ NeuFlow: реконфигурируемый процессор потока данных во время выполнения для Vision
- ^ «Facebook открывает исходный код — кладезь инструментов искусственного интеллекта» . Проводной . 16 января 2015 г.