Defined in tensorflow/contrib/data/python/ops/

See the guide: Dataset Input Pipeline > Transformations on existing datasets

Shuffles and repeats a Dataset returning a new permutation for each epoch.

dataset.apply(, count))

is equivalent to

dataset.shuffle(buffer_size, reshuffle_each_iteration=True).repeat(count)

The difference is that the latter dataset is not serializable. So, if you need to checkpoint an input pipeline with reshuffling you must use this implementation.


  • buffer_size: A tf.int64 scalar tf.Tensor, representing the maximum number elements that will be buffered when prefetching.
  • count: (Optional.) A tf.int64 scalar tf.Tensor, representing the number of times the dataset should be repeated. The default behavior (if count is None or -1) is for the dataset be repeated indefinitely.
  • seed: (Optional.) A tf.int64 scalar tf.Tensor, representing the random seed that will be used to create the distribution. See tf.set_random_seed for behavior.


A Dataset transformation function, which can be passed to