class_docstr: Theano function wrapper.
  
  .. warning::
  
      This feature is experimental. The interface can change in the future.
  
  This function wraps Theano function as a :class:`chainer.Link`.
  A user needs to make input Theano variables and output Theano variables.
  This function automatically creates Theano function for forward calculation
  and backward calculation from inputs and ouptuts. And then, it sends data
  in :class:`chainer.Variable` to the function and gets results from Theano.
  
  .. rubric:: Example
  
  .. doctest::
     # See chainer/chainer#5997
     :skipif: doctest_helper.skipif_requires_satisfied(                'Theano<=1.0.3', 'numpy>=1.16.0')
  
     >>> import theano
     >>> x = theano.tensor.fvector()
     >>> y = theano.tensor.fvector()
     >>> z = x + y
     >>> w = x - y
     >>> f = L.TheanoFunction(inputs=[x, y], outputs=[z, w])
     >>> a = chainer.Variable(np.array([1, 2], dtype=np.float32))
     >>> b = chainer.Variable(np.array([2, 3], dtype=np.float32))
     >>> c, d = f(a, b)
     >>> c.array
     array([3., 5.], dtype=float32)
     >>> d.array
     array([-1., -1.], dtype=float32)
  
  .. note::
  
     The current implementation always copies :class:`cupy.ndarray` to CPU.
  
  Args:
      inputs (tuple of ``theano.tensor.TensorVariable``): Input variables of
          Theano. This function accepts the same number of
          :class:`~chainer.Variable`\ s in forward computation.
      outputs (tuple of ``theano.tensor.TensorVariable``):
          Output variables of Theano.
          The function returns the same number of
          :class:`~chainer.Variable`\ s as ``outputs``.
code: def forward(self, *args):
      return theano_function.theano_function(
          self.forward_func, self.backward_func, *args
      )
  
file_path: chainer/chainer/links/theano/theano_function.py
imports: import collections
  from chainer.functions.theano import theano_function
  from chainer import link
  from chainer.utils import collections_abc
label_desc: Use image node_id 2 for calling the TheanoFunction obj's underlying member method code with example usage: obj.forward() and returns: theano_function