code: def _SetupAndRunBenchmark(self, graph, inputs, repeats, format_args):
      with graph.as_default():
          add_n = math_ops.add_n(inputs)
          acc_n_first = self._AccumulateNInitializedWithFirst(inputs)
          acc_n_merge = self._AccumulateNInitializedWithMerge(inputs)
          acc_n_shape = self._AccumulateNInitializedWithShape(inputs)
  
      test_ops = (
          ("AddN", add_n.op),
          ("AccNFirst", acc_n_first.op),
          ("AccNMerge", acc_n_merge.op),
          ("AccNShape", acc_n_shape.op),
      )
  
      with session.Session(graph=graph):
          for tag, op in test_ops:
              for _ in range(100):
                  op.run()  # Run for warm up.
              start = time.time()
              for _ in range(repeats):
                  op.run()
              duration = time.time() - start
              args = format_args + (tag, duration)
              print(self._template.format(*args))
  
imports: import random
  import time
  from tensorflow.python.client import session
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import data_flow_ops
  from tensorflow.python.ops import gen_control_flow_ops
  from tensorflow.python.ops import gen_state_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops import state_ops
  from tensorflow.python.platform import test
label_desc: Use image node_id 9 for calling the AccumulateNBenchmark obj's underlying member method code with example usage: obj._SetupAndRunBenchmark(graph, inputs, repeats, format_args) without return types