code: def backward(self, indexes, grad_outputs):
      (x,) = self.get_retained_inputs()
      (z,) = self.get_retained_outputs()
      (gz,) = grad_outputs
  
      (x_hat,) = _XHat(
          self.eps, self.mean, self.inv_std, self.dummy_gamma
      ).apply((x,))
      gx_std = x_hat * chainer.functions.mean(
          gz * z, axis=1, keepdims=True
      )
      (gx,) = _MulInvStd(
          self.eps, self.mean, self.inv_std, self.dummy_gamma
      ).apply((x, gx_std))
      (gy,) = _MulInvStd(
          self.eps, self.mean, self.inv_std, self.dummy_gamma
      ).apply((x, gz))
  
      return -gx, gy
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import configuration
  from chainer import function_node
  from chainer.utils import type_check
label_desc: Use image node_id 3 for calling the _MulInvStd obj's underlying member method code with example usage: obj.backward(indexes, grad_outputs) and returns: unknown,  gy