code: def test_dnnlowp_elementwise_mul_broadcast_axis(self, gc, dc):
      for bdim, axis in [
          ((3, 4), 1),  # broadcasting intermediate dimensions
          ((2,), 0),  # broadcasting the first dimension
          ((1, 4, 1), 1),
      ]:
          # broadcasting with single elem dimensions at both ends
  
          min_ = -100
          max_ = min_ + 255
          A = np.round(
              np.random.rand(2, 3, 4, 5) * (max_ - min_) + min_
          )
          A = A.astype(np.float32)
  
          B = np.round(np.random.rand(*bdim) * 255 - 128).astype(
              np.float32
          )
  
          A.flat[0] = min_
          A.flat[1] = max_
          B.flat[0] = -128
          B.flat[1] = 127
  
          Output = collections.namedtuple("Output", ["Y", "engine"])
          outputs = []
  
          engine_list = ["", "DNNLOWP"]
          for engine in engine_list:
              net = core.Net("test_net")
  
              mul = core.CreateOperator(
                  "Mul",
                  ["A", "B"],
                  ["Y"],
                  engine=engine,
                  device_option=gc,
                  broadcast=1,
                  axis=axis,
                  dequantize_output=1,
              )
              net.Proto().op.extend([mul])
  
              self.ws.create_blob("A").feed(A, device_option=gc)
              self.ws.create_blob("B").feed(B, device_option=gc)
              self.ws.run(net)
              outputs.append(
                  Output(Y=self.ws.blobs["Y"].fetch(), engine=engine)
              )
  
          check_quantized_results_close(outputs)
  
file_path: pytorch/caffe2/quantization/server/elementwise_mul_dnnlowp_op_test.py
imports: import collections
  import caffe2.python.hypothesis_test_util
  import hypothesis.strategies
  import numpy
  from caffe2.python import core, dyndep, workspace
  from caffe2.quantization.server.dnnlowp_test_utils import check_quantized_results_close
  from hypothesis import given, settings
label_desc: Use image node_id 3 for calling the DNNLowPMulOpTest obj's underlying member method code with example usage: obj.test_dnnlowp_elementwise_mul_broadcast_axis(gc, dc) without return types