Факел (машинное обучение)
![]() | |
Оригинальный автор(ы) | Ронан Коллоберт, Сами Бенджио , Джонни Мариетос [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 :
> а = факел . 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
[ факел . DoubleTensor размером - 3 x4 ]
> a [ 1 [ 2 ]
- 0,34010116549482
> a : узкий ( 1 , 1 , 2 )
- 0,2381 - 0,3401 - 1,7844 ] 0,2615
0,1411 1,6249 0,1708 0,8299
[ факел . DoubleTensor размером - 2 x4 ]
> 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 размером 2x4 1,7844365427828 ]
> a : min )
- (
The torch
Пакет также упрощает объектно-ориентированное программирование и сериализацию, предоставляя различные удобные функции, которые используются во всех его пакетах. torch.class(classname, parentclass)
Функция может использоваться для создания фабрик объектов ( классов ). Когда конструктор вызывается , torch инициализирует и устанавливает таблицу Lua с определяемой пользователем метатаблицей , что делает таблицу объектом .
Объекты, созданные с помощью фабрики torch, также могут быть сериализованы, если они не содержат ссылок на объекты, которые не могут быть сериализованы, такие как сопрограммы Lua и пользовательские данные Lua . Однако пользовательские данные можно сериализовать, если они обернуты таблицей (или метатаблицей), которая предоставляет read()
и write()
методы.
нн [ править ]
The nn
Пакет используется для построения нейронных сетей . Он разделен на модульные объекты, имеющие общую Module
интерфейс. Модули имеют forward()
и backward()
метод, который позволяет им осуществлять прямое и обратное распространение соответственно. Модули можно объединять с помощью составных модулей , например Sequential
, Parallel
и Concat
для создания сложных графиков, адаптированных к задачам. Более простые модули, такие как Linear
, Tanh
и Max
составляют основные компоненты модулей. первого порядка Этот модульный интерфейс обеспечивает автоматическое дифференцирование градиентов . Ниже приводится пример варианта использования многослойного перцептрона с использованием модулей:
> млп = nn . Sequential ()
> mlp : add ( nn . Linear ( 10 , 25 )) — 10 входных, 25 скрытых единиц
> mlp : add ( nn . Tanh ()) — некоторая передаточная функция гиперболического тангенса
> mlp : add ( nn . Линейный ( 25 , 1 )) — 1 выход
> = mlp : вперед ( torch . randn ( 10 ))
— 0,1815
[ torch . Тензор размерности 1 ]
Функции потерь реализованы как подклассы Criterion
, который имеет аналогичный интерфейс Module
. Он также имеет forward()
и backward()
методы расчета градиентов потерь и обратного распространения ошибки соответственно. Критерии полезны для обучения нейронной сети классическим задачам. Общими критериями являются критерий среднеквадратической ошибки, реализованный в MSECriterion
и критерий перекрестной энтропии , реализованный в ClassNLLCriterion
. Ниже приведен пример функции Lua, которую можно итеративно вызывать для обучения.
а mlp
Модуль на входе Тензор x
, целевой Тензор y
со скаляром learningRate
:
функция gradUpdate ( mlp , x , y , LearningRate )
локальный критерий = nn . ClassNLLCriterion ()
local pred = mlp : вперед ( x )
local err = критерий : вперед ( pred , y );
млп : нулевыеGradParameters ();
локальный t = критерий : назад ( pred , y );
mlp : назад ( x , t );
mlp : updateParameters ( learningRate );
конец
Он также имеет StochasticGradient
класс для обучения нейронной сети с использованием стохастического градиентного спуска , хотя optim
Пакет предоставляет гораздо больше возможностей в этом отношении, например, регуляризацию затухания импульса и веса .
Другие пакеты [ править ]
С Torch используются многие пакеты, отличные от перечисленных выше официальных. Они перечислены в шпаргалке факела. [6] Эти дополнительные пакеты предоставляют широкий спектр утилит, таких как параллелизм, асинхронный ввод/вывод, обработка изображений и т. д. Их можно установить с помощью LuaRocks , менеджера пакетов Lua, который также включен в дистрибутив Torch.
Приложения [ править ]
Torch используется исследовательской группой Facebook AI . [7] ИБМ , [8] Yandex [9] и Исследовательский институт Идиап . [10] Torch был расширен для использования на Android. [11] [ нужен лучший источник ] и iOS . [12] [ нужен лучший источник ] Он использовался для создания аппаратных реализаций потоков данных, подобных тем, которые встречаются в нейронных сетях. [13]
Facebook выпустил набор модулей расширения в виде программного обеспечения с открытым исходным кодом. [14]
См. также [ править ]
Ссылки [ править ]
- ^ Перейти обратно: а б «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 г.