Факел (машинное обучение) - Torch (machine learning)
Оригинальный автор (ы) | Ронан Коллобер, Сами Бенджио, Джонни Мариетос[1] |
---|---|
изначальный выпуск | Октябрь 2002 г.[1] |
Стабильный выпуск | 7.0 / 27 февраля 2017 г.[2] |
Репозиторий | |
Написано в | Lua, LuaJIT, C, CUDA и C ++ |
Операционная система | Linux, Android, Mac OS X, iOS |
Тип | Библиотека для машинное обучение и глубокое обучение |
Лицензия | Лицензия BSD |
Интернет сайт | факел |
Факел является Открытый исходный код машинное обучение библиотека, научные вычисления рамки и язык сценария на основе 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]
Смотрите также
Рекомендации
- ^ а б «Факел: модульная библиотека программного обеспечения для машинного обучения». 30 октября 2002 г. CiteSeerX 10.1.1.8.9850. Цитировать журнал требует
| журнал =
(помощь) - ^ Коллобер, Ронан. «Факел7». GitHub.
- ^ "Torch7: среда для машинного обучения, подобная Matlab" (PDF). Системы обработки нейронной информации. 2011.
- ^ ReadMe репозитория Torch GitHub
- ^ Репозиторий PyTorch GitHub
- ^ "Шпаргалка · torch / torch7 Wiki".
- ^ KDnuggets Интервью с Яном ЛеКуном, экспертом по глубокому обучению, директором Facebook AI Lab
- ^ Хакерские новости
- ^ Страница Яна Лекуна на Facebook
- ^ Исследовательский институт IDIAP: Факел
- ^ Репозиторий Torch-android на GitHub
- ^ Репозиторий Torch-ios на GitHub
- ^ NeuFlow: процессор с реконфигурируемым потоком данных во время выполнения для Vision
- ^ «Открытые исходники Facebook - кладезь инструментов ИИ». Проводной. 16 января 2015.