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
Our random number generator implementation on CPU and GPU uses the MRG31k3p algorithm that is described in:
- 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
CNMeMwas included in Theano in the previous GPU back-end. It is still in the history, but not in the current version. It has the same license.