说我在一个tfrecord中有100,000个示例。我使用缓冲区大小100进行洗牌,在我们使用完所有示例并将另外100个示例拖入洗牌之后,将每100个示例洗牌一次。还是当我们使用训练数据时,它也将填写后面的示例,并从随机播放中均匀地绘制数据,以便在某个时间点,每个示例都有一定的可能性位于缓冲区中?
它认为后者更有意义。随机播放功能是如何实现的?我抬起头,但是找到了解释该机制的来源。
谢谢。
答案 0 :(得分:1)
取自here
Dataset.shuffle()
转换随机地随机改变输入 数据集使用与tf.RandomShuffleQueue类似的算法: 保持固定大小的缓冲区并统一选择下一个元素 从该缓冲区中随机获取。
您可以找到操作here的定义,该定义指向ShuffleDataset
。
另外,请注意,随机播放操作还允许您确定批处理的绘制方式(例如,在一个时期之后,是否对数据集进行了总体伪随机随机播放)。