code: def forward_impl(self, inputs, outputs):
      inputs_fwd, outputs_fwd = self._create_fwd_inputs_outputs(
          inputs, outputs
      )
  
      # FusedBN data
      x0 = inputs[1].data
      b0 = inputs[2].data
      g0 = inputs[3].data
      z0 = inputs[7].data if self._is_add else None
      inputs_fwd[0].data = x0
      inputs_fwd[1].data = b0
      inputs_fwd[2].data = g0
      if self._is_add:
          inputs_fwd[5].data = z0
      if not self.batch_stat:
          rm = inputs[4].data
          rv = inputs[5].data
          inputs_fwd[3].data = rm
          inputs_fwd[4].data = rv
      # FusedBN grad
      dx0 = outputs[0].data
      db0 = outputs[1].data
      dg0 = outputs[2].data
  
      inputs_fwd[0].grad = dx0
      inputs_fwd[1].grad = db0
      inputs_fwd[2].grad = dg0
      if self._is_add:
          dz0 = outputs[3].data
          inputs_fwd[5].grad = dz0
      dy = inputs[0].data
      outputs_fwd[0].grad = dy
      # FusedBN 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: import nnabla
  import nnabla.function
  import nnabla.functions
  from nnabla.function import PythonFunction
  from .batch_normalization import double_backward_for_batch
  from .batch_normalization import double_backward_for_global
  from .utils import no_grad
label_desc: Use image node_id 12 for calling the FusedBatchNormalizationBackward obj's underlying member method code with example usage: obj.forward_impl(inputs, outputs) without return types