Theano

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: github.com/Theano/Theano

Theano — библиотека для численного вычисления, разработанная для эффективного выполнения математических выражений, в частности тех, которые встречаются в машинном обучении и глубоком обучении. Она предоставляет возможность описывать вычисления в виде графа операций над многомерными массивами и затем компилировать этот граф в оптимизированный код для центрального процессора (CPU) и графического процессора (GPU). За счёт статического представления вычислений Theano выполняет символические преобразования, оптимизации и автоматическое дифференцирование, что облегчает разработку и обучение моделей, требующих расчёта градиентов.

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

  • Символьные вычисления: представление выражений в виде символического графа для последующей компиляции и оптимизации.
  • Автоматическое дифференцирование: вычисление градиентов по отношению к входным переменным с поддержкой сложных композиций функций.
  • Оптимизация графа: применение преобразований для оптимизации порядка выполнения, устранения избыточных вычислений и повышения производительности.
  • Поддержка CPU и GPU: генерация кода, использующего многопоточность на CPU и ускорение вычислений на GPU посредством специализированных ядер.
  • Работа с тензорами: эффективная обработка многомерных массивов и линейной алгебры, включая свёртки, матричные умножения и своп-операции.
  • Интеграция с Python: управление вычислениями через Python API, что обеспечивает удобство разработки и отладки.
  • Кэширование и повторное использование: механизмы кэширования скомпилированных функций для уменьшения накладных расходов при повторных запусках.
  • Расширяемость: возможность добавления пользовательских оперций и оптимизаций для специфичных задач.
  • Диагностика и логирование: инструменты для отслеживания структуры графа, профилирования времени выполнения и выявления узких мест.
  • Использование в исследованиях: применялся как основа для экспериментов в областях обучения с учителем, без учителя и обучения с подкреплением.
Подробнее