code: def __init__(
      self,
      sp_row,
      sp_col,
      sp_shape,
      sp_order="other",
      transa=False,
      transb=False,
      transc=False,
      dtype=None,
  ):
      if sp_row.ndim != sp_col.ndim:
          raise ValueError(
              "ndim of sp_row and sp_col must be the same."
          )
      if sp_row.ndim != 1 and sp_row.ndim != 2:
          raise ValueError(
              "ndim of sp_row and sp_col must be one or two."
          )
      for i in range(sp_row.ndim):
          if sp_row.shape[i] != sp_col.shape[i]:
              msg = "shape of sp_row and sp_col must be the same."
              raise ValueError(msg)
      if len(sp_shape) != 2:
          raise ValueError("len(sp_shape) must be two.")
      self.sp_row = sp_row  # ((nb,) ldnz)
      self.sp_col = sp_col  # ((nb,) ldnz)
      self.sp_shape = sp_shape  # (_m, _k) when transa is False
      self.sp_order = sp_order
      self.transa = transa
      self.transb = transb
      self.transc = transc
      self.dtype = dtype
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer import utils
  from chainer.utils import type_check
label_desc: Use image node_id 1 to create a new CooMatMul object from inherited base classes: function_node with example: obj = CooMatMul(sp_row, sp_col, sp_shape, sp_order, transa, transb, transc, dtype)