TF记录和记录混洗
我的理解是,为每个时期洗牌训练样本是一个很好的做法,以便每个小批量包含整个数据集的一个很好的随机样本。 如果我将整个数据集转换为包含TFRecords的单个文件,那么在加载整个数据集之后如何实现这种混洗? 我的理解是,没有有效的随机访问TFRecord文件。 所以,具体而言,我正在寻找如何在这种情况下使用TFRecord文件的指导。
这不是 - 你可以通过将你的输入分成多个输入数据文件来改善混合,然后按照这个答案中的解释来处理它们。
如果您需要接近“完美”洗牌的任何内容,您需要将其读入内存中,但实际上对于大多数情况,您可能只需分割成100或1000个文件,然后使用洗牌即可“足够好”地进行洗牌这个队列足够容纳8-16个文件的数据。
我脑海里痒痒地写了一个外部随机随机排队队列,可能会泄露到磁盘上,但是我的优先级列表非常低 - 如果有人想贡献一个,我会自愿检查它。 :)
实际上,现在您在保存到TFRecords之前不必担心洗牌。 这是因为阅读TFRecords(目前)推荐的方法使用tf.data.TFRecordDataset
它实现.shuffle()
方法。