首页 > 解决方案 > tensorflow.data.Dataset repeat(count=None) 方法是如何工作的

问题描述

Tensorflowdata.Dataset有一个方法repeat(count=None)https://www.tensorflow.org/api_docs/python/tf/data/Dataset?version=stable#repeat),它重复这个数据集,所以每个原始值都会被看到count。如果 count 设置为None(默认情况下),则数据集将无限重复。我的问题是,在极端情况下,无限大小的数据集如何处理和存储在内存中?当我尝试使用 检查其内容as_numpy_iterator()时,系统会卡住。

标签: tensorflow

解决方案


data.Dataset不是基于该repeat(count=X)方法的数据的简单重复。它返回一个 python 可迭代对象,生成一个迭代器对象。

迭代器是实现 next 的对象,它预期返回返回它的可迭代对象的下一个元素,并在没有更多元素可用时引发 StopIteration 异常。 来源

具有Dataset“无限重复”将“无限”加载与您的批量大小相等的样本数量。所以,一般来说,你在内存中存储的是一批样本。此外,使用大小大于数据集的缓冲区进行改组将有助于您根据实际数据集中元素的分布获得具有代表性的批次。


推荐阅读