class_docstr: A function that executes the static schedule of a Chain.
  
  An instance of this class executes the static schedule of computations
  that are equivalent to executing the define-by-run code of a Chain.
  
  This class is used by the `static_graph` decorator to wrap the
  define-by-run
  computations of a chain into two static schedules:
  - The forward schedule corresponds to the computations that are executed by
  the define-by-run code of the `__call__()` method of a chain. The static
  schedule corresponding to these computations can be executed by calling the
  `forward()` method of this class.
  - The backward schedule corresponds to the computations that are executed
  by the sequence of calls to `Function.backward()` that occur during when
  backpropagating the gradients through the same chain. That is, for each
  `Function.forward()` that was called during the forward propagation,
  there will be a corresponding call to `Function.backward()` (of the
  same Function object) in the backward schedule. This backward schedule
  can be executed by calling the `backward()` method of this class.
  
  Note the intended usage of this class:
  
  Recall that a "static chain" referes to a chain that is decorated by the
  `static_graph` decorator.
  During the first forward pass of a static chain, the define-by-run code
  is executed. However,
  for subsequent iterations, that define-by-run code is replaced by an
  instance
  of this function and this function will be called instead. Since the
  static
  schedules contained by this function perform the same computations, it is
  safe (and potentially much more efficient) to simply execute the static
  schedule instead
  of the define-by-run code. See `static_graph` for details.
  
  Args:
      schedule_manager (ScheduleManager): The schedule manager of this
          schedule instance.
      in_vars (tuple of Variable): The flattened tuple of input variables
          that is supplied to
          `__call__()` method of the chain that this schedule corresponds to.
      unique_arrays (list of ndarray): A list of all unique array references
          deeply used in an StaticScheduleFunction instance. It is 'None'
          for the StaticScheduleFunction that corresponds to the "forward"
          schedule, but the contained StaticScheduleFunction for the
          "backward" schedule should take the unique_arrays of the
          "forward" schedule.
class_docstr_tok: ["A","function","that","executes","the","static","schedule","of","a","Chain",".","An","instance","of","this","class","executes","the","static","schedule","of","computations","that","are","equivalent","to","executing","the","define-by-run","code","of","a","Chain",".","This","class","is","used","by","the","`","static_graph","`","decorator","to","wrap","the","define-by-run","computations","of","a","chain","into","two","static","schedules",":","-","The","forward","schedule","corresponds","to","the","computations","that","are","executed","by","the","define-by-run","code","of","the","`","__call__","(",")","`","method","of","a","chain",".","The","static","schedule","corresponding","to","these","computations","can","be","executed","by","calling","the","`","forward","(",")","`","method","of","this","class",".","-","The","backward","schedule","corresponds","to","the","computations","that","are","executed","by","the","sequence","of","calls","to","`","Function.backward","(",")","`","that","occur","during","when","backpropagating","the","gradients","through","the","same","chain",".","That","is",",","for","each","`","Function.forward","(",")","`","that","was","called","during","the","forward","propagation",",","there","will","be","a","corresponding","call","to","`","Function.backward","(",")","`","(","of","the","same","Function","object",")","in","the","backward","schedule",".","This","backward","schedule","can","be","executed","by","calling","the","`","backward","(",")","`","method","of","this","class",".","Note","the","intended","usage","of","this","class",":","Recall","that","a","``","static","chain","''","referes","to","a","chain","that","is","decorated","by","the","`","static_graph","`","decorator",".","During","the","first","forward","pass","of","a","static","chain",",","the","define-by-run","code","is","executed",".","However",",","for","subsequent","iterations",",","that","define-by-run","code","is","replaced","by","an","instance","of","this","function","and","this","function","will","be","called","instead",".","Since","the","static","schedules","contained","by","this","function","perform","the","same","computations",",","it","is","safe","(","and","potentially","much","more","efficient",")","to","simply","execute","the","static","schedule","instead","of","the","define-by-run","code",".","See","`","static_graph","`","for","details",".","Args",":","schedule_manager","(","ScheduleManager",")",":","The","schedule","manager","of","this","schedule","instance",".","in_vars","(","tuple","of","Variable",")",":","The","flattened","tuple","of","input","variables","that","is","supplied","to","`","__call__","(",")","`","method","of","the","chain","that","this","schedule","corresponds","to",".","unique_arrays","(","list","of","ndarray",")",":","A","list","of","all","unique","array","references","deeply","used","in","an","StaticScheduleFunction","instance",".","It","is","'None'","for","the","StaticScheduleFunction","that","corresponds","to","the","``","forward","''","schedule",",","but","the","contained","StaticScheduleFunction","for","the","``","backward","''","schedule","should","take","the","unique_arrays","of","the","``","forward","''","schedule","."]
code: def forward(self, inputs):
      if self.verbosity_level >= 2:
          print("Calling StaticScheduleFunction.forward()...")
  
      # Note: This method will be invoked every iteration starting
      # from the second
      # iteration. That is because the corresponding define-by-run
      # code runs instead
      # during the first iteration.
      if not self.schedule_built:
          raise RuntimeError(
              "forward() was called before " "build_schedule()!"
          )
      self.run_param_pre_hooks()
      self.run_in_var_hooks(inputs)
  
      if self.verbosity_level >= 2:
          print("Running static schedule...")
      # Run each function in the static schedule.
      for x in self.schedule_info_list:
          x()
      if self.verbosity_level >= 2:
          self.debug_print_unique_arrays_info()
  
      self.run_out_var_hooks()
      self.run_param_post_hooks()
      ret = []
      for y in self.out_vars:
          if y is None or y.data is None:
              ret.append(None)
          else:
              # todo: add test case for an example where the following
              # copy is required (evaluation mode, repeated calls of
              # chain that reuse same schedule).
              ret.append(y.data.copy())
      return tuple(ret)
  
imports: import sys
  import weakref
  import numpy
  import chainer
  from chainer.backends import cuda
  import chainer.function_node
label_desc: Use image node_id 15 for calling the StaticScheduleFunction obj's underlying member method code with example usage: obj.forward(inputs) and returns: tuple