code: def test_reduction(self):
      # TODO Reduction only allowed along one axis per kernel.
      for _ in range(self.test_epoch):
          # tensor
          x0, x1, x2, x3 = [self._rand_gen() for _ in range(4)]
          # functioncall
          f_str = (
              "  (x0 + x2) + be.sum(x0, axis=0)"
              "- (x0 - x1) - be.mean(x3, axis=1)"
              "+ (x2 + x3) + be.var(x0, axis=0)"
              "+ (x2 + x3) + be.std(x0)"
              "- (x2 - x3) - be.max(x3, axis=1)"
              "- (x2 - x3) - be.min(x3, axis=0)"
              "- (x2 - x3) - be.argmax(x3, axis=1)"
              "- (x2 - x3) - be.argmin(x3, axis=0)"
          )
          # gradient
          self._assert_grad_equal(f_str, [x0, x1, x2, x3], rtol=1e-2)
  
imports: from builtins import zip
  import numpy
  import pprint
  import pytest
  from neon import NervanaObject
  from neon.backends.autodiff import Autodiff
  from utils import allclose_with_out
label_desc: Use image node_id 8 for calling the TestAutodiff obj's underlying member method code with example usage: obj.test_reduction() without return types