code: def conv(inputs, prev_modules, attrs, outputs):
      # extract attributes
      auto_pad = attrs.get("auto_pad", "NOTSET")
      padW, padH = map(int, attrs.get("pads", (0, 0))[:2])
      kernelW, kernelH = map(int, attrs.get("kernel_shape", (0, 0))[:2])
      strideW, strideH = map(int, attrs.get("strides", (1, 1))[:2])
      dilationW, dilationH = map(
          int, attrs.get("dilations", (1, 1))[:2]
      )
      group = int(attrs.get("group", 1))
      withBias = len(inputs) == 3 and inputs[2] is not None
      # extract inputs
      data_tensor_val, data_tensor_shape = inputs[0]
      weight_tensor_val, weight_tensor_shape = inputs[1]
      bias_tensor_val = None
      if withBias:
          bias_tensor_val, _ = inputs[2]
      # calc output tensor shape
      input_batch_size, n_input_plane = map(int, data_tensor_shape[:2])
      n_output_plane = weight_tensor_shape[0]
      input_height, input_width = data_tensor_shape[-2:]
      output_height = calc_output_shape(
          input_height, kernelH, padding=padH, stride=strideH
      )
      output_width = calc_output_shape(
          input_width, kernelW, padding=padW, stride=strideW
      )
      out_tensor_shape = (
          input_batch_size,
          n_output_plane,
          output_height,
          output_width,
      )
      # create module node
      module = SpatialConvolution(
          n_input_plane=n_input_plane,
          n_output_plane=n_output_plane,
          kernel_w=kernelW,
          kernel_h=kernelH,
          stride_w=strideW,
          stride_h=strideH,
          pad_w=padW,
          pad_h=padH,
          n_group=group,
          init_weight=weight_tensor_val,
          init_bias=bias_tensor_val,
          with_bias=withBias,
      )(prev_modules[0])
      return module, [out_tensor_shape]
  
file_path: BigDL/python/dllib/src/bigdl/dllib/contrib/onnx/ops_converter.py
imports: from bigdl.dllib.nn.layer import SpatialAveragePooling, SpatialBatchNormalization
  from bigdl.dllib.nn.layer import SpatialConvolution, SpatialMaxPooling, JoinTable
  from bigdl.dllib.nn.layer import ReLU, SoftMax, CAddTable, Unsqueeze
  from bigdl.dllib.nn.onnx.layer import Constant, Gather, Gemm, Shape, Reshape
  from .converter_utils import *
label_desc: Use image node_id 5 for calling a global function with example usage: conv(inputs, prev_modules, attrs, outputs) and returns: module,  list