Tensorflow 是否需要调用Dataset.repeat()?

Tensorflow 是否需要调用Dataset.repeat()?,tensorflow,Tensorflow,在中,我看到数据集就像 AUTOTUNE = tf.data.experimental.AUTOTUNE train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE) 但我也看到其他人的代码,如: ds = ds.cache() ds = ds.repeat() # ds is a dataset ds = ds.shuffle(buffer_size=1000) 我假设从技术上讲,数据集将在每个训练纪元之

在中,我看到数据集就像

AUTOTUNE = tf.data.experimental.AUTOTUNE
train_ds = train_ds.cache().shuffle(1000).prefetch(buffer_size=AUTOTUNE)
但我也看到其他人的代码,如:

ds = ds.cache()
ds = ds.repeat() # ds is a dataset 
ds = ds.shuffle(buffer_size=1000)
我假设从技术上讲,数据集将在每个训练纪元之后被全部消耗,并且应该被重复以输入下一个纪元的洗牌缓冲区

但是为什么第一个教程可以不重复地工作呢?我是否应该显式调用ds repeat?

因此,根据repeat确定样本在给定数据集中可以重复多少次

dataset=tf.data.dataset.from_tensor_切片([1,2,3])
数据集=数据集。重复(3)
列表(dataset.as\u numpy\u迭代器())
[1,2,3,1,2,3,1,2,3]

理想情况下,您不必重复数据集。只有当你想通过它的多个样本,它才有区别。根据您的洗牌,它将在重复数据集之后洗牌数据集。请在
repeat()
中包含一些参数或值,不要保留任何参数或值。

谢谢,但我在文档中没有看到类似“在给定的历元或培训过程中”的措辞?我使用了培训过程或历元,因为它最终取决于数据集的使用方式。如果您在每个历元时或之后都要重新洗牌,并且不想增加功能,则无需使用
repeat
。不要在计数为空的情况下使用repeat,因为它将继续创建重复的实例,直到缓冲区大小被填满。此外,我将删除
给定的历元或培训通行证,因为它可能会混淆