Here are my code and error message. I have two functions since I want to
call the NewOp in the middle, not directly providing input.

import theano
import theano.tensor as T
import numpy as np

class NewOp(theano.Op):
    __props__ = ()

    itypes = [theano.tensor.dmatrix]
    otypes = [theano.tensor.dmatrix]

    def perform(self, node, inputs, output_storage):
        x = inputs[0]
        z = output_storage[0]
        z[0] = x * 2

def test():
    newop = NewOp()
    # x is a middle output which is generated from input
    x = theano.tensor.matrix()
    f = theano.function([x], NewOp()(x))
    # y and z are direct input data
    y = theano.tensor.matrix()
    z = theano.tensor.matrix()
    # Since x is generated using some complicated tensor operations, just
use a simple example here.
    x = y + z
    e = f(x)
    y_input = np.random.rand(5, 4)
    z_input = np.random.rand(5, 4)
    anotherf = theano.function([y, z], e)
    output = anotherf(y_input, z_input)
    # I want to use the output for other things as well, so, I want to use
e before generating the real ouput.
    print output
    print type(output)
if __name__ == '__main__':
    test()



'Expected an array-like object, but found a Variable: '
TypeError: ('Bad input argument to theano function with name
"testop.py:20"  at index 0(0-based)', 'Expected an array-like object, but
found a Variable: maybe you are trying to call a function on a (possibly
shared) variable instead of a numeric array?')

Any thoughts?

Thanks,
Ven

On Tue, Apr 11, 2017 at 9:56 AM, Frédéric Bastien <
[email protected]> wrote:

> Without an error message, it is hard to help.
>
> I would suggest you to use as_op in Theano for this if you have difficulty
> with the Op interface. Both are equivalent, so you can continue with the Op
> interface:
>
> http://deeplearning.net/software/theano/extending/
> extending_theano.html#as-op
>
> On Mon, Apr 10, 2017 at 11:17 AM Vena Li <[email protected]> wrote:
>
>> Hi,
>>
>> I want to call a Java function in my program. I am able to call it in
>> python. It takes a numpy array as input and return a numpy array as output.
>> However, I am having some difficulties to make it work in theano using
>> tensor. I want to pass a tensor as a input, and after calling the function,
>> I want another tensor returned. I will use the returned tensor for other
>> operations. I was wondering is there an easy of doing so? I tried to use
>> the "Creating a new Op:", but still not able to use the returned value.
>>
>> Thanks,
>> Vena
>>
>> --
>>
>> ---
>> 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.
>>
> --
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "theano-users" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/theano-users/wcx9UI7F0Ao/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
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.

Reply via email to