code: def test_builder_eval_vector_params_neg_axis(self):
      v = mb.quantize(
          input=np.array([1, 2, 3, 4])
          .reshape(1, 1, 2, 2)
          .astype(np.float32),
          zero_point=np.array([2, 4]).astype(np.int8),
          scale=np.array([1, 2]).astype(np.float32),
          axis=-1,
          output_dtype="int8",
      )
      np.testing.assert_allclose(
          np.array([3, 5, 5, 6]).reshape(1, 1, 2, 2).astype(np.int8),
          v.val,
      )
  
imports: import itertools
  from typing import Tuple
  import numpy
  import pytest
  from coremltools._deps import _HAS_TORCH, MSG_TORCH_NOT_FOUND
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil.ops.tests.iOS17 import backends
  from coremltools.converters.mil.mil.ops.tests.testing_utils import run_compare_builder
  from coremltools.converters.mil.mil.types import builtin_to_string, numpy_type_to_builtin_type
  from coremltools.converters.mil.testing_reqs import BackendConfig, compute_units
  from coremltools.converters.mil.testing_utils import ssa_fn
label_desc: Use image node_id 3 for calling the TestQuantize obj's underlying member method code with example usage: obj.test_builder_eval_vector_params_neg_axis() without return types