Torch — библиотека для языка программирования Lua с открытым исходным кодом, предоставляет большое количество алгоритмов для глубинного обучения и научных расчётов. Ядро написано на Си, прикладная часть выполняется на LuaJIT, поддерживается распараллеливание вычислений средствами CUDA и OpenMP. Стиль работы с массивами схож с Matlab и Octave, в связи с чем иногда определяется как «Matlab-подобное окружение для машинного обучения»[1].
Torch | |
---|---|
Тип | Библиотека для машинного обучения |
Авторы | Ронан Коллобер, Корай Кавукчуоглу, Клеман Фарабе |
Написана на | Lua, LuaJIT, C, CUDA и C++ |
Операционные системы | Linux, Android, Mac OS X, iOS |
Последняя версия | 7.0 (1 сентября 2015) |
Репозиторий | github.com/torch/torch7 |
Лицензия | BSD |
Сайт | torch.ch |
Torch используется Исследовательской группой искусственного интеллекта Facebook[2], IBM[3], Яндексом[4] и Исследовательским институтом Idiap[5]. Torch был расширен для использования на Android[6] и iOS[7]. Он использовался для создания аппаратных реализаций потоков данных, подобных тем, которые используются в нейронных сетях[8].
Пакеты
правитьПакет torch реализует основную структуру данных библиотеки — n-мерный тензор, а также базовые методы для работы с ним — стандартные математические и статистические операции, базовые подпрограммы линейной алгебры, реализованные на Си.
Пакет image предназначен для работы с изображениями, и реализует стандартные операции для них: загрузку, сохранение, поворот, масштабирование, матричные фильтры и другие.
Компактный пакет optim содержит реализации основных оптимизационных алгоритмов, таких как реализация метода стохастического градиентного спуска и подобных.
Пакет nn предназначен для работы с нейронными сетями, в нём реализован как набор подключаемых подмодулей, определяющих конкретную форму графа сети. Контейнерные модули Sequential
, Parallel
и Concat
позволяют создавать сложные параллельные и последовательные структуры. Существуют модули, определяющие функции активации, таковы Tanh
и Sigmoid
. Простые модули, например Linear
, Reshape
и Max
являются базовыми компонентами графа и позволяют реализовать те или иные преобразования. Модули для свёрточных сетей — Temporal
, Spatial
и Volumetric
и другие. Методы forward()
и backward()
реализуют методы прямого и обратного распространения ошибки.
Пакет nngraph предоставляет инструменты для создания более сложных архитектур нейронных сетей.
Кроме того, Torch имеет большое количество других встроенных модулей для поддержки сторонних библиотек, специальный пакет для более эффективной поддержки объекно-ориентированного программирования, модуль для предварительной проверки аргументов, а также собственные реализации хеширования, рациональных чисел, потоков.
С Torch используются многие пакеты, отличные от указанных выше официальных пакетов. Они перечислены в шпаргалке по факелу. Эти дополнительные пакеты предоставляют широкий спектр утилит, таких как параллелизм, асинхронный ввод/вывод, обработка изображений и так далее. Их можно установить с помощью LuaRocks, менеджера пакетов Lua, который также включен в дистрибутив Torch.[9]
См. также
правитьПримечания
править- ↑ Torch7: A Matlab-like Environment for Machine Learning // Neural Information Processing Systems. — 2011. Архивировано 6 марта 2016 года.
- ↑ KDnuggets Interview with Yann LeCun, Deep Learning Expert, Director of Facebook AI Lab . Дата обращения: 12 августа 2016. Архивировано 30 марта 2017 года.
- ↑ Hacker News . Дата обращения: 12 августа 2016. Архивировано 1 декабря 2017 года.
- ↑ Yann Lecun's Facebook Page
- ↑ IDIAP Research Institute : Torch . Дата обращения: 19 августа 2022. Архивировано 13 сентября 2016 года.
- ↑ Torch-android GitHub repository . Дата обращения: 19 августа 2022. Архивировано 22 апреля 2017 года.
- ↑ Torch-ios GitHub repository . Дата обращения: 19 августа 2022. Архивировано 20 августа 2017 года.
- ↑ NeuFlow: A Runtime Reconfigurable Dataflow Processor for Vision . Дата обращения: 19 августа 2022. Архивировано из оригинала 5 мая 2017 года.
- ↑ Cheatsheet · torch/torch7 Wiki (англ.). GitHub. Дата обращения: 19 августа 2022. Архивировано 19 августа 2022 года.
Ссылки
править- Статья с описанием языка от его создателей Архивная копия от 6 марта 2016 на Wayback Machine
- Учебник Архивная копия от 2 августа 2016 на Wayback Machine
- Документация на официальном сайте Архивная копия от 10 августа 2016 на Wayback Machine