class_docstr: MKL based ConvLayer
class_docstr_tok: ["MKL","based","ConvLayer"]
code: def xprop_conv(
      self,
      I,
      F,
      O,
      X=None,
      bias=None,
      bsum=None,
      alpha=1.0,
      beta=0.0,
      relu=False,
      brelu=False,
      slope=0.0,
      backward=False,
      layer_op=None,
  ):
      if layer_op is None:
          layer_op = self
  
      if not self.get_is_mklop():
          I.backend.convert(I)
          F.backend.convert(F)
          I.clean_mkl()
          F.clean_mkl()
          super(ConvLayerMKL, self).xprop_conv(
              I,
              F,
              O,
              X,
              bias,
              bsum,
              alpha,
              beta,
              relu,
              brelu,
              slope,
              backward,
          )
          return
  
      if X is None:
          X = O
  
      C, D, H, W, N = self.dimI
      C, T, R, S, K = self.dimF
      K, M, P, Q, N = self.dimO
      pad_d, pad_h, pad_w = self.padding
      str_d, str_h, str_w = self.strides
      dil_d, dil_h, dil_w = self.dilation
      primitives = c_longlong(self.dnnPrimitives.ctypes.data)
      bias_prim = c_longlong(0)
      if bias is not None:
          bias_prim = bias.get_prim()
  
      mkl_res = 0
      if not backward:
          mkl_res = I.backend.mklEngine.Conv_forward(
              I.get_prim(),
              O.get_prim(),
              F.get_prim(),
              bias_prim,
              primitives,
              self.init_f,
              N,
              C,
              H,
              W,
              R,
              S,
              str_h,
              str_w,
              pad_h,
              pad_w,
              dil_h,
              dil_w,
              K,
              P,
              Q,
          )
          self.init_f = 1
          O.shape5D = self.dimO
      else:
          I.backend.mklEngine.Conv_bwdData(
              I.get_prim(),
              O.get_prim(),
              F.get_prim(),
              primitives,
              N,
              C,
              H,
              W,
              R,
              S,
              str_h,
              str_w,
              pad_h,
              pad_w,
              dil_h,
              dil_w,
              K,
              P,
              Q,
              self.init_bd,
              c_float(beta),
          )
          O.shape5D = self.dimI
          self.init_bd = 1
      if mkl_res != 0:
          super(ConvLayerMKL, self).xprop_conv(
              I,
              F,
              O,
              X,
              bias,
              bsum,
              alpha,
              beta,
              relu,
              brelu,
              slope,
              backward,
          )
          I.clean_mkl()
          O.clean_mkl()
          layer_op.set_not_mklop()
          return
  
imports: from __future__ import division
  import numpy
  from ctypes import c_longlong, c_float
  from neon.backends.layer_cpu import ConvLayer, DeconvLayer, PoolLayer
label_desc: Use image node_id 2 for calling the ConvLayerMKL obj's underlying member method code with example usage: obj.xprop_conv(I, F, O, X, bias, bsum, alpha, beta, relu, brelu, slope, backward, layer_op) without return types