Additionally, see https://github.com/Theano/Theano/issues/4761
On Tuesday, July 19, 2016 at 9:35:08 AM UTC-4, David Mascharka wrote:
>
> I'm trying to get the indices of the max values used in a pool_2d
> operation. I can do this nicely with numpy arrays:
>
> my_in = np.zeros((1,1,4,4)).astype(np.float32)
> print my_in
> print
> inp = T.tensor4()
> out = T.grad(T.sum(pool_2d(inp, ds=(2,2), ignore_border=True)), wrt=inp).
> eval({inp: my_in})
> nonzeros = out.nonzero()
> print out
> for i in range(len(nonzeros)): print nonzeros[i]
>
> # prints
> # [[[[ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]]]]
>
> # [[[[ 1. 0. 1. 0.]
> # [ 0. 0. 0. 0.]
> # [ 1. 0. 1. 0.]
> # [ 0. 0. 0. 0.]]]]
> # [0 0 0 0]
> # [0 0 0 0]
> # [0 0 2 2]
> # [0 2 0 2]
>
> If I try doing this same thing with T.zeros(), I get a bad result:
>
> a = T.zeros((1,1,4,4), 'float32')
> print a.eval()
> print
>
> b = T.grad(T.sum(pool_2d(a, ds=(2,2), ignore_border=True)), wrt=a)
> print b.eval()
> non = b.nonzero()
> for i in range(len(non)): print non[i].eval()
>
> # prints
> # [[[[ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]
> # [ 0. 0. 0. 0.]]]]
>
> # [[[[ 1. 1. 1. 1.]
> # [ 1. 1. 1. 1.]
> # [ 1. 1. 1. 1.]
> # [ 1. 1. 1. 1.]]]]
> # [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
> # [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
> # [0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3]
> # [0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3]
>
> Why are these different? What can I change to make the T.zeros() version
> match the numpy version?
>
--
---
You received this message because you are subscribed to the Google Groups
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.