code: def test_scaler(self):
      X = make_tensor_value_info("X", TensorProto.FLOAT, [None, None])
      Y = make_tensor_value_info("Y", TensorProto.FLOAT, [None, None])
      node1 = make_node(
          "Scaler",
          ["X"],
          ["Y"],
          scale=[0.5],
          offset=[-4.5],
          domain="ai.onnx.ml",
      )
      graph = make_graph([node1], "ml", [X], [Y])
      onx = make_model_gen_version(graph, opset_imports=OPSETS)
      check_model(onx)
      x = np.arange(12).reshape((3, 4)).astype(np.float32)
      expected = np.array(
          [
              [2.25, 2.75, 3.25, 3.75],
              [4.25, 4.75, 5.25, 5.75],
              [6.25, 6.75, 7.25, 7.75],
          ],
          dtype=np.float32,
      )
      self._check_ort(onx, {"X": x})
      sess = ReferenceEvaluator(onx)
      got = sess.run(None, {"X": x})[0]
      assert_allclose(expected, got)
  
imports: import unittest
  from functools import wraps
  from os import getenv
  import numpy
  from numpy.testing import assert_allclose
  from parameterized import parameterized
  from onnx import ONNX_ML, TensorProto, TypeProto, ValueInfoProto
  from onnx.checker import check_model
  from onnx.defs import onnx_opset_version
  from onnx.helper import make_graph, make_model_gen_version, make_node, make_opsetid, make_tensor, make_tensor_value_info
  from onnx.reference import ReferenceEvaluator
label_desc: Use image node_id 3 for calling the TestReferenceEvaluatorAiOnnxMl obj's underlying member method code with example usage: obj.test_scaler() without return types