If you have updated to 0.5rc1, you are highly encouraged to update to 0.5rc2. There are more bug fixes and speed uptimization! But there is also a small new interface change about sum of [u]int* dtype.
Upgrading to Theano 0.5rc2 is recommended for everyone, but you should first make sure that your code does not raise deprecation warnings with Theano 0.4.1. Otherwise, in one case the results can change. In other cases, the warnings are turned into errors (see below for details).
The string modes FAST_RUN_NOGC and STABILIZE are not accepted. They were accepted only by theano.function(). Use Mode(linker=’c|py_nogc’) or Mode(optimizer=’stabilize’) instead.
tensor.grad(cost, wrt) now always returns an object of the “same type” as wrt (list/tuple/TensorVariable). (Ian Goodfellow, Olivier)
A few tag.shape and Join.vec_length left have been removed. (Frederic)
The .value attribute of shared variables is removed, use shared.set_value() or shared.get_value() instead. (Frederic)
Theano config option “home” is not used anymore as it was redundant with “base_compiledir”. If you use it, Theano will now raise an error. (Olivier D.)
The use of return_steps for specifying how many entries of the output to return has been removed. Instead, apply a subtensor to the output returned by scan to select a certain slice.
The inner function (that scan receives) should return its outputs and updates following this order:
[outputs], [updates], [condition].
One can skip any of the three if not used, but the order has to stay unchanged.
computing grad of a function of grad of scan(reported by ?, Razvan) before : most of the time crash, but could be wrong value with bad number of dimensions(so a visible bug) now : do the right thing.
gradient with respect to outputs using multiple taps(reported by Timothy, fix by Razvan) before : it used to return wrong values now : do the right thing. Note: The reported case of this bug was happening in conjunction with the
save optimization of scan that give run time errors. So if you didn’t manually disable the same memory optimization(number in the list4), you are fine if you didn’t manually request multiple taps.
Rop of gradient of scan (reported by Timothy and Justin Bayer, fix by Razvan) before : compilation error when computing R-op now : do the right thing.
save memory optimization of scan (reported by Timothy and Nicolas BL, fix by Razvan) before : for certain corner cases used to result in a runtime shape error now : do the right thing.
Scan grad when the input of scan has sequences of different lengths. (Razvan, reported by Michael Forbes)
Scan.infer_shape now works correctly when working with a condition for the number of loops. In the past, it returned n_steps as the length, which is not always true. (Razvan)
Scan.infer_shape crash fix. (Reported by ?, Razvan)
AdvancedIncSubtensor grad defined and tested (Justin Bayer)
Adding 1D advanced indexing support to inc_subtensor and set_subtensor (James Bergstra)
tensor.{zeros,ones}_like now support the dtype param as numpy (Frederic)
Added configuration flag “exception_verbosity” to control the verbosity of exceptions (Ian)
theano-cache list: list the content of the theano cache (Frederic)
theano-cache unlock: remove the Theano lock (Olivier)
tensor.ceil_int_div to compute ceil(a / float(b)) (Frederic)
tensor.{all,any} (Razvan)
tensor.roll as numpy: (Matthew Rocklin, David Warde-Farley)
Theano with GPU works in some cases on Windows now. Still experimental. (Sebastian Urban)
Argmax output dtype is now int64 instead of int32. (Olivier)
Added the element-wise operation arccos. (Ian)
GpuAdvancedSubtensor1 supports broadcasted dimensions. (Frederic)
TensorVariable.zeros_like() and SparseVariable.zeros_like()
theano.sandbox.cuda.cuda_ndarray.cuda_ndarray.device_properties() (Frederic)
theano.sandbox.cuda.cuda_ndarray.cuda_ndarray.mem_info() return free and total gpu memory (Frederic)
IntDiv c code (faster and allow this elemwise to be fused with other elemwise) (Pascal)
a_CudaNdarray_object[*] = int, now work (Frederic)
tensor_variable.size (as numpy) computes the product of the shape elements. (Olivier)
sparse_variable.size (as scipy) computes the number of stored values. (Olivier)
sparse_variable[N, N] now works (Li Yao, Frederic)
tensor.tensordot can now be moved to GPU (Sander Dieleman, Pascal, based on code from Tijmen Tieleman’s gnumpy, http://www.cs.toronto.edu/~tijmen/gnumpy.html)
On CPU, if the convolution had received explicit shape information, they where not checked at runtime. This caused wrong result if the input shape was not the one expected. (Frederic, reported by Sander Dieleman)
Theoretical bug: in some case we could have GPUSum return bad value. We were not able to reproduce this problem
- patterns affected ({0,1}*nb dim, 0 no reduction on this dim, 1 reduction on this dim): 01, 011, 0111, 010, 10, 001, 0011, 0101 (Frederic)
div by zero in verify_grad. This hid a bug in the grad of Images2Neibs. (James)
theano.sandbox.neighbors.Images2Neibs grad was returning a wrong value. The grad is now disabled and returns an error. (Frederic)
An expression of the form “1 / (exp(x) +- constant)” was systematically matched to “1 / (exp(x) + 1)” and turned into a sigmoid regardless of the value of the constant. A warning will be issued if your code was affected by this bug. (Olivier, reported by Sander Dieleman)
When indexing into a subtensor of negative stride (for instance, x[a:b:-1][c]), an optimization replacing it with a direct indexing (x[d]) used an incorrect formula, leading to incorrect results. (Pascal, reported by Razvan)
The tile() function is now stricter in what it accepts to allow for better error-checking/avoiding nonsensical situations. The gradient has been disabled for the time being as it only implemented (incorrectly) one special case. The reps argument must be a constant (not a tensor variable), and must have the same length as the number of dimensions in the x argument; this is now checked. (David)
Better error messages in many places. (Many people)
PEP8 fixes. (Many people)
Add a warning about numpy bug with subtensor with more then 2**32 elemenent(TODO, more explicit)
Added Scalar.ndim=0 and ScalarSharedVariable.ndim=0 (simplify code)(Razvan)
New min_informative_str() function to print graph. (Ian)
Fix catching of exception. (Sometimes we used to catch interrupts) (Frederic, David, Ian, Olivier)
Better support for uft string. (David)
Warning when people have old cache entries. (Olivier)
More tests for join on the GPU and CPU. (Frederic)
Don’t request to load the GPU module by default in scan module. (Razvan)
Fixed some import problems. (Frederic and others)
Filtering update. (James)
On Windows, the default compiledir changed to be local to the computer/user and not transferred with roaming profile. (Sebastian Urban)
New theano flag “on_shape_error”. Defaults to “warn” (same as previous behavior): it prints a warning when an error occurs when inferring the shape of some apply node. The other accepted value is “raise” to raise an error when this happens. (Frederic)
The buidbot now raises optimization/shape errors instead of just printing a warning. (Frederic)
better pycuda tests (Frederic)
check_blas.py now accept the shape and the number of iteration as parameter (Frederic)
Fix opt warning when the opt ShapeOpt is disabled(enabled by default) (Frederic)
More internal verification on what each op.infer_shape return. (Frederic, James)
Argmax dtype to int64 (Olivier)
Improved docstring and basic tests for the Tile Op (David).