code: def split_dataset(dataset, validation_split):
      """Split dataset into training and validation.
  
      # Arguments
          dataset: tf.data.Dataset. The entire dataset to be split.
          validation_split: Float. The split ratio for the validation set.
  
      # Raises
          ValueError: If the dataset provided is too small to be split.
  
      # Returns
          A tuple of two tf.data.Dataset. The training set and the validation set.
      """
      num_instances = dataset.reduce(
          np.int64(0), lambda x, _: x + 1
      ).numpy()
      if num_instances < 2:
          raise ValueError(
              "The dataset should at least contain 2 batches to be split."
          )
      validation_set_size = min(
          max(int(num_instances * validation_split), 1),
          num_instances - 1,
      )
      train_set_size = num_instances - validation_set_size
      train_dataset = dataset.take(train_set_size)
      validation_dataset = dataset.skip(train_set_size)
      return train_dataset, validation_dataset
  
file_path: autokeras/autokeras/utils/data_utils.py
imports: import numpy
  import tensorflow
  from tensorflow import nest
label_desc: Use image node_id 3 for calling a global function with example usage: split_dataset(dataset, validation_split) and returns: train_dataset,  validation_dataset