Факел (машинное обучение) - Torch (machine learning)

Факел
Логотип факела
Оригинальный автор (ы)Ронан Коллобер, Сами Бенджио, Джонни Мариетос[1]
изначальный выпускОктябрь 2002 г.; 18 лет назад (2002-10)[1]
Стабильный выпуск
7.0 / 27 февраля 2017 г.; 3 года назад (2017-02-27)[2]
Репозиторий Отредактируйте это в Викиданных
Написано вLua, LuaJIT, C, CUDA и C ++
Операционная системаLinux, Android, Mac OS X, iOS
ТипБиблиотека для машинное обучение и глубокое обучение
ЛицензияЛицензия BSD
Интернет сайтфакел.ch

Факел является Открытый исходный код машинное обучение библиотека, научные вычисления рамки и язык сценария на основе Lua язык программирования.[3] Он предоставляет широкий спектр алгоритмов для глубокое обучение, и использует язык сценариев LuaJIT, и лежащая в основе C выполнение. По состоянию на 2018 год Torch больше не находится в активной разработке.[4] тем не мение PyTorch, который основан на библиотеке Torch, активно развивается с декабря 2020 года.[5]

факел

Основной пакет Torch факел. Он предоставляет гибкий N-мерный массив или тензор, который поддерживает базовые процедуры для индексации, нарезки, транспонирования, преобразования типов, изменения размера, совместного использования хранилища и клонирования. Этот объект используется большинством других пакетов и, таким образом, образует основной объект библиотеки. Tensor также поддерживает математические операции, такие как Максимум, мин, сумма, статистические распределения, такие как униформа, нормальный и полиномиальный, и BLAS такие операции, как скалярное произведение, умножение матрицы на вектор, матричное умножение, матрично-векторное произведение и матричный продукт.

Ниже приводится пример использования горелки через ее REPL устный переводчик:

> а = факел.Randn(3,4)> =а-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 из измерение 3x4]> а[1][2]-0.34010116549482	> а:узкий(1,1,2)-0.2381 -0.3401 -1.7844 -0.2615 0.1411  1.6249  0.1708  0.8299[факел.DoubleTensor из измерение 2x4]> а:индекс(1, факел.LongTensor{1,2})-0.2381 -0.3401 -1.7844 -0.2615 0.1411  1.6249  0.1708  0.8299[факел.DoubleTensor из измерение 2x4]> а:мин()-1.7844365427828

В факел пакет также упрощает объектно-ориентированного программирования и сериализация предоставляя различные удобные функции, которые используются во всех его пакетах. В torch.class (имя класса, родительский класс) функцию можно использовать для создания объектные фабрики (классы ). Когда конструктор вызывается, torch инициализирует и устанавливает Lua стол с определяемым пользователем метатабильный, что делает таблицу объект.

Объекты, созданные с помощью фабрики torch, также могут быть сериализованы, если они не содержат ссылок на объекты, которые не могут быть сериализованы, например Lua. сопрограммы, и Lua данные пользователя. Тем не мение, данные пользователя может быть сериализован, если он заключен в таблицу (или метатаблицу), которая предоставляет читать() и записывать() методы.

nn

В nn пакет используется для сборки нейронные сети. Он разделен на модульные объекты, которые имеют общие Модуль интерфейс. Модули имеют вперед() и назад () метод, который позволяет им прямая связь и обратное распространение, соответственно. Модули можно соединить вместе с помощью модуля композиты, подобно Последовательный, Параллельный и Concat для создания сложных графиков для конкретных задач. Более простые модули, такие как Линейный, Тань и Максимум составляют основные составляющие модули. Этот модульный интерфейс обеспечивает первоклассный автоматическое дифференцирование градиента. Ниже приводится пример использования для создания многослойный персептрон с использованием модулей:

> mlp = nn.Последовательный()> mlp:Добавить( nn.Линейный(10, 25) ) - 10 входов, 25 скрытых блоков> mlp:Добавить( nn.Тань() ) - некоторая передаточная функция гиперболического тангенса> mlp:Добавить( nn.Линейный(25, 1) ) - 1 выход> =mlp:вперед(факел.Randn(10))-0.1815[факел.Тензор из измерение 1]

Функции потерь реализуются как подклассы Критерий, интерфейс которого похож на Модуль. Он также имеет вперед() и назад () методы вычисления градиентов потерь и обратного распространения соответственно. Критерии помогают обучить нейронную сеть выполнять классические задачи. Общими критериями являются Среднеквадратичная ошибка критерий реализован в MSECriterion и кросс-энтропия критерий реализован в ClassNLLCriterion. Далее следует пример функции Lua, которую можно итеративно вызывать для обучения mlp Модуль на входе Tensor Икс, целевой Тензор y со скаляром LearningRate:

функция GradUpdate(mlp, Икс, y, LearningRate)  местный критерий = nn.ClassNLLCriterion()  пред = mlp:вперед(Икс)  местный ошибаться = критерий:вперед(пред, y);   mlp:zeroGradParameters();  местный т = критерий:назад(пред, y);  mlp:назад(Икс, т);  mlp:updateParameters(LearningRate);конец

Он также имеет Стохастический Градиент класс для обучения нейронной сети с использованием Стохастический градиентный спуск, Хотя оптим Пакет предоставляет гораздо больше возможностей в этом отношении, например, уменьшение количества движения и веса. регуляризация.

Другие пакеты

Вместе с Torch используется множество других пакетов, кроме указанных выше. Они перечислены в шпаргалке по факелам.[6] Эти дополнительные пакеты предоставляют широкий спектр утилит, таких как параллелизм, асинхронный ввод / вывод, обработка изображений и т. Д. Их можно установить с LuaRocks, менеджер пакетов Lua, который также включен в дистрибутив Torch.

Приложения

Факел используется Facebook AI Исследовательская группа,[7] IBM,[8] Яндекс[9] и Исследовательский институт Idiap.[10] Факел расширен для использования на Android[11] и iOS.[12] Он использовался для создания аппаратных реализаций потоков данных, подобных тем, которые используются в нейронных сетях.[13]

Facebook выпустил набор модулей расширения в виде программного обеспечения с открытым исходным кодом.[14]

Смотрите также

Рекомендации

  1. ^ а б «Факел: модульная библиотека программного обеспечения для машинного обучения». 30 октября 2002 г. CiteSeerX  10.1.1.8.9850. Цитировать журнал требует | журнал = (помощь)
  2. ^ Коллобер, Ронан. «Факел7». GitHub.
  3. ^ "Torch7: среда для машинного обучения, подобная Matlab" (PDF). Системы обработки нейронной информации. 2011.
  4. ^ ReadMe репозитория Torch GitHub
  5. ^ Репозиторий PyTorch GitHub
  6. ^ "Шпаргалка · torch / torch7 Wiki".
  7. ^ KDnuggets Интервью с Яном ЛеКуном, экспертом по глубокому обучению, директором Facebook AI Lab
  8. ^ Хакерские новости
  9. ^ Страница Яна Лекуна на Facebook
  10. ^ Исследовательский институт IDIAP: Факел
  11. ^ Репозиторий Torch-android на GitHub
  12. ^ Репозиторий Torch-ios на GitHub
  13. ^ NeuFlow: процессор с реконфигурируемым потоком данных во время выполнения для Vision
  14. ^ «Открытые исходники Facebook - кладезь инструментов ИИ». Проводной. 16 января 2015.

внешняя ссылка