
Welcome
=======

Theano is a Python library that allows you to define, optimize, and
evaluate mathematical expressions involving multi-dimensional
arrays efficiently. Theano features:

* **tight integration with NumPy** -- Use `numpy.ndarray` in Theano-compiled functions.
* **transparent use of a GPU** -- Perform data-intensive calculations up to 140x faster than with CPU.(float32 only)
* **efficient symbolic differentiation** -- Theano does your derivatives for function with one or many inputs.
* **speed and stability optimizations** -- Get the right answer for ``log(1+x)`` even when ``x`` is really tiny.
* **dynamic C code generation** -- Evaluate expressions faster.
* **extensive unit-testing and self-verification** -- Detect and diagnose many types of mistake.

Theano has been powering large-scale computationally intensive
scientific investigations since 2007.  But it is also approachable
enough to be used in the classroom (IFT6266 at the University of
Montreal).

News
====

* Colin Raffel `tutorial on Theano <http://nbviewer.ipython.org/github/craffel/theano-tutorial/blob/master/Theano%20Tutorial.ipynb>`_.

* Ian Goodfellow did a `12h class with exercises on Theano <https://github.com/goodfeli/theano_exercises>`_.

* Theano 0.6 was released. Everybody is encouraged to update.

* New technical report on Theano: `Theano: new features and speed improvements <http://arxiv.org/abs/1211.5590>`_.
  However, please keep citing the other paper below in scientific work involving Theano.

* `HPCS 2011 Tutorial <http://www.iro.umontreal.ca/~lisa/pointeurs/tutorial_hpcs2011_fixed.pdf>`_.
  We included a few fixes discovered while doing the Tutorial.

.. image:: images/talk2010.png
    :scale: 75%
    :align: left

You can watch a quick (20 minute) introduction to Theano given as a talk at `SciPy 2010 <http://conference.scipy.org/scipy2010/>`_ via streaming (or downloaded) video:

  `Transparent GPU Computing With Theano`_.
  James Bergstra, SciPy 2010, June 30, 2010.

.. _Transparent GPU Computing With Theano: http://www.archive.org/details/Scipy2010-JamesBergstra-TransparentGpuComputingWithTheano

Download
========

Theano is now `available on PyPI`_, and can be installed via ``easy_install
Theano``, ``pip install Theano`` or by downloading and unpacking the tarball
and typing ``python setup.py install``.

Those interested in bleeding-edge features should obtain the latest development
version, available via::

    git clone git://github.com/Theano/Theano.git

You can then place the checkout directory on your ``$PYTHONPATH`` or use
``python setup.py develop`` to install a ``.pth`` into your ``site-packages``
directory, so that when you pull updates via Git, they will be
automatically reflected the "installed" version. For more information about
installation and configuration, see :ref:`installing Theano <install>`.

.. only:: html

  Status
  ======

  .. image:: https://secure.travis-ci.org/Theano/Theano.png?branch=master
      :target: http://travis-ci.org/Theano/Theano/builds

  .. image:: https://pypip.in/v/Theano/badge.png
      :target: https://crate.io/packages/Theano/
      :alt: Latest PyPI version

  .. image:: https://pypip.in/d/Theano/badge.png
      :target: https://crate.io/packages/Theano/
      :alt: Number of PyPI downloads

  .. _available on PyPI: http://pypi.python.org/pypi/Theano
  .. _Related Projects: https://github.com/Theano/Theano/wiki/Related-projects

Citing Theano
==============

If you use Theano for academic research, you are highly encouraged (though not
required) to cite the following paper:

* J. Bergstra, O. Breuleux, F. Bastien, P. Lamblin, R.
  Pascanu, G. Desjardins, J. Turian, D. Warde-Farley and Y.
  Bengio. `"Theano: A CPU and GPU Math Expression Compiler"
  <http://www.iro.umontreal.ca/~lisa/pointeurs/theano_scipy2010.pdf>`_.
  *Proceedings of the Python for Scientific Computing Conference (SciPy)
  2010. June 30 - July 3, Austin, TX* (`BibTeX
  <http://www.iro.umontreal.ca/~lisa/publications2/index.php/export/publication/461/bibtex>`_)

Theano is primarily developed by academics, and so citations matter a lot to
us. 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. Thanks
in advance!

Documentation
=============

Roughly in order of what you'll want to check out:

* :ref:`install` -- How to install Theano.
* :ref:`introduction` -- What is Theano?
* :ref:`tutorial` -- Learn the basics.
* :ref:`libdoc` -- Theano's functionality, module by module.
* :ref:`optimizations` -- Guide to Theano's graph optimizations.
* :ref:`extending` -- Learn to add a Type, Op, or graph optimization.
* :ref:`dev_start_guide` -- How to contribute code to Theano.
* :ref:`developer` -- Primarily of interest to developers of Theano
* :ref:`internal` -- How to maintain Theano, LISA-specific tips, and more...
* :ref:`release` -- How our release should work.
* :ref:`acknowledgement` -- 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 <http://deeplearning.net/software/theano/theano.pdf>`_, rather than reading it online.

Check out how Theano can be used for Machine Learning: `Deep Learning Tutorials <http://www.deeplearning.net/tutorial>`_.

Theano was featured at `SciPy 2010 <http://www.iro.umontreal.ca/~lisa/publications2/index.php/publications/show/461>`__.


.. _theano_community:

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 `metaoptimize/qa/tags/theano`_ (it's like stack overflow for machine learning)

* We use `Github tickets <http://github.com/Theano/Theano/issues>`__ to keep track of issues
  (however, some old tickets can still be found on
  `Assembla <http://www.assembla.com/spaces/theano/tickets>`__).

* Come visit us in Montreal! Most developers are students in the LISA_ group at the `University of Montreal`_.

.. toctree::
   :maxdepth: 1
   :hidden:

   NEWS
   introduction
   install
   tutorial/index
   library/index
   optimizations
   extending/index
   dev_start_guide
   glossary
   links
   internal/index
   examples/index
   proposals/index
   acknowledgement
   LICENSE


.. _theano-dev: http://groups.google.com/group/theano-dev
.. _theano-users: http://groups.google.com/group/theano-users
.. _theano-announce: http://groups.google.com/group/theano-announce
.. _theano-github: http://groups.google.com/group/theano-github
.. _theano-buildbot: http://groups.google.com/group/theano-buildbot
.. _tickets: http://pylearn.org/theano/trac/query?status=accepted&status=assigned&status=new&status=reopened&group=milestone&max=200&col=id&col=summary&col=status&col=owner&col=type&col=priority&col=component&col=time&report=9&order=priority

.. _metaoptimize/qa/tags/theano: http://metaoptimize.com/qa/tags/theano/

.. _LISA: http://www.iro.umontreal.ca/~lisa
.. _University of Montreal: http://www.umontreal.ca

