tf.data.Dataset.shuffle():缓冲区的工作原理如何?

时间:2019-02-18 20:08:39

标签: tensorflow

tf.data.Dataset.shuffle()的工作原理如何?特别是该方法的缓冲区如何工作?

似乎在任何地方都没有记录。

以一个例子来使问题更具体:

假设我们的数据集由10个TFRecord文件组成,每个文件包含1000个示例。假设buffer_size设置为2500,批处理大小设置为32。现在,这是我(可能是错误的)对运行时发生的事情的理解:

  1. 前两个TFRecord的所有2000个示例以及第三个TFRecord的500个示例都已加载到内存中。
  2. 内存中的2500个示例中有32个被随机地均匀挑选(或者至少this的答案告诉我了。)
  3. 现在,迭代器产生了第一批32个示例,也就是说,内存中现在剩下2468个示例。
  4. 正在加载尚未存储的第三个TFRecord文件的下32个示例,以将缓冲区填充到2500。
  5. 缓冲区中接下来的32个示例是随机抽取的。
  6. 依此类推。

问题:

  1. 以上是否正确?如果没有,那么它如何工作?
  2. 混洗方法的buffer_size是唯一确定决定随时有多少tf.data.TFRecordDataset的示例的决定性因素吗?

0 个答案:

没有答案