TensorFlow Dataset.shuffle - 大型数据集

时间:2017-12-12 20:54:51

标签: machine-learning tensorflow tfrecord

我正在使用TensorFlow 1.2和20G TFRecord文件中的数据集。该TFRecord文件中有大约50万个样本。

如果我选择的值小于buffer_size数据集中的记录数量,则只会使用TFRecord中的前N个记录。 https://www.tensorflow.org/api_docs/python/tf/contrib/data/Dataset#shuffle

例如,如果buffer_size = 100,似乎只使用了前100条记录。

问题

buffer_size是否始终是数据集的长度?这会影响培训表现吗?

1 个答案:

答案 0 :(得分:7)

无论您选择何种缓冲区大小,都将使用所有样本,它只会影响随机播放的随机性。

如果缓冲区大小为100,则意味着Tensorflow将保留接下来100个样本的缓冲区,并将随机选择这100个样本中的一个。然后它将下一个元素添加到缓冲区。

所以,如果buffer_size = 1则根本没有shuffle,如果buffer_size> data_set_size保证完美均匀的随机混洗。

我强烈建议在创建TFrecords之前对数据集进行随机播放,并保持较小的缓冲区大小。