Theano is a Python library, developed at MILA (the Montreal Institute for Learning Algorithms) at the University of Montreal beginning in 2007, that lets users define, optimize, and evaluate mathematical expressions involving multidimensional arrays. It was one of the first tools to bring together the ingredients that later defined deep-learning frameworks: a symbolic expression graph, automatic differentiation over that graph, and compilation of the graph down to fast CPU and GPU code.
Its programming model was symbolic and define-then-run. A user wrote Python that built up an expression graph from symbolic variables rather than computing on concrete numbers, then compiled that graph into a callable function. During compilation Theano applied graph optimizations - simplifying expressions, improving numerical stability, and fusing operations - before generating and compiling C or CUDA code. The payoff was that ordinary-looking Python math could execute at the speed of compiled, GPU-accelerated kernels.
Automatic differentiation was the feature that made Theano a deep-learning workhorse. Because it held the whole computation as a symbolic graph, it could derive the gradient of an expression with respect to its inputs automatically, which is exactly what training a neural network by gradient descent requires. Researchers could specify a model and a loss and let Theano produce the gradients, instead of deriving and coding them by hand.
Theano’s influence is hard to overstate. The static computational graph, symbolic differentiation, and GPU compilation that it pioneered became the template that later frameworks built on, and several of the most popular early high-level tools, including Keras, ran on Theano as a backend before other engines existed. The 2016 paper “Theano: A Python framework for fast computation of mathematical expressions,” credited to the Theano Development Team with more than a hundred contributors, documents the mature system and benchmarks it against the newer frameworks it had helped inspire.
In 2017 MILA announced the end of major development on Theano, judging that the field it had helped start was now well served by industry-backed frameworks like TensorFlow and PyTorch. The repository remains as a record of that lineage, and its core has since been carried forward by the community through a fork (PyTensor) maintained by the PyMC project, but Theano’s main historical role is as the ancestor whose design choices shaped the frameworks that followed.