我创建了一个tensorflow数据集,使其可重复,将其改组,分为若干批,并构造了一个迭代器以获取下一批。但是,当我这样做时,有时元素是重复的(在批内和批间),尤其是对于小型数据集。为什么?

最佳答案

与您自己的答案中所说的不同,否,改组然后重复执行不会解决您的问题
问题的主要来源是您先批处理,然后随机播放/重复。这样,批次中的项目将始终从输入数据集中的连续样本中获取。
批处理应该是您在输入管道中执行的最后一项操作。
稍微扩大问题。
现在,的顺序分别是洗牌,重复和批处理,但这并不是您的想法。引用input pipeline performance guide:

翻盖

  • 重复,然后随机播放:您无法保证所有样本都在一个时期内得到处理。
  • 随机播放,然后重复:确保在下一次重复开始之前将所有样本都进行处理,但是会(稍微)降低性能。

  • 无论您选择哪个,在批处理之前都要这样做。

    关于tensorflow - 更改batch(),shuffle()和repeat()的顺序时输出差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49915925/

    10-11 16:03