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()
逐个以批处理的形式获取数据。
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()
逐个以批处理的形式获取数据。