【问题标题】:reading a large dataset in tensorflow在 tensorflow 中读取大型数据集
【发布时间】:2016-01-25 23:46:13
【问题描述】:

我不太确定文件队列是如何工作的。我正在尝试使用像 imagenet 这样的大型数据集作为输入。所以预加载数据不是这样的,所以我想知道如何使用文件队列。根据教程,我们可以将数据转换为 TFRecords 文件作为输入。现在我们有一个大的 TFRecords 文件。那么当我们为 reader 指定一个 FIFO 队列时,是不是意味着程序每次都会获取一批数据并提供给图形而不是加载整个数据文件?

【问题讨论】:

    标签: python deep-learning tensorflow


    【解决方案1】:

    预取的数量取决于您的队列容量。如果您使用string_input_producer 作为文件名并使用batch 进行批处理,您将拥有2 个队列——文件名队列和批处理创建的预取队列。 batch 创建的队列默认容量为32,由batch(...,capacity=) 参数控制,因此它最多可以预取32 图像。如果您遵循 TensorFlow 官方指南中的大纲,处理示例(batch 之后的所有内容)将发生在 Python 主线程中,而填充队列将发生在由 batch/start_queue_runners 创建/启动的线程中,因此预取新数据并运行预取数据通过网络将同时发生,当队列满或空时阻塞。

    【讨论】:

    • 所以所有的“读取”、“解析”和“预处理”步骤都只是定义为一个管道,对吧?只有当真正的数据进来并填满队列时,真正的动作才会发生。是机制吗?
    • 是的。这是一个管道,所以需要batch 输出的东西会阻塞,直到另一个线程将足够多的东西排入这个队列
    • 好的,很有帮助。非常感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2017-10-27
    • 2018-07-11
    • 1970-01-01
    • 2018-03-31
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多