code: def mean_subtraction(inp, base_axis=1, update_running_mean=True, fix_parameters=False):
      
      assert len(inp.shape) >= base_axis
      shape = inp.shape[base_axis:]
      mean = get_parameter_or_create(
          "mean", shape, ConstantInitializer(0), False)
      t = get_parameter_or_create(
          "t", (1, ), ConstantInitializer(0), False)
      return F.mean_subtraction(inp, mean, t, base_axis=base_axis, update_running_mean=update_running_mean)
docs: Mean subtraction layer.
  
      It subtracts the mean of the elements of the input array,
      and normalizes it to :math:`0`. Preprocessing arrays with this function has the effect of improving accuracy
      in various tasks such as image classification.
  
      At training time, this function is defined as
  
      .. math::
  
          \\begin{array}{lcl}
          \\mu &=& \\frac{1}{M} \\sum x_i \\\\
          y_i &=& x_i - \\mu
          \\end{array}
  
      At testing time, the mean values used are those that were computed during training by moving average.
  
      Note:
          The backward performs an approximated differentiation that takes into account only the latest mini-batch.
  
      Args:
          inp (~nnabla.Variable): N-D array of input.
          base_axis (int): Base axis of Mean Subtraction operation. Dimensions up to base_axis is treated as sample dimension.
          update_running_mean (bool): When set to `True`, the running mean will not be updated.
          fix_parameters (bool): dummy parameter. This argument dose not affect anything.
  
      Returns:
          ~nnabla.Variable: N-D array.