class_docstr: Multi-step update modifier, which applies the given optimizer for a number of times
  (specification key: `multi_step`).
  
  Args:
      optimizer (specification): Optimizer configuration
          (<span style="color:#C00000"><b>required</b></span>).
      num_steps (parameter, int >= 1): Number of optimization steps
          (<span style="color:#C00000"><b>required</b></span>).
      name (string): (<span style="color:#0000C0"><b>internal use</b></span>).
      arguments_spec (specification): <span style="color:#0000C0"><b>internal use</b></span>.
code: def step(self, *, arguments, variables, **kwargs):
      deltas = [tf.zeros_like(input=variable) for variable in variables]
  
      def body(*deltas):
          with tf.control_dependencies(control_inputs=deltas):
              step_deltas = self.optimizer.step(
                  arguments=arguments, variables=variables, **kwargs
              )
              deltas = [
                  delta1 + delta2
                  for delta1, delta2 in zip(deltas, step_deltas)
              ]
          return deltas
  
      num_steps = self.num_steps.value()
      deltas = tf.while_loop(
          cond=tf_util.always_true,
          body=body,
          loop_vars=deltas,
          maximum_iterations=tf_util.int32(x=num_steps),
      )
  
      return deltas
  
imports: import tensorflow
  from tensorforce.core import parameter_modules, tf_function, tf_util
  from tensorforce.core.optimizers import UpdateModifier
label_desc: Use image node_id 2 for calling the MultiStep obj's underlying member method code with example usage: obj.step() and returns: deltas, deltas