In perform method, you should call directly to numpy instead of using
symbolic expression.
Or if you intent to build a Op using existing ones, you should use
theano.OpFromGraph
On Friday, March 3, 2017 at 1:25:31 AM UTC+8, Peter St. John wrote:
>
> I'm having an issue making a basic op that uses theano.tensor.switch.
>
> When I construct a basic function, I get the expected behavior:
>
> >>> x = theano.tensor.fscalar('x')
> >>> f = theano.function([x], theano.tensor.switch(0., x, 1.))
> >>> f(0.)
>
> array(1.0, dtype=float32)
>
>
> But, when I try to do this with a gof.Op, it seems to return the switch
> operation rather than the value itself:
>
>
> >>> class TestOp(Op):>>> >>> def make_node(self, x):>>> x =
> >>> as_tensor_variable(x)>>> w = theano.tensor.fscalar()>>>
> >>> return Apply(self, [x], [w])>>> >>> def perform(self, node,
> >>> inputs, outputs):>>> (x,) = inputs>>> (w,) = outputs>>>
> >>> >>> w[0] = theano.tensor.switch(0., x, 1.)>>> >>> testop
> >>> = TestOp()
>
> >>>
>
> >>> f = theano.function([x], testop(x))>>> f(2.)
>
>
> Elemwise{switch,no_inplace}.0
>
>
>
> Any ideas how I could get this latter function to return 1?
>
>
>
> Thanks!
>
> -- Peter
>
>
--
---
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.