在张量流中读取大型数据集
reading a large dataset in tensorflow
我不太清楚文件队列是如何工作的。我正在尝试使用像 imagenet 这样的大型数据集作为输入。所以预加载数据不是这样的,所以我想知道如何使用文件队列。根据教程,我们可以将数据转换为TFRecords文件作为输入。现在我们有了一个大的 TFRecords 文件。因此,当我们为 reader 指定一个 FIFO 队列时,是否意味着程序每次都会获取一批数据并提供图形而不是加载整个数据文件?
pre-fetching 的数量取决于您的队列容量。如果您使用 string_input_producer
作为文件名并使用 batch
作为批处理,您将有 2 个队列 - 文件名队列和由批处理创建的预取队列。 batch
创建的队列默认容量为 32
,由 batch(...,capacity=)
参数控制,因此它最多可以预取 32
个图像。如果您遵循 TensorFlow 官方指南中的概述,处理示例(batch
之后的所有内容)将在主线程 Python 中发生,而填充队列将在线程 created/started 中由 batch/start_queue_runners
, 因此通过网络预取新数据和 运行 预取数据将同时发生,当队列变满或变空时阻塞。
我不太清楚文件队列是如何工作的。我正在尝试使用像 imagenet 这样的大型数据集作为输入。所以预加载数据不是这样的,所以我想知道如何使用文件队列。根据教程,我们可以将数据转换为TFRecords文件作为输入。现在我们有了一个大的 TFRecords 文件。因此,当我们为 reader 指定一个 FIFO 队列时,是否意味着程序每次都会获取一批数据并提供图形而不是加载整个数据文件?
pre-fetching 的数量取决于您的队列容量。如果您使用 string_input_producer
作为文件名并使用 batch
作为批处理,您将有 2 个队列 - 文件名队列和由批处理创建的预取队列。 batch
创建的队列默认容量为 32
,由 batch(...,capacity=)
参数控制,因此它最多可以预取 32
个图像。如果您遵循 TensorFlow 官方指南中的概述,处理示例(batch
之后的所有内容)将在主线程 Python 中发生,而填充队列将在线程 created/started 中由 batch/start_queue_runners
, 因此通过网络预取新数据和 运行 预取数据将同时发生,当队列变满或变空时阻塞。