* Removed (already deprecated) incsubtensor and setsubtensor functions,
* CudaNdarray_new_null is deprecated in favour of CudaNdarray_New
inc_subtensor and set_subtensor are to be used instead.
Bugs fixed:
Sandbox:
* In CudaNdarray.__{iadd,idiv}__, when it is not implemented, return the error.
* THEANO_FLAGS='optimizer=None' now works as expected
* Fixed memory leak in error handling on GPU-to-host copy
* Fix relating specifically to Python 2.7 on Mac OS X
* infer_shape can now handle Python longs
* Trying to compute x % y with one or more arguments being complex now
raises an error.
* The output of random samples computed with uniform(..., dtype=...) is
guaranteed to be of the specified dtype instead of potentially being of a
higher-precision dtype.
* The perform() method of DownsampleFactorMax did not give the right result
when reusing output storage. This happen only if you use the Theano flags
'linker=c|py_nogc' or manually specify the mode to be 'c|py_nogc'.
Crash fixed:
* MRG random generator now implements the same casting behavior as the regular random generator.
* Work around a bug in gcc 4.3.0 that make the compilation of 2d convolution
crash.
* Some optimizations crashed when the "ShapeOpt" optimization was disabled.
Optimization:
Sandbox New features(not enabled by default):
* Optimize all subtensor followed by subtensor.
GPU:
* New Linkers (theano flags linker={vm,cvm})
* Move to the gpu fused elemwise that have other dtype then float32 in them
(except float64) if the input and output are float32.
* The new linker allows lazy evaluation of the new ifelse op, meaning we compute only the true or false branch depending of the condition. This can speed up some types of computation.
* Uses a new profiling system (that currently tracks less stuff)
* The cvm is implemented in C, so it lowers Theano's overhead.
* The vm is implemented in python. So it can help debugging in some cases.
* In the future, the default will be the cvm.
* Some new not yet well tested sparse ops: theano.sparse.sandbox.{SpSum, Diag, SquareDiagonal, ColScaleCSC, RowScaleCSC, Remove0, EnsureSortedIndices, ConvolutionIndices}
* This allow to move elemwise comparisons to the GPU if we cast it to
Documentation:
float32 after that.
* Implemented CudaNdarray.ndim to have the same interface in ndarray.
* How to compute the `Jacobian, Hessian, Jacobian times a vector, Hessian times a vector <http://deeplearning.net/software/theano/tutorial/gradients.html>`_.
* Fixed slowdown caused by multiple chained views on CudaNdarray objects
* Slide for a 3 hours class with exercises that was done at the HPCS2011 Conference in Montreal.
* CudaNdarray_alloc_contiguous changed so as to never try to free
memory on a view: new "base" property
* Safer decref behaviour in CudaNdarray in case of failed allocations
* New GPU implementation of tensor.basic.outer
* Multinomial random variates now available on GPU
New features:
Others:
* ProfileMode
* profile the scan overhead
* Logger name renamed to be consistent.
* simple hook system to add profiler
* Logger function simplified and made more consistent.
* reordered the output to be in the order of more general to more specific
* Fixed transformation of error by other not related error with the compute_test_value Theano flag.
* DebugMode now checks Ops with different patterns of preallocated memory,
* Compilation cache enhancements.
configured by config.DebugMode.check_preallocated_output.
* Made compatible with NumPy 1.6 and SciPy 0.9
* var[vector of index] now work, (grad work recursively, the direct grad
* Fix tests when there was new dtype in NumPy that is not supported by Theano.
work inplace, gpu work)
* Fixed some tests when SciPy is not available.
* Don't compile anything when Theano is imported. Compile support code when we compile the first C code.
* limitation: work only of the outer most dimensions.
* Python 2.4 fix:
* New way to test the graph as we build it. Allow to easily find the source
* Fix the file theano/misc/check_blas.py
of shape mismatch error:
* For python 2.4.4 on Windows, replaced float("inf") with numpy.inf.