python - 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
吗?
解决方案
众所周知,模型训练过程中的每个 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()
一个接一个地以批次的形式获取数据。
推荐阅读
- python - 如何用python拟合指数函数
- javascript - JavaScript 中的模式匹配?
- python - Python在for循环中下载多个文件
- java - Chromebook 上的 Android 应用无法使用查看/获取用户事件
- c# - 与 dotnet core 3.0 mvc 身份验证反应(没有 dotnet core 默认身份验证)
- yum - 如何为静默 yum 安装过程指定参数?
- php - 为打印机格式化文本/纯文本
- regex - 用 Regex 或 AWK 替换引号中的文本
- grails - 用于组的 Grails Urlmapping 404
- c# - npgsql 说枚举未注册