code: def Conv(
      shapeX,
      shapeW,
      auto_pad=None,
      dilations=None,
      group=None,
      kernel_shape=None,
      pads=None,
      strides=None,
  ):
      # Don't support auto_pad current!
      #                             2018-02-28
      # if group is None:
      #    group = 1
      #  group is not support yet too.
      kernelDim = len(shapeX) - 2
      if kernel_shape is None:
          kernel_shape = shapeW[
              2:
          ]  # [[1 for _ in range(kernelDimSize)] for _ in range(kernelDimSize)]
      if pads is None:
          [0 for _ in range(kernelDim * 2)]
      if strides is None:
          [1 for _ in range(kernelDim)]
      if pads is None:
          pads = [0 for _ in range(kernelDim * 2)]
      if strides is None:
          strides = [1 for _ in range(kernelDim)]
      if dilations is None:
          dilations = [1 for _ in range(kernelDim)]
  
      retShape = [shapeX[0], shapeW[0]]
      dimIdx = 0
      for dimSize in shapeX[2:]:
          padUpper = pads[dimIdx * 2]
          padLower = pads[dimIdx * 2 + 1]
          stride = strides[dimIdx]
          dilation = dilations[dimIdx]
          kernelDimSize = (
              kernel_shape[dimIdx] - 1
          ) // 2 * dilation * 2 + 1
          retShape.append(
              (dimSize + padUpper + padLower - kernelDimSize) // stride
              + 1
          )
          dimIdx = dimIdx + 1
      return retShape
  
file_path: MMdnn/mmdnn/conversion/onnx/shape_inference.py
label_desc: Use image node_id 5 for calling a global function with example usage: Conv(shapeX, shapeW, auto_pad, dilations, group, kernel_shape, pads, strides) and returns: retShape