title: TensorFlow dataset.shuffle() behavior when used with repeat() and batch()
body: <p>What exactly will this do?</p>
  
  <pre><code>dataset = tf.data.Dataset.from_tensor_slices([0, 0, 0, 1, 1, 1, 2, 2, 2])
  dataset.shuffle(buffer_size=5).repeat().batch(3)
  </code></pre>
  
  <p>I've noticed several related questions but none of them answered exactly my concern. I'm confused with what <code>shuffle(buffer_size)</code> is doing. I understand it will take 5 first examples <code>[0, 0, 0, 1, 1]</code> into memory, but what will it do next with this buffer? And how does this buffer interact with <code>repeat()</code> and <code>batch()</code>?</p>