code: def __call__(self, y_true, y_pred):
      # scalar(y_type), y_true, y_pred
      self.output_types = [OutputType.tensor] * 3
  
      inputs = []
      if isinstance(y_true, ENTITY_TYPE):
          inputs.append(y_true)
      if isinstance(y_pred, ENTITY_TYPE):
          inputs.append(y_pred)
  
      kws = list()
      kws.append(
          {
              "shape": (),
              "dtype": np.dtype(object),
              "order": TensorOrder.C_ORDER,
          }
      )
      kws.extend(
          [y.params for y in (mt.tensor(y_true), mt.tensor(y_pred))]
      )
      kws[1]["shape"] = kws[2]["shape"] = (np.nan,)
      return ExecutableTuple(self.new_tileables(inputs, kws=kws))
  
file_path: mars/mars/learn/metrics/_check_targets.py
imports: import numpy
  from ...None import opcodes
  from ...None import tensor
  from ...core import ENTITY_TYPE, ExecutableTuple, recursive_tile
  from ...core.context import get_context
  from ...serialization.serializables import AnyField
  from ...tensor.core import TENSOR_TYPE, TensorOrder
  from ..operands import LearnOperand, LearnOperandMixin, OutputType
  from ..utils.multiclass import type_of_target
  from ..utils import check_consistent_length, column_or_1d
label_desc: Use image node_id 3 for calling the CheckTargets obj's underlying member method code with example usage: obj.__call__(y_true, y_pred) and returns: ExecutableTuple