class_docstr: MKL Backend
class_docstr_tok: ["MKL","Backend"]
code: def compound_bprop_bn(
      self,
      deltas,
      grad_gamma,
      grad_beta,
      error,
      inputs,
      xsum,
      xvar,
      gamma,
      eps,
      binary=False,
      layer=None,
  ):
      if not layer or not isinstance(layer.in_shape, tuple):
          super(NervanaMKL, self).compound_bprop_bn(
              deltas,
              grad_gamma,
              grad_beta,
              error,
              inputs,
              xsum,
              xvar,
              gamma,
              eps,
              binary,
              layer,
          )
          return
  
      primitives = c_longlong(layer.dnnPrimitives.ctypes.data)
  
      self.mklEngine.BatchNormBackp(
          inputs.get_prim(),
          error.get_prim(),
          deltas.get_prim(),
          grad_gamma.get_prim(),
          grad_beta.get_prim(),
          layer.in_shape[0],
          primitives,
          layer.init_b,
      )
      layer.init_b = 1
      deltas.shape5D = layer.shape5D
  
imports: from __future__ import division
  from builtins import zip
  import logging
  from neon.backends import layer_mkl
  from neon.backends.util.check_mkl import get_mkl_lib
  from neon.backends.nervanacpu import CPUTensor, NervanaCPU, CustomNumpy
  import ctypes
  from cffi import FFI
  from ctypes import c_longlong, c_float, c_double, c_int
  import numpy
  from neon.backends import math_cpu
  from neon.backends.backend import OpTreeNode
  import os
  import sys
label_desc: Use image node_id 23 for calling the NervanaMKL obj's underlying member method code with example usage: obj.compound_bprop_bn(deltas, grad_gamma, grad_beta, error, inputs, xsum, xvar, gamma, eps, binary, layer) without return types