class_docstr: MKL based ConvLayer
class_docstr_tok: ["MKL","based","ConvLayer"]
code: def update_conv(
      self, I, E, U, alpha=1.0, beta=0.0, grad_bias=None, layer_op=None
  ):
      if not self.get_is_mklop():
          I.backend.convert(I)
          I.clean_mkl()
          E.backend.convert(E)
          E.clean_mkl()
          super(ConvLayerMKL, self).update_conv(
              I, E, U, alpha, beta, grad_bias, layer_op
          )
          return
  
      # not deal with alpha, beta yet
      K, M, P, Q, N = self.dimO
      C, D, H, W, N = self.dimI
      C, T, R, S, K = self.dimF
      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 grad_bias is not None:
          bias_prim = grad_bias.get_prim()
      I.backend.mklEngine.Conv_bwdFilter(
          I.get_prim(),
          E.get_prim(),
          U.get_prim(),
          bias_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_bw,
          self.init_bd,
      )
      self.init_bw = 1
  
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 3 for calling the ConvLayerMKL obj's underlying member method code with example usage: obj.update_conv(I, E, U, alpha, beta, grad_bias, layer_op) without return types