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