On Mon, Nov 07, 2016, Lukasz Obara wrote:
> Is there a way to pass different sizes matrices as a sequence in
> theano.scan()?
Unfortunately, no, it is not possible.
A common workaround is to pad the matrices and pass the actual size as another
sequence.
> For instance
>
> X3 = T.tensor3(name='X3', dtype=theano.config.floatX)
>
> theta = theano.shared(name='theta_temp',
> value=np.array([0.1, 0.2, 0.3],
> dtype=theano.config.floatX))
>
> x_temp = np.array([[[1, 2, 3],
> [4, 5, 6],
> [7, 8, 9]],
> [[2, 3, 6],
> [4, 7, 0],
> [0, 0, 1]]])
>
> y_temp = np.array([[[1, 2, 3],
> [4, 5, 6],
> [7, 8, 9]],
> [[2, 3, 6],
> [4, 7, 0]]])
>
> def foo(inputs):
> hyp = T.dot(inputs, theta.T)
>
> return hyp
>
> results, _ = theano.scan(fn=cost2,
> sequences=[X3])
>
> f = theano.function(inputs=[X3], outputs=results,
> allow_input_downcast=True)
>
> print(f(x_temp)) # This works
> print('----------')
> print(f(y_temp)) # This does not work
>
> I noticed that `x_temp` works every entry is of the same size, whereas
> `y_temp` will yield an error, namely
>
> ValueError: ('Bad input argument to theano function with name
> "C:\\...\\Linear_Regression_theano_test.py:144" at index 0(0-based)',
> 'setting an array element with a sequence.')
>
> now the only difference between `x_temp` and `y_temp` is that the last
> matrix in `y_temp` is of size `2x3` instead of `3x3` and this seems to be
> causing a problem.
>
>
> --
>
> ---
> 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.
--
Pascal
--
---
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.