On Mon, Sep 24, 2012 at 2:25 PM, Frédéric Bastien <nouiz@nouiz.org> wrote:
Hi,
I tested this new beta on Theano and discovered an interface change that was not there in the beta 1.
New behavior: numpy.ndindex().next() (0,)
Old behavior: numpy.ndindex().next() ()
This break some Theano code that look like this:
import numpy shape=() out_shape=[12] random_state=numpy.random.RandomState()
out = numpy.zeros(out_shape, int) for i in numpy.ndindex(*shape): out[i] = random_state.permutation(5)
I suppose this is an regression as the only mention of ndindex in the first email of this change is that it is faster.
I think this problem has been brought up on the list. It is interesting that it turned up after the first beta. Could you do a bisection to discover which commit is responsible?
There is a second "regression" in ndindex This was working in the past, but it raise an ValueError now:
numpy.ndindex((2,1,1,1))
But If I call numpy.ndindex(2,1,1,1)
The documentation[1] do not talk about receiving a tuple as input. I already make a commit to change Theano code to make it work. But this could break other people code. It is up to you to decide if you want this, but a warning in the release note would be great to help people know that the old not documented behavior changed.
Do you know if the first change is expected? This will probably cause bad results in some people code if you intended this change.
Chuck