code: def test_conv(self):
      kernel_width, kernel_height = (3, 3)
      stride_width, stride_height = (1, 1)
      pad_width, pad_height = (0, 0)
      input_shape = [1, 3, 224, 224]
      output_shape = [1, 8, 222, 222]
      weight_shape = [8, 3, 3, 3]
      input_x = np.random.random(input_shape)
      weight_values = np.random.random(weight_shape)
  
      # Create input (ValueInfoProto)
      X = onnx.helper.make_tensor_value_info(
          "X", onnx.TensorProto.FLOAT, input_shape
      )
      W = onnx.helper.make_tensor_value_info(
          "W", onnx.TensorProto.FLOAT, weight_shape
      )
      # Create one output (ValueInfoProto)
      Y = onnx.helper.make_tensor_value_info(
          "Y", onnx.TensorProto.FLOAT, output_shape
      )
  
      init_weight = onnx.helper.make_tensor(
          name="W",
          data_type=onnx.TensorProto.FLOAT,
          dims=weight_shape,
          vals=weight_values.flatten().astype(float),
      )
  
      conv_node = onnx.helper.make_node(
          op_type="Conv",
          inputs=["X", "W"],
          outputs=["Y"],
          kernel_shape=(kernel_width, kernel_height),
      )
  
      # Create the graph (GraphProto)
      onnx_graph = onnx.helper.make_graph(
          nodes=[conv_node],
          name="test-conv",
          inputs=[X],
          outputs=[Y],
          initializer=[init_weight],
      )
  
      # Create the model (ModelProto)
      onnx_model = onnx.helper.make_model(
          onnx_graph, producer_name="ONNX"
      )
      onnx.checker.check_model(onnx_model)
  
      loaded_model = load_model_proto(onnx_model)
      bigdl_model = SpatialConvolution(
          n_input_plane=3,
          n_output_plane=8,
          kernel_w=kernel_width,
          kernel_h=kernel_height,
          stride_w=stride_width,
          stride_h=stride_height,
          pad_w=pad_width,
          pad_h=pad_height,
          init_weight=weight_values,
          with_bias=False,
      )
  
      loaded_out = loaded_model.forward(input_x)
      expected_out = bigdl_model.forward(input_x)
  
      assert np.array_equal(loaded_out, expected_out)
  
imports: import onnx
  import pytest
  import numpy
  from bigdl.dllib.contrib.onnx.onnx_loader import load_model_proto
  from bigdl.dllib.nn.layer import CAddTable, JoinTable, ReLU
  from bigdl.dllib.nn.layer import SoftMax, SpatialAveragePooling, SpatialBatchNormalization
  from bigdl.dllib.nn.layer import SpatialConvolution, SpatialMaxPooling
  from bigdl.dllib.nn.layer import Unsqueeze
  from bigdl.dllib.nn.onnx.layer import Gemm, Reshape, Shape
label_desc: Use image node_id 1 for calling the TestConv obj's underlying member method code with example usage: obj.test_conv() without return types