code: def test_compute_equalization_scale_shape_inference(self):
      X = np.array([[1, 2], [2, 4], [6, 7]]).astype(np.float32)
      W = np.array([[2, 3], [5, 4], [8, 2]]).astype(np.float32)
      ComputeEqualizationScaleOp = core.CreateOperator(
          "ComputeEqualizationScale", ["X", "W"], ["S"]
      )
      workspace.FeedBlob("X", X)
      workspace.FeedBlob("W", W)
  
      net = core.Net("test_shape_inference")
      net.Proto().op.extend([ComputeEqualizationScaleOp])
      shapes, types = workspace.InferShapesAndTypes(
          [net],
          blob_dimensions={"X": X.shape, "W": W.shape},
          blob_types={
              "X": core.DataType.FLOAT,
              "W": core.DataType.FLOAT,
          },
      )
      assert (
          "S" in shapes and "S" in types
      ), "Failed to infer the shape or type of output"
      self.assertEqual(shapes["S"], [1, 2])
      self.assertEqual(types["S"], core.DataType.FLOAT)
  
file_path: pytorch/caffe2/quantization/server/compute_equalization_scale_test.py
imports: import caffe2.python.hypothesis_test_util
  import hypothesis.strategies
  import numpy
  from caffe2.python import core, workspace
  from hypothesis import given, settings
label_desc: Use image node_id 2 for calling the TestComputeEqualizationScaleOp obj's underlying member method code with example usage: obj.test_compute_equalization_scale_shape_inference() without return types