我正在使用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
是否始终是数据集的长度?这会影响培训表现吗?
答案 0 :(得分:7)
无论您选择何种缓冲区大小,都将使用所有样本,它只会影响随机播放的随机性。
如果缓冲区大小为100,则意味着Tensorflow将保留接下来100个样本的缓冲区,并将随机选择这100个样本中的一个。然后它将下一个元素添加到缓冲区。
所以,如果buffer_size = 1则根本没有shuffle,如果buffer_size> data_set_size保证完美均匀的随机混洗。
我强烈建议在创建TFrecords之前对数据集进行随机播放,并保持较小的缓冲区大小。