---
title: "Theano — paper by Team et al. (2016) — summary and ideas"
description: "This paper describes Theano, a library developed since 2008 that addresses this problem. Cited by 163 papers here."
authors: ["The Theano Development Team", "Rami Al-Rfou", "Guillaume Alain", "Amjad Almahairi", "Christof Angermueller", "Dzmitry Bahdanau", "Nicolas Ballas", "Frédéric Bastien", "Justin Bayer", "Anatoly Belikov", "Alexander Belopolsky", "Yoshua Bengio", "Arnaud Bergeron", "James Bergstra", "Valentin Bisson", "Josh Bleecher Snyder", "Nicolas Bouchard", "Nicolas Boulanger-Lewandowski", "Xavier Bouthillier", "Alexandre de Brébisson", "Olivier Breuleux", "Pierre-Luc Carrier", "Kyunghyun Cho", "Jan Chorowski", "Paul Christiano", "Tim Cooijmans", "Marc-Alexandre Côté", "Myriam Côté", "Aaron Courville", "Yann N. Dauphin", "Olivier Delalleau", "Julien Demouth", "Guillaume Desjardins", "Sander Dieleman", "Laurent Dinh", "Mélanie Ducoffe", "Vincent Dumoulin", "Samira Ebrahimi Kahou", "Dumitru Erhan", "Ziye Fan", "Orhan Firat", "Mathieu Germain", "Xavier Glorot", "Ian Goodfellow", "Matt Graham", "Caglar Gulcehre", "Philippe Hamel", "Iban Harlouchet", "Jean-Philippe Heng", "Balázs Hidasi", "Sina Honari", "Arjun Jain", "Sébastien Jean", "Kai Jia", "Mikhail Korobov", "Vivek Kulkarni", "Alex Lamb", "Pascal Lamblin", "Eric Larsen", "César Laurent", "Sean Lee", "Simon Lefrancois", "Simon Lemieux", "Nicholas Léonard", "Zhouhan Lin", "Jesse A. Livezey", "Cory Lorenz", "Jeremiah Lowin", "Qianli Ma", "Pierre-Antoine Manzagol", "Olivier Mastropietro", "Robert T. McGibbon", "Roland Memisevic", "Bart van Merriënboer", "Vincent Michalski", "Mehdi Mirza", "Alberto Orlandi", "Christopher Pal", "Razvan Pascanu", "Mohammad Pezeshki", "Colin Raffel", "Daniel Renshaw", "Matthew Rocklin", "Adriana Romero", "Markus Roth", "Peter Sadowski", "John Salvatier", "François Savard", "Jan Schlüter", "John Schulman", "Gabriel Schwartz", "Iulian Vlad Serban", "Dmitriy Serdyuk", "Samira Shabanian", "Étienne Simon", "Sigurd Spieckermann", "S. Ramana Subramanyam", "Jakub Sygnowski", "Jérémie Tanguay", "Gijs van Tulder", "Joseph Turian", "Sebastian Urban", "Pascal Vincent", "Francesco Visin", "Harm de Vries", "David Warde-Farley", "Dustin J. Webb", "Matthew Willson", "Kelvin Xu", "Lijun Xue", "Li Yao", "Saizheng Zhang", "Ying Zhang"]
year: 2016
venue: "arXiv:1605.02688"
source: "https://arxiv.org/abs/1605.02688"
doi: "10.48550/arxiv.1605.02688"
arxiv: "1605.02688"
licence: "arXiv — non-exclusive licence to distribute"
licence_url: "http://arxiv.org/licenses/nonexclusive-distrib/1.0/"
summary_licence: "Elamur Cosmic License"
canonical: "https://research.elamur.ai/free/en/papers/the-theano-development-team-2016-theano-python-framework-fast-computation/"
---
[Elamur Research](https://md.research.elamur.ai/free/en/) · [this page in HTML](https://research.elamur.ai/free/en/papers/the-theano-development-team-2016-theano-python-framework-fast-computation/)

[home](https://md.research.elamur.ai/free/en/) / [papers](https://md.research.elamur.ai/free/en/papers/) / [2016](https://md.research.elamur.ai/free/en/papers/2016/page/3/) / Theano: A Python framework for fast computation of mathematical expressions

# Theano: A Python framework for fast computation of mathematical expressions

**Authors:** The Theano Development Team, [Rami Al-Rfou](https://md.research.elamur.ai/free/en/authors/rami-al-rfou/), Guillaume Alain, [Amjad Almahairi](https://md.research.elamur.ai/free/en/authors/amjad-almahairi/), Christof Angermueller, [Dzmitry Bahdanau](https://md.research.elamur.ai/free/en/authors/dzmitry-bahdanau/), [Nicolas Ballas](https://md.research.elamur.ai/free/en/authors/nicolas-ballas/), Frédéric Bastien, Justin Bayer, Anatoly Belikov, Alexander Belopolsky, [Yoshua Bengio](https://md.research.elamur.ai/free/en/authors/yoshua-bengio/), Arnaud Bergeron, James Bergstra, Valentin Bisson, Josh Bleecher Snyder, Nicolas Bouchard, Nicolas Boulanger-Lewandowski, Xavier Bouthillier, Alexandre de Brébisson, Olivier Breuleux, Pierre-Luc Carrier, [Kyunghyun Cho](https://md.research.elamur.ai/free/en/authors/kyunghyun-cho/), [Jan Chorowski](https://md.research.elamur.ai/free/en/authors/jan-chorowski/), [Paul Christiano](https://md.research.elamur.ai/free/en/authors/paul-christiano/), Tim Cooijmans, [Marc-Alexandre Côté](https://md.research.elamur.ai/free/en/authors/marc-alexandre-cote/), Myriam Côté, [Aaron Courville](https://md.research.elamur.ai/free/en/authors/aaron-courville/), [Yann N. Dauphin](https://md.research.elamur.ai/free/en/authors/yann-n-dauphin/), Olivier Delalleau, Julien Demouth, Guillaume Desjardins, Sander Dieleman, Laurent Dinh, Mélanie Ducoffe, Vincent Dumoulin, Samira Ebrahimi Kahou, [Dumitru Erhan](https://md.research.elamur.ai/free/en/authors/dumitru-erhan/), Ziye Fan, [Orhan Firat](https://md.research.elamur.ai/free/en/authors/orhan-firat/), Mathieu Germain, Xavier Glorot, [Ian Goodfellow](https://md.research.elamur.ai/free/en/authors/ian-goodfellow/), Matt Graham, [Caglar Gulcehre](https://md.research.elamur.ai/free/en/authors/caglar-gulcehre/), Philippe Hamel, Iban Harlouchet, Jean-Philippe Heng, Balázs Hidasi, Sina Honari, Arjun Jain, [Sébastien Jean](https://md.research.elamur.ai/free/en/authors/sebastien-jean/), Kai Jia, Mikhail Korobov, [Vivek Kulkarni](https://md.research.elamur.ai/free/en/authors/vivek-kulkarni/), Alex Lamb, Pascal Lamblin, Eric Larsen, César Laurent, Sean Lee, Simon Lefrancois, Simon Lemieux, Nicholas Léonard, Zhouhan Lin, Jesse A. Livezey, Cory Lorenz, Jeremiah Lowin, Qianli Ma, Pierre-Antoine Manzagol, Olivier Mastropietro, Robert T. McGibbon, [Roland Memisevic](https://md.research.elamur.ai/free/en/authors/roland-memisevic/), [Bart van Merriënboer](https://md.research.elamur.ai/free/en/authors/bart-van-merrienboer/), Vincent Michalski, Mehdi Mirza, Alberto Orlandi, Christopher Pal, Razvan Pascanu, Mohammad Pezeshki, [Colin Raffel](https://md.research.elamur.ai/free/en/authors/colin-raffel/), Daniel Renshaw, Matthew Rocklin, Adriana Romero, Markus Roth, Peter Sadowski, John Salvatier, François Savard, Jan Schlüter, [John Schulman](https://md.research.elamur.ai/free/en/authors/john-schulman/), Gabriel Schwartz, [Iulian Vlad Serban](https://md.research.elamur.ai/free/en/authors/iulian-vlad-serban/), Dmitriy Serdyuk, Samira Shabanian, Étienne Simon, Sigurd Spieckermann, S. Ramana Subramanyam, Jakub Sygnowski, Jérémie Tanguay, Gijs van Tulder, [Joseph Turian](https://md.research.elamur.ai/free/en/authors/joseph-turian/), Sebastian Urban, [Pascal Vincent](https://md.research.elamur.ai/free/en/authors/pascal-vincent/), Francesco Visin, [Harm de Vries](https://md.research.elamur.ai/free/en/authors/harm-de-vries/), David Warde-Farley, Dustin J. Webb, Matthew Willson, [Kelvin Xu](https://md.research.elamur.ai/free/en/authors/kelvin-xu/), Lijun Xue, Li Yao, [Saizheng Zhang](https://md.research.elamur.ai/free/en/authors/saizheng-zhang/) and [Ying Zhang](https://md.research.elamur.ai/free/en/authors/ying-zhang/) · **Year:** 2016 · **Venue:** arXiv:1605.02688 · **Licence:** [arXiv — non-exclusive licence to distribute](http://arxiv.org/licenses/nonexclusive-distrib/1.0/)

**Links:** [Publisher's page](https://arxiv.org/abs/1605.02688) · [PDF](https://arxiv.org/pdf/1605.02688) · [DOI 10.48550/arxiv.1605.02688](https://doi.org/10.48550/arxiv.1605.02688) · [arXiv 1605.02688](https://arxiv.org/abs/1605.02688)

**Citations:** [163](https://md.research.elamur.ai/free/en/papers/the-theano-development-team-2016-theano-python-framework-fast-computation/cited-by/) in our library, of the 141,840 papers whose bibliographies we read

## Summary
Python is convenient for prototyping numerical code, but its interpreter is slow and uses memory inefficiently for heavy array computation. This paper describes Theano, a library developed since 2008 that addresses this problem. Users write symbolic expressions over multi-dimensional arrays through an interface modelled on NumPy. Theano stores these expressions as a typed, bipartite, acyclic graph of Variable and Apply nodes. Before execution it rewrites the graph: it removes unused parts, reuses shared subexpressions, simplifies the mathematics, performs in-place operations, and applies rewrites that improve numerical stability. It then compiles fast code for CPU, or for GPU via CUDA, and a single configuration flag switches between them. It also derives gradients symbolically. Users can extend it with custom operations written in Python, C++ or CUDA. The article covers Theano's design, its community, recently added features and current limitations. It also benchmarks Theano against Torch7 and TensorFlow on several machine learning models. Theano matters because many higher-level deep learning and probabilistic programming tools were built on it.

## Key points
- Expressions are directed acyclic bipartite graphs, similar to SSA form, with strongly typed variables:
  - TensorType for arrays in main memory.
  - CudaNdarrayType for the legacy GPU back-end.
  - GpuArrayType for the new GPU back-end, which has limited, experimental OpenCL support.
  - Sparse for SciPy CSC/CSR matrices.
- A type records the number of dimensions, the dtype and a broadcastable pattern, but not the array shape or strides.
- Theano is open source under the 3-clause BSD license. The paper reports these community figures:
  - About 250 code contributors and 1280 GitHub forks since the 2011 move to GitHub.
  - 675 theano-dev subscribers and over 3000 theano-users members.
  - More than 1000 StackOverflow questions and about 38k PyPI downloads per month.
- Frameworks built on Theano include Pylearn2, Blocks, Lasagne, Keras and the probabilistic programming package PyMC3.
- Performance is compared with Torch7 and TensorFlow; the specific benchmark figures fall in a part of the text not provided here.

*Our summary of the paper, in our own words — not its text. The work belongs to its authors; read it at the links above.*

🧭 Topics (1): [🧮 Reasoning](https://md.research.elamur.ai/free/en/topics/reasoning/) · 510 works

## Cite

Cite as: The Theano Development Team, Rami Al-Rfou, Guillaume Alain, Amjad Almahairi, Christof Angermueller, Dzmitry Bahdanau, Nicolas Ballas, Frédéric Bastien, Justin Bayer, Anatoly Belikov, Alexander Belopolsky, Yoshua Bengio, Arnaud Bergeron, James Bergstra, Valentin Bisson, Josh Bleecher Snyder, Nicolas Bouchard, Nicolas Boulanger-Lewandowski, Xavier Bouthillier, Alexandre de Brébisson, Olivier Breuleux, Pierre-Luc Carrier, Kyunghyun Cho, Jan Chorowski, Paul Christiano, Tim Cooijmans, Marc-Alexandre Côté, Myriam Côté, Aaron Courville, Yann N. Dauphin, Olivier Delalleau, Julien Demouth, Guillaume Desjardins, Sander Dieleman, Laurent Dinh, Mélanie Ducoffe, Vincent Dumoulin, Samira Ebrahimi Kahou, Dumitru Erhan, Ziye Fan, Orhan Firat, Mathieu Germain, Xavier Glorot, Ian Goodfellow, Matt Graham, Caglar Gulcehre, Philippe Hamel, Iban Harlouchet, Jean-Philippe Heng, Balázs Hidasi, Sina Honari, Arjun Jain, Sébastien Jean, Kai Jia, Mikhail Korobov, Vivek Kulkarni, Alex Lamb, Pascal Lamblin, Eric Larsen, César Laurent, Sean Lee, Simon Lefrancois, Simon Lemieux, Nicholas Léonard, Zhouhan Lin, Jesse A. Livezey, Cory Lorenz, Jeremiah Lowin, Qianli Ma, Pierre-Antoine Manzagol, Olivier Mastropietro, Robert T. McGibbon, Roland Memisevic, Bart van Merriënboer, Vincent Michalski, Mehdi Mirza, Alberto Orlandi, Christopher Pal, Razvan Pascanu, Mohammad Pezeshki, Colin Raffel, Daniel Renshaw, Matthew Rocklin, Adriana Romero, Markus Roth, Peter Sadowski, John Salvatier, François Savard, Jan Schlüter, John Schulman, Gabriel Schwartz, Iulian Vlad Serban, Dmitriy Serdyuk, Samira Shabanian, Étienne Simon, Sigurd Spieckermann, S. Ramana Subramanyam, Jakub Sygnowski, Jérémie Tanguay, Gijs van Tulder, Joseph Turian, Sebastian Urban, Pascal Vincent, Francesco Visin, Harm de Vries, David Warde-Farley, Dustin J. Webb, Matthew Willson, Kelvin Xu, Lijun Xue, Li Yao, Saizheng Zhang and Ying Zhang. 2016. Theano: A Python framework for fast computation of mathematical expressions. arXiv:1605.02688.

The paper itself, not this page. BibTeX from the library's record of the work.

```bibtex
@misc{team2016theano,
  title = {{Theano: A Python framework for fast computation of mathematical expressions}},
  author = {The Theano Development Team, Rami Al-Rfou, Guillaume Alain, Amjad Almahairi, Christof Angermueller, Dzmitry Bahdanau, Nicolas Ballas, Frédéric Bastien, Justin Bayer, Anatoly Belikov, Alexander Belopolsky, Yoshua Bengio, Arnaud Bergeron, James Bergstra, Valentin Bisson, Josh Bleecher Snyder, Nicolas Bouchard, Nicolas Boulanger-Lewandowski, Xavier Bouthillier, Alexandre {de Brébisson}, Olivier Breuleux, Pierre-Luc Carrier, Kyunghyun Cho, Jan Chorowski, Paul Christiano, Tim Cooijmans, Marc-Alexandre Côté, Myriam Côté, Aaron Courville, Yann N. Dauphin, Olivier Delalleau, Julien Demouth, Guillaume Desjardins, Sander Dieleman, Laurent Dinh, Mélanie Ducoffe, Vincent Dumoulin, Samira Ebrahimi Kahou, Dumitru Erhan, Ziye Fan, Orhan Firat, Mathieu Germain, Xavier Glorot, Ian Goodfellow, Matt Graham, Caglar Gulcehre, Philippe Hamel, Iban Harlouchet, Jean-Philippe Heng, Balázs Hidasi, Sina Honari, Arjun Jain, Sébastien Jean, Kai Jia, Mikhail Korobov, Vivek Kulkarni, Alex Lamb, Pascal Lamblin, Eric Larsen, César Laurent, Sean Lee, Simon Lefrancois, Simon Lemieux, Nicholas Léonard, Zhouhan Lin, Jesse A. Livezey, Cory Lorenz, Jeremiah Lowin, Qianli Ma, Pierre-Antoine Manzagol, Olivier Mastropietro, Robert T. McGibbon, Roland Memisevic, Bart {van Merriënboer}, Vincent Michalski, Mehdi Mirza, Alberto Orlandi, Christopher Pal, Razvan Pascanu, Mohammad Pezeshki, Colin Raffel, Daniel Renshaw, Matthew Rocklin, Adriana Romero, Markus Roth, Peter Sadowski, John Salvatier, François Savard, Jan Schlüter, John Schulman, Gabriel Schwartz, Iulian Vlad Serban, Dmitriy Serdyuk, Samira Shabanian, Étienne Simon, Sigurd Spieckermann, S. Ramana Subramanyam, Jakub Sygnowski, Jérémie Tanguay, Gijs {van Tulder}, Joseph Turian, Sebastian Urban, Pascal Vincent, Francesco Visin, Harm {de Vries}, David Warde-Farley, Dustin J. Webb, Matthew Willson, Kelvin Xu, Lijun Xue, Li Yao, Saizheng Zhang and Ying Zhang},
  year = {2016},
  doi = {10.48550/arxiv.1605.02688},
  eprint = {1605.02688},
  archivePrefix = {arXiv},
  url = {https://doi.org/10.48550/arxiv.1605.02688}
}
```

- [← previous Semi-Supervised Learning for Neural Machine Translation](https://md.research.elamur.ai/free/en/papers/cheng-2016-semi-supervised-learning-neural-machine/)
- [next → Implicit Discourse Relation Classification via Multi-Task Neural Networks](https://md.research.elamur.ai/free/en/papers/liu-2016-implicit-discourse-relation-classification-multi/)
- [↑ back to papers of 2016](https://md.research.elamur.ai/free/en/papers/2016/page/3/)

*Updated 24 October 2026*
