Welcome
Theano is a Python library that allows you to define, optimize, andevaluate mathematical expressions involving multi-dimensionalarrays efficiently. Theano features:
- tight integration with NumPy – Use numpy.ndarray in Theano-compiled functions.
- transparent use of a GPU – Perform data-intensive computations much faster than on a CPU.
- efficient symbolic differentiation – Theano does your derivatives for functions with one or many inputs.
- speed and stability optimizations – Get the right answer for
log(1+x)
even whenx
is really tiny. - dynamic C code generation – Evaluate expressions faster.
- extensive unit-testing and self-verification – Detect and diagnose many types of errors.
Theano has been powering large-scale computationally intensivescientific investigations since 2007. But it is also approachableenough to be used in the classroom (University of Montreal’s deeplearning/machine learning classes).
News
- 2017/11/15: Release of Theano 1.0.0. Everybody is encouraged to update.
- 2017/10/30: Release of Theano 1.0.0rc1, new features and many bugfixes, final release to coming.
- 2017/10/16: Release of Theano 0.10.0beta4, new features and many bugfixes, release candidate to coming.
- 2017/09/28: IMPORTANT: MILA will stop developing Theano and the next release (renamed to 1.0) will be the last main release.
- 2017/09/20: Release of Theano 0.10.0beta3, new features and many bugfixes, release candidate to coming.
- 2017/09/07: Release of Theano 0.10.0beta2, new features and many bugfixes, release candidate to coming.
- 2017/08/09: Release of Theano 0.10.0beta1, many improvements and bugfixes, release candidate to coming.
- Removed support for the old (device=gpu) backend. Use the newbackend (device=cuda) for gpu computing. See Converting to the newgpu back end(gpuarray)for help with conversion.
- 2017/03/20: Release of Theano 0.9.0. Everybody is encouraged to update.
- 2017/03/13: Release of Theano 0.9.0rc4, with crash fixes and bug fixes.
- 2017/03/06: Release of Theano 0.9.0rc3, with crash fixes, bug fixes and improvements.
- 2017/02/27: Release of Theano 0.9.0rc2, with crash fixes, bug fixes and improvements.
- 2017/02/20: Release of Theano 0.9.0rc1, many improvements and bugfixes, final release to coming.
- 2017/01/24: Release of Theano 0.9.0beta1, many improvements and bugfixes, release candidate to coming.
- 2016/05/09: New technical report on Theano:Theano: A Python framework for fast computation of mathematical expressions.This is the new preferred reference.
- 2016/04/21: Release of Theano 0.8.2, adding support for CuDNN v5.
- 2016/03/29: Release of Theano 0.8.1, fixing a compilation issue on MacOS X with XCode 7.3.
- 2016/03/21: Release of Theano 0.8. Everybody is encouraged to update.
- Multi-GPU.
- We added support for CNMeM to speed up the GPU memory allocation.
- Theano 0.7 was released 26th March 2015. Everybody is encouraged to update.
- We support cuDNN if it is installed by the user.
- Open Machine Learning Workshop 2014
presentation
. - Colin Raffel tutorial on Theano.
- Ian Goodfellow did a 12h class with exercises on Theano.
- New technical report on Theano: Theano: new features and speed improvements.
- HPCS 2011 Tutorial.We included a few fixes discovered while doing the Tutorial. You can watch a quick (20 minute) introduction to Theano given as a talk at SciPy 2010 via streaming (or downloaded) video:
Transparent GPU Computing With Theano. James Bergstra, SciPy 2010, June 30, 2010.
Download
Theano is now available on PyPI, and can be installed via easy_install
Theano
, pip install Theano
or by downloading and unpacking the tarballand typing python setup.py install
.
Those interested in bleeding-edge features should obtain the latest developmentversion, available via:
- git clone git://github.com/Theano/Theano.git
You can then place the checkout directory on your $PYTHONPATH
or usepython setup.py develop
to install a .pth
into your site-packages
directory, so that when you pull updates via Git, they will beautomatically reflected the “installed” version. For more information aboutinstallation and configuration, see installing Theano.
Status
Citing Theano
If you use Theano for academic research, you are highly encouraged (though notrequired) to cite the following, most recent paper:
- Theano Development Team. “Theano: A Python framework for fast computation of mathematical expressions”.(
short BibTeX
,full BibTeX
)
Theano is primarily developed by academics, and so citations matter a lot tous. As an added benefit, you increase Theano’s exposure and potential user(and developer) base, which is to the benefit of all users of Theano. Thanksin advance!
See our Theano Citation Policy for details.
Documentation
Roughly in order of what you’ll want to check out:
- Installing Theano – How to install Theano.
- Theano at a Glance – What is Theano?
- Tutorial – Learn the basics.
- Troubleshooting – Tips and tricks for common debugging.
- API Documentation – Theano’s functionality, module by module.
- Frequently Asked Questions – A set of commonly asked questions.
- Optimizations – Guide to Theano’s graph optimizations.
- Extending Theano – Learn to add a Type, Op, or graph optimization.
- Developer Start Guide – How to contribute code to Theano.
- Internal Documentation – How to maintain Theano and more…
- Release – How our release should work.
- Acknowledgements – What we took from other projects.
- Related Projects – link to other projects that implement new functionalities on top of Theano
You can download the latest PDF documentation, rather than reading it online.
Check out how Theano can be used for Machine Learning: Deep Learning Tutorials.
Theano was featured at SciPy 2010.
Community
“Thank YOU for correcting it so quickly. I wish all packages I worked with would have such an active maintenance - this is as good as it gets :-)”
(theano-users, Aug 2, 2010)
- Register to theano-announce if you want to be kept informed on important change on theano(low volume).
- Register and post to theano-users if you want to talk to all Theano users.
- Register and post to theano-dev if you want to talk to the developers.
- Register to theano-github if you want to receive an email for all changes to the GitHub repository.
- Register to theano-buildbot if you want to receive our daily buildbot email.
- Ask/view questions/answers at StackOverflow
- We use Github tickets to keep track of issues(however, some old tickets can still be found onAssembla).
- Come visit us in Montreal! Most developers are students in the LISA group at the University of Montreal.
Help!
How to Seek Help
The appropriate venue for seeking help depends on the kind of question you have.
- How do I? – theano-users mailing list or StackOverflow
- I got this error, why? – theano-users mailing list or StackOverflow (please include the full error message, even if it’s long)
- I got this error and I’m sure it’s a bug – Github ticket
- I have an idea/request – post the suggestion to theano-dev or, even better, implement the idea and submit a GitHub pull request!
- Why do you? – theano-users mailing list (not appropriate for StackOverflow)
- When will you? – theano-dev mailing list (not appropriate for StackOverflow)
Please do take some time to search for similar questions that were asked and answered in the past. If you find somethingsimilar that doesn’t fully answer your question, it can be helpful to say something like “I found X but it doesn’taddress facet Y” and link to the previous discussion.
When asking questions on StackOverflow, please use the theano tag, so your question can be found, and followStackOverflow’s guidance on asking questions. Consider also using thepython and numpy tags, especially if you are unsure which library your problem relates to.
It’s often helpful to include the following details with your question:
- If you have an error, the full error message, even if it’s long
- Which versions of Python and Theano you’re using
- Whether you’re using a CPU or GPU device
- Details of your Theano configuration settings (you can print this in Python via print theano.config)
Spending the time to create a minimal specific example of a problem is likely to get you to an answer quicker thanposting something quickly that has too much irrelevant detail or is too vague. A minimal example may take you a bit moretime to create but the first response is more likely to be the answer you need than, rather than a frustrated requestfor clarification.
How to provide help
If you see a question on the theano-users mailing list, or on StackOverflow, that youfeel reasonably confident you know an answer to, please do support the community by helping others.
We were all newbies to Theano once and, as the community expands, there is a constant stream of new Theano users lookingfor help. Perhaps you asked a question when you were first starting out? Now you can pay it forward by helping others.It’s also a good way to reinforce your own Theano knowledge.
Often it’s easiest to answer a question directly but sometimes it may be better to refer people to a good answer thatwas provided in the past. Pointing people to relevant sections in the documentation, or to a Theano tutorial, can alsobe helpful.
When answering questions please be nice (as always!) and, onStackOverflow, follow their guidance for answering questions.