title: Does `tf.data.Dataset.repeat()` buffer the entire dataset in memory?
body: <p>
  Looking at this code example from the TF documentation:</p>
  
  <pre class="lang-py prettyprint-override"><code>filenames = ["/var/data/file1.tfrecord", "/var/data/file2.tfrecord"]
  dataset = tf.data.TFRecordDataset(filenames)
  dataset = dataset.map(...)
  dataset = dataset.shuffle(buffer_size=10000)
  dataset = dataset.batch(32)
  dataset = dataset.repeat(num_epochs)
  iterator = dataset.make_one_shot_iterator()
  </code></pre>
  
  <p>Does the <code>dataset.repeat(num_epochs)</code> require that the entire dataset be loaded into memory? Or is it re-initializing the dataset(s) that came before it when it receives an end-of-dataset exception?</p>
  
  <p>The documentation is ambiguous about this point.</p>