【问题标题】:TensorFlow TFRecordDataset shuffle buffer_size behaviorTensorFlow TFRecordDataset shuffle buffer_size 行为
【发布时间】:2018-02-15 22:09:54
【问题描述】:

我不清楚tf.TFRecordDataset 中的buffer_size 参数的作用。假设我们有以下代码:

dataset = dataset.shuffle(buffer_size=10000).repeat().batch(batch_size)

这是否意味着只有前 10k 个样本将被使用并永远重复,还是我会遍历整个数据集?如果不是,它到底是什么?那么这段代码呢?

dataset = dataset.repeat().shuffle(buffer_size=10000).batch(batch_size)

我注意到this post,但它没有提到buffer_size

【问题讨论】:

  • 官方文档中有一个标准示例。我认为buffer_size类似于数据预取的内存容量。

标签: python tensorflow tensorflow-datasets


【解决方案1】:

这个answer 可能有助于更好地理解shuffle 方法的buffer_size 参数。

简而言之,数据集的缓冲区中总是有超过buffer_size 个元素,并且每次添加元素时都会对该缓冲区进行洗牌。

因此,缓冲区大小为 1 就像不洗牌,拥有数据集长度的缓冲区就像传统的洗牌。


要了解shuffle和repeat数据集的正确顺序,请看官方performance guide

最佳做法通常是随机播放然后重复,因为这将确保您在每个时期都能看到整个数据集。

【讨论】:

  • 谢谢,另一个答案解释得很好,记住它真的很有用!
猜你喜欢
  • 2021-01-29
  • 2020-09-04
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
相关资源
最近更新 更多