code: def _check_and_convert(self):
      if not isinstance(self._tensors, Tuple):
          self._tensors = (self._tensors,)
      for t in self._tensors:
          if not isinstance(t, ACCEPT_TYPE):
              raise TypeError(f"Unexpected dataset type: {type(t)}")
  
      if not self._executed:
          self._execute()
          self._executed = True
  
      if not self._output_shapes:
          get_shape = (
              lambda t: tuple(())
              if isinstance(t, (List, SERIES_TYPE, pd.Series))
              else t.shape[1:]
          )
          self._output_shapes = (
              get_shape(self._tensors[0])
              if len(self._tensors) == 1
              else tuple(get_shape(t) for t in self._tensors)
          )
  
      if not self._output_types:
          get_type = (
              lambda t: type(t[0])
              if isinstance(t, List)
              else t[0].dtype
              if isinstance(t, (DATAFRAME_TYPE, pd.DataFrame))
              else t.dtype
          )
          self._output_types = (
              get_type(self._tensors[0])
              if len(self._tensors) == 1
              else tuple(
                  tf.as_dtype(get_type(t)) for t in self._tensors
              )
          )
  
file_path: mars/mars/learn/contrib/tensorflow/dataset.py
imports: import copy
  from typing import List, Tuple
  import pandas
  import numpy
  from ....None import execute
  from ....core.context import get_context
  from ....tensor.core import TENSOR_TYPE
  from ....dataframe.core import DATAFRAME_TYPE, SERIES_TYPE
  from ....utils import require_not_none, lazy_import
label_desc: Use image node_id 2 for calling the MarsDataset obj's underlying member method code with example usage: obj._check_and_convert() without return types