Torch — библиотека для языка программирования Lua с открытым исходным кодом, предоставляет большое количество алгоритмов для глубинного обучения и научных расчётов. Ядро написано на Си, прикладная часть выполняется на LuaJIT, поддерживается распараллеливание вычислений средствами CUDA и OpenMP. Стиль работы с массивами схож с Matlab и Octave, в связи с чем иногда определяется как «Matlab-подобное окружение для машинного обучения».

Torch используется Исследовательской группой искусственного интеллекта Facebook, IBM, ЯндексомYann Lecun's Facebook Page и Исследовательским институтом Idiap. Torch был расширен для использования на Android и iOS. Он использовался для создания аппаратных реализаций потоков данных, подобных тем, которые используются в нейронных сетях.

Пакеты Пакет torch реализует основную структуру данных библиотеки — -мерный тензор, а также базовые методы для работы с ним — стандартные математические и статистические операции, базовые подпрограммы линейной алгебры, реализованные на Си.

Пакет image предназначен для работы с изображениями, и реализует стандартные операции для них: загрузку, сохранение, поворот, масштабирование, матричные фильтры и другие.

Компактный пакет optim содержит реализации основных оптимизационных алгоритмов, таких как реализация метода стохастического градиентного спуска.

Пакет nn предназначен для работы с нейронными сетями, в нём реализован набор подключаемых модулей, определяющих конкретную форму графа сети. Модули Sequential, Parallel и Concat позволяют создавать сложные параллельные и последовательные структуры (контейнеры). Существуют модули, определяющие функции активации, например: Tanh и Sigmoid. Простые модули, например Linear, Reshape и Max являются базовыми компонентами графа и позволяют реализовать те или иные преобразования. Модули для свёрточных сетей — Temporal, Spatial и Volumetric и другие. Методы forward() и backward() реализуют методы прямого и обратного распространения ошибки.

Пакет nngraph предоставляет инструменты для создания более сложных архитектур нейронных сетей.

Кроме того, Torch имеет большое количество других встроенных модулей для поддержки сторонних библиотек, специальный пакет для более эффективной поддержки объекно-ориентированного программирования, модуль для предварительной проверки аргументов, а также собственные реализации хеширования, рациональных чисел, потоков.

С Torch используются также много пакеты, отличных от указанных выше. Они предоставляют широкий спектр возможностей, таких как: параллелизм, асинхронный ввод/вывод и так далее. Их можно установить с помощью LuaRocks — менеджера пакетов Lua, — который также включён в дистрибутив Torch.

См. также Сравнение программ глубинного обучения

Примечания

Ссылки Статья с описанием языка от его создателей Учебник Документация на официальном сайте

Категория:Машинное обучение Категория:Научное программное обеспечение Категория:Программное обеспечение с лицензией BSD Категория:Свободные библиотеки программ Категория:Программное обеспечение, программируемое с помощью Lua Категория:Применение искусственного интеллекта Категория:Нейронные сети Категория:Анализ данных Категория:Глубокое обучение