tf.data.Dataset.repeat() 与 iterator.initializer 之间的区别

Difference between tf.data.Dataset.repeat() vs iterator.initializer

Tensorflow 有 tf.data.Dataset.repeat(x) 遍历数据 x 次。它还具有 iterator.initializer ,当 iterator.get_next() 耗尽时,可以使用 iterator.initializer 重新开始迭代。我的问题是使用 tf.data.Dataset.repeat(x) 技术与 iterator.initializer 有区别吗?

众所周知,模型训练过程中的每个时期都会接收整个数据集并将其分成批次。这发生在每个时代。 假设,我们有一个包含 100 个样本的数据集。在每个时期,100 个样本被分成 5 批(每批 20 个)以将它们提供给模型。但是,如果我必须训练模型 5 个时期,我需要 重复 数据集 5 次。意思是,重复数据集中的总元素将有 500 个样本(100 个样本乘以 5 倍)。

现在,这项工作是通过tf.data.Dataset.repeat()方法完成的。通常我们将 num_epochs 参数传递给方法。

iterator.get_next()只是从tf.data.Dataset获取下一批数据的一种方式。您正在逐批迭代数据集。

这就是区别。 tf.data.Dataset.repeat() 重复数据集中的样本,而 iterator.get_next() 逐个以批处理的形式获取数据。