.. _acknowledgement: Acknowledgements ================ .. note: This page is in construction. We are missing sources. * The developers of `NumPy `_. Theano is based on its ndarray object and uses much of its implementation. * The developers of `SciPy `_. Our sparse matrix support uses their sparse matrix objects. We also reuse other parts. * All `Theano contributors `_. * All Theano users that have given us feedback. * The GPU implementation of tensordot is based on code from Tijmen Tieleman's `gnumpy `_ * The original version of the function ``cpuCount()`` in the file `theano/misc/cpucount.py` come from the project `pyprocessing `_. It is available under the same license as Theano. * Our random number generator implementation on CPU and GPU uses the MRG31k3p algorithm that is described in: P. L'Ecuyer and R. Touzin, `Fast Combined Multiple Recursive Generators with Multipliers of the form a = +/- 2^d +/- 2^e `_, Proceedings of the 2000 Winter Simulation Conference, Dec. 2000, 683--689. We were authorized by Pierre L'Ecuyer to copy/modify his Java implementation in the `SSJ `_ software and to relicense it under BSD 3-Clauses in Theano. * A better GPU memory allocator :attr:`CNMeM ` is included in Theano. It has the same license.