code: def test_lut_quant_convolution_2bit(self):
      W = np.zeros((2, 2, 1, 2), dtype=np.uint8)
      W[:, :, :, 0] = 0
      W[:, :, :, 1] = 2
      W = _convert_array_to_nbit_quantized_bytes(
          W.flatten(), 2
      ).tobytes()
      mlmodel = self.build_quant_conv_layer(
          W=W,
          quantization_type="lut",
          nbits=2,
          quant_lut=[10.0, 11.0, -3.0, -1.0],
      )
      data = np.ones((1, 2, 2))
      data_dict = {"data": data}
      out = mlmodel.predict(data_dict)["out"]
      expected_out = np.reshape(np.array([40, -12]), (2, 1, 1))
      self.assertTrue(np.allclose(out, expected_out))
  
imports: import numpy
  import pytest
  import unittest
  import coremltools
  from coremltools import ComputeUnit
  from coremltools.converters.mil.mil.types.type_mapping import np_val_to_py_type
  from coremltools.models import MLModel, datatypes
  from coremltools.models.neural_network import NeuralNetworkBuilder
  from coremltools.models.neural_network.quantization_utils import _convert_array_to_nbit_quantized_bytes, quantize_weights
  from coremltools.models.utils import _is_macos, _macos_version
label_desc: Use image node_id 5 for calling the BasicNumericCorrectnessTest_1014NewLayers obj's underlying member method code with example usage: obj.test_lut_quant_convolution_2bit() without return types