docstr: Tests the MultiGPU runner by feeding in random Tensors for `ninputs`
  steps. Then validating the output after `niter-1` steps.
docstr_tok: ["Tests","the","MultiGPU","runner","by","feeding","in","random","Tensors","for","`","ninputs","`","steps",".","Then","validating","the","output","after","`","niter-1","`","steps","."]
code: def help_test_runner(self, ninputs, niter):
      """
      Tests the MultiGPU runner by feeding in random Tensors for `ninputs`
      steps. Then validating the output after `niter-1` steps.
      """
      v_val = []
      w_val = []
      for i in range(ninputs):
          v_val += [np.random.rand(100, 10)]
          w_val += [np.random.rand(100, 1)]
          fvals = self.runner.run({"v": v_val[i], "w": w_val[i]})
          self.assertTrue(len(fvals) == 0)
          self.assertFalse(self.runner.is_finished())
  
      for i in range(niter - ninputs - 1):
          self.assertFalse(self.runner.is_finished())
          fvals = self.runner.run()
          self.assertTrue(len(fvals) == 0)
          self.assertFalse(self.runner.is_finished())
  
      for i in range(ninputs):
          self.assertFalse(self.runner.is_finished())
          fvals = self.runner.run()
          self.assertTrue("v" in fvals and "w" in fvals)
          self.assertTrue(np.allclose(fvals["v"], v_val[i]))
          self.assertTrue(np.allclose(fvals["w"], w_val[i]))
  
      self.assertTrue(self.runner.is_finished())
  
file_path: cleverhans/cleverhans_v3.1.0/examples/multigpu_advtrain/test_runner.py
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import unittest
  import numpy
  import tensorflow
  from cleverhans.devtools.checks import CleverHansTest
  from runner import RunnerMultiGPU
label_desc: Use image node_id 2 for calling the TestRunnerMultiGPU obj's underlying member method code with example usage: obj.help_test_runner(ninputs, niter) without return types