class_docstr: ConvLayer parameter object.
  This then is passed as an argument to all the convolution operations.
  
  N: Number of images in mini-batch
  C: Number of input feature maps
  K: Number of output feature maps
  
  D: Depth  of input image
  H: Height of input image
  W: Width  of input image
  
  T: Depth  of filter kernel
  R: Height of filter kernel
  S: Width  of filter kernel
  
  padding: amount of zero-padding around the given edge
  strides: factor to step the filters by in a given direction
  dilation: dilation factor for each dimension
code: def compound_ops(self, O, X, bias, bsum, relu, brelu, slope):
      if bias is not None:
          O[:] = (O.reshape((O.shape[0], -1)) + bias).reshape(O.shape)
      if relu or brelu:
          if relu:
              if slope:
                  O[:] = np.maximum(O, 0.0) + slope * np.minimum(O, 0.0)
              else:
                  O[:] = np.maximum(O, 0.0)
          else:
              if slope:
                  O[:] = O * ((X > 0.0) + slope * (X < 0.0))
              else:
                  O[:] = O * (X > 0.0)
      if bsum is not None:
          bsum[:] = np.sum(
              O.reshape((O.shape[0], -1)), axis=1, keepdims=True
          )
  
imports: from __future__ import division
  from builtins import object
  import math
  from operator import mul
  import numpy
  from functools import reduce
label_desc: Use image node_id 7 for calling the ConvLayer obj's underlying member method code with example usage: obj.compound_ops(O, X, bias, bsum, relu, brelu, slope) without return types