class_docstr: Wrap the target function and operate as ``FunctionNode``
  
  Arguments:
      name (str): name of the function node
      func (func): the target function
      args (list): args for the function
      kwargs (dict): kwargs for the function
      arg_vars (list): list of `chainer.Variable`s in `args` and `kwargs`
      attributes (list): parameters to be set node's attributes
class_docstr_tok: ["Wrap","the","target","function","and","operate","as","``","FunctionNode","``","Arguments",":","name","(","str",")",":","name","of","the","function","node","func","(","func",")",":","the","target","function","args","(","list",")",":","args","for","the","function","kwargs","(","dict",")",":","kwargs","for","the","function","arg_vars","(","list",")",":","list","of","`","chainer.Variable","`","s","in","`","args","`","and","`","kwargs","`","attributes","(","list",")",":","parameters","to","be","set","node","'s","attributes"]
code: def backward(self, target_input_indexes, grad_outputs):
      if self.internal_results is None:
          raise ValueError(
              "the target function does not support backward, propagation "
              "is failed"
          )
      grad_inputs = chainer.grad(
          self.internal_results,
          self.arg_vars,
          grad_outputs=grad_outputs,
      )
      assert len(self.arg_vars) == len(grad_inputs)
      return tuple(
          grad_input if i in target_input_indexes else None
          for i, grad_input in enumerate(grad_inputs)
      )
  
file_path: chainer/onnx_chainer/replace_func.py
imports: import inspect
  import chainer
label_desc: Use image node_id 3 for calling the WrappedFunctionNode obj's underlying member method code with example usage: obj.backward(target_input_indexes, grad_outputs) and returns: tuple