code: def test_batchnorm(self, xp):
      def batchnorm(
          x, gamma, beta, running_mean, running_var, size, adjust
      ):
          decay = 0.9
          eps = 2e-5
          expander = (None, slice(None), None, None)
  
          gamma = gamma[expander]
          beta = beta[expander]
          mean = xp.sum(x, axis=(0, 2, 3)) / size
          diff = x - mean[expander]
          var = xp.sum(diff * diff, axis=(0, 2, 3)) / size
          inv_std = 1.0 / xp.sqrt(var + eps)
          y = gamma * diff * inv_std[expander] + beta
  
          running_mean *= decay
          running_mean += (1 - decay) * mean
          running_var *= decay
          running_var += (1 - decay) * adjust * var
          return y
  
      return batchnorm
  
file_path: cupy/tests/cupy_tests/core_tests/fusion_tests/test_example.py
imports: import unittest
  import pytest
  import cupy
  from cupy import testing
  from cupy_tests.core_tests.fusion_tests import fusion_utils
label_desc: Use image node_id 2 for calling the TestFusionExample obj's underlying member method code with example usage: obj.test_batchnorm(xp) and returns: batchnorm, y