code: def _batch_normalization(
      inputs, running_mean=None, running_var=None, decay=None
  ):
      x, gamma, beta, mean, var, eps, expander = inputs
      mean_expanded = mean[expander]
      std = numpy.sqrt(var + eps)[expander]
      y_expect = (
          gamma[expander] * (x - mean_expanded) / std + beta[expander]
      )
  
      if running_mean is not None or running_var is not None:
          m = x.size // gamma.size
          adjust = m / max(m - 1.0, 1.0)  # unbiased estimation
          if running_mean is not None:
              running_mean *= decay
              running_mean += (1 - decay) * mean
          if running_var is not None:
              running_var *= decay
              running_var += (1 - decay) * adjust * var
  
      return y_expect
  
imports: import unittest
  import warnings
  import numpy
  import six
  import chainer
  from chainer.backends import cuda
  from chainer import functions
  from chainer import gradient_check
  from chainer import testing
  from chainer.testing import attr
  from chainer.testing import backend
label_desc: Use image node_id 2 for calling a global function with example usage: _batch_normalization(inputs, running_mean, running_var, decay) and returns: y_expect