code: def forward_impl(self, inputs, outputs):
      inputs_fwd, outputs_fwd = self._create_fwd_inputs_outputs(
          inputs, outputs
      )
  
      # BN data
      x0 = inputs[self.x0_idx].data
      b0 = inputs[self.b0_idx].data if not self.no_bias else None
      g0 = inputs[self.g0_idx].data if not self.no_scale else None
      inputs_fwd[self.x0_idx - 1].data = x0
      if not self.no_bias:
          inputs_fwd[self.b0_idx - 1].data = b0
      if not self.no_scale:
          inputs_fwd[self.g0_idx - 1].data = g0
      if not self.batch_stat:
          rm = inputs[self.rm_idx].data
          rv = inputs[self.rv_idx].data
          inputs_fwd[self.rm_idx - 1].data = rm
          inputs_fwd[self.rv_idx - 1].data = rv
      # BN grad
      dx0 = outputs[self.x0_idx - 1].data
      inputs_fwd[self.x0_idx - 1].grad = dx0
      if not self.no_bias:
          db0 = outputs[self.b0_idx - 1].data
          inputs_fwd[self.b0_idx - 1].grad = db0
      if not self.no_scale:
          dg0 = outputs[self.g0_idx - 1].data
          inputs_fwd[self.g0_idx - 1].grad = dg0
      dy = inputs[0].data
      outputs_fwd[0].grad = dy
      # BN backward
      self._func.forward(
          inputs_fwd, outputs_fwd
      ) if self.batch_stat and not "cudnn" in self.ctx.backend else None
      self._func.backward(
          inputs_fwd, outputs_fwd, [False] * len(inputs_fwd)
      )
  
imports: from functools import partial
  import nnabla
  import nnabla.function
  import nnabla.functions
  import numpy
  from nnabla.function import PythonFunction
  from .utils import force_tuple
label_desc: Use image node_id 10 for calling the BatchNormalizationBackward obj's underlying member method code with example usage: obj.forward_impl(inputs, outputs) without return types