Факел (машинное обучение) - 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.
