当前位置:  开发笔记 > 人工智能 > 正文

更改batch(),shuffle()和repeat()的顺序时输出差异

如何解决《更改batch(),shuffle()和repeat()的顺序时输出差异》经验,为你挑选了1个好方法。

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



1> GPhilo..:

不像您自己的答案中所述,不,改组然后重复进行并不能解决您的问题

问题的主要根源是先批处理,然后随机播放/重复。这样,批次中的项目将始终从输入数据集中的连续样本中获取。 批处理应该是您在输入管道中执行的最后一项操作

稍微扩大问题。

现在,在你随机,重复和批次的顺序有差别,但它不是你的想法。引用输入管道性能指南:

如果在随机变换之前应用重复变换,则时期边界将变得模糊。也就是说,某些元素可以在其他元素出现一次之前重复进行。另一方面,如果在重复变换之前应用了shuffle转换,则在与shuffle转换的内部状态初始化有关的每个时期的开始,性能可能会降低。换句话说,前者(随机播放之前重复播放)提供了更好的性能,而后者(重复播放之前重复播放)提供了更强的排序保证。

翻盖

重复,然后随机播放:您无法保证所有样本都在一个时期内得到处理。

随机播放,然后重复:确保在下一次重复开始之前将所有样本都进行处理,但是会造成(轻微)性能损失。

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

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有