code: def SparseMatMul(context, node):
      a = context[node.inputs[0]]
      b = context[node.inputs[1]]
      transpose_a = node.attr.get("transpose_a", False)
      transpose_b = node.attr.get("transpose_b", False)
      a_is_sparse = node.attr.get("a_is_sparse", False)
      b_is_sparse = node.attr.get("b_is_sparse", False)
  
      x = mb.custom_sparse_matmul(
          x=a,
          y=b,
          transpose_x=transpose_a,
          transpose_y=transpose_b,
          x_is_sparse=a_is_sparse,
          y_is_sparse=b_is_sparse,
          name=node.name,
      )
      context.add(node.name, x)
  
file_path: coremltools/coremltools/converters/mil/frontend/tensorflow/test/test_custom_ops.py
imports: import itertools
  import numpy
  import pytest
  from coremltools.converters.mil.frontend.tensorflow.test.testing_utils import TensorFlowBaseTest, make_tf_graph
  from coremltools.converters.mil.frontend.tensorflow.tf_op_registry import _TF_OPS_REGISTRY, register_tf_op
  from coremltools.converters.mil.mil import Builder
  from coremltools.converters.mil.mil import Operation, types
  from coremltools.converters.mil.mil.input_type import DefaultInputs, InputSpec, TensorInputType
  from coremltools.converters.mil.mil.ops.defs._op_reqs import register_op
  from coremltools.converters.mil.mil.types.symbolic import is_symbolic
  from coremltools.converters.mil.testing_reqs import backends, compute_units
  from coremltools.converters.mil.testing_utils import random_gen
label_desc: Use image node_id 1 for calling the TestCustomMatMul obj's underlying member method code with example usage: obj.SparseMatMul(context, node) without return types