class_docstr: MKL Backend
class_docstr_tok: ["MKL","Backend"]
code: def bprop_relu(self, layer, x, error, deltas, slope):
      if layer is None:
          layer = layer_mkl.ReluLayerMKL()
      if slope != 0 or error is None:
          if error is not None:
              self.convert(error)
              error.clean_mkl()
          return self.greater(x, 0) + slope * self.less(x, 0)
  
      # to be moved to C code
      if not layer.inputMKL:
          self.convert(error)
          error.clean_mkl()
      primitives = c_longlong(layer.dnnPrimitives.ctypes.data)
      self.mklEngine.Relu_b(
          x.get_prim(), error.get_prim(), primitives, layer.initOk_b
      )
      layer.initOk_b = 1
      deltas.set_mkl(error)
      deltas.shape5D = layer.shape5D
      if deltas.primitive[3] == 0:
          deltas[:] = error
  
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 18 for calling the NervanaMKL obj's underlying member method code with example usage: obj.bprop_relu(layer, x, error, deltas, slope) and returns: unknown