code: def from_row_splits(
      cls, values, row_splits, name=None, validate=True
  ):
      # TODO : modify this, if necessary, to accept raggedTensor inputs too
  
      if values.shape[0] != row_splits[-1] or row_splits[0] != 0:
          if values.shape[0] != row_splits[-1]:
              raise ivy.utils.exceptions.IvyException(
                  "first dimension of shape of values should be equal to the"
                  " last dimension of row_splits"
              )
          else:
              raise ivy.utils.exceptions.IvyException(
                  "first value of row_splits should be equal to zero."
              )
      data = [
          values[row_splits[i] : row_splits[i + 1], :]
          for i in range(len(row_splits) - 1)
      ]
  
      return cls(
          values=values,
          row_partition=row_splits,
          internal=True,
          data=data,
      )
  
file_path: ivy/ivy/functional/frontends/tensorflow/ragged/ragged.py
imports: import ivy
label_desc: Use image node_id 2 for calling the RaggedTensor obj's underlying member method code with example usage: obj.from_row_splits(cls, values, row_splits, name, validate) and returns: cls