code: def common_run(self, mat, split, axis, num_outputs):  # type: ignore
      n_outputs = num_outputs or self.n_outputs
      if split is None:
          if mat.shape[axis] % n_outputs == 0:
              div = mat.shape[axis] // n_outputs
              split = [div] * n_outputs
          else:
              div = mat.shape[axis] // n_outputs + 1
              split = [div] * n_outputs
              split[-1] += mat.shape[axis] - sum(split)  # type: ignore
  
      sli = [slice(0, s) for s in mat.shape]
      res = []
      pos = 0
      for spl in split:
          sli[axis] = slice(pos, pos + spl)  # type: ignore
          pos += spl
          res.append(mat[tuple(sli)])
      return tuple(res)
  
file_path: onnx/onnx/reference/ops/op_split.py
imports: from onnx.reference.op_run import OpRun
label_desc: Use image node_id 2 for calling the CommonSplit obj's underlying member method code with example usage: obj.common_run(mat, split, axis, num_outputs) and returns: tuple