我的理解是,最好的做法是对每个时期的训练样本进行洗牌,以便每个小批量包含整个数据集的一个很好的随机样本。如果我将整个数据集转换为包含 TFRecords 的单个文件,那么在加载整个数据集的情况下如何实现这种改组?我的理解是,没有对 TFRecord 文件进行有效的随机访问。因此,具体来说,我正在寻找有关如何在此场景中使用 TFRecord 文件的指导。
事实并非如此 - 您可以通过将输入分成多个输入数据文件,然后处理它们来稍微改进混合正如这个答案中所解释的 https://stackoverflow.com/questions/34258043/getting-good-mixing-with-many-input-datafiles-in-tensorflow.
如果您需要任何接近“完美”的洗牌,则需要将其读入内存,但在实践中,对于大多数事情,您可能只需分割成 100 或 1000 个文件,然后使用洗牌即可获得“足够好”的洗牌队列足够大,可以容纳 8-16 个文件的数据。
我内心渴望编写一个可以溢出到磁盘的外部随机洗牌队列,但它在我的优先级列表中非常低——如果有人想贡献一个,我自愿审查它。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)