首页 > 解决方案 > tf.data.Dataset.repeat() 与 iterator.initializer 之间的区别

问题描述

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

标签: pythontensorflowrepeat

解决方案


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

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

iterator.get_next()只是从tf.data.Dataset. 您正在逐批迭代数据集。

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


推荐阅读