tf.keras.utils.split_dataset

Splits a dataset into a left half and a right half (e.g. train / test).

dataset A tf.data.Dataset, a torch.utils.data.Dataset object, or a list/tuple of arrays with the same length.
left_size If float (in the range [0, 1]), it signifies the fraction of the data to pack in the left dataset. If integer, it signifies the number of samples to pack in the left dataset. If None, defaults to the complement to right_size. Defaults to None.
right_size If float (in the range [0, 1]), it signifies the fraction of the data to pack in the right dataset. If integer, it signifies the number of samples to pack in the right dataset. If None, defaults to the complement to left_size. Defaults to None.
shuffle Boolean, whether to shuffle the data before splitting it.
seed A random seed for shuffling.
preferred_backend String, specifying which backend (e.g.; "tensorflow", "torch") to use. If None, the backend is inferred from the type of dataset - if dataset is a tf.data.Dataset, "tensorflow" backend is used, if dataset is a torch.utils.data.Dataset, "torch" backend is used, and if dataset is a list/tuple/np.array the current Keras backend is used. Defaults to None.

A tuple of two dataset objects, the left and right splits. The exact type of the returned objects depends on the preferred_backend. For example, with a "tensorflow" backend, tf.data.Dataset objects are returned. With a "torch" backend, torch.utils.data.Dataset objects are returned.

Example:

data = np.random.random(size=(1000, 4))
left_ds, right_ds = keras.utils.split_dataset(data, left_size=0.8)
# For a tf.data.Dataset, you can use .cardinality()
# >>> int(left_ds.cardinality())
# 800
# For a torch.utils.data.Dataset, you can use len()
# >>> len(left_ds)
# 800