TensorFlow: 如果tf.train.batch已经在并行出队样本,那么并行排队样本是否会加速批次创建?

在TensorFlow-slim文档中,有一个ParallelReader对象,可以通过多个读取器并行读取TFRecords数据,将样本字符串放入队列。然而,如果我没有记错的话,tf.train.batch可以从队列中出队样本,并且可以通过参数num_threads实现并行操作。如果是这样的话,是否必须确保批次创建和数据读取的速度相同,否则一方会导致批次创建速度变慢?

实际上,我不太确定出队操作是在tf.train.batch中进行的,还是在手动创建queue_runner时进行的,因为我认为tf.train.batch可以有效地替代queue_runner操作。这是正确的吗?


回答:

关于你的第一段话:答案是你的输入管道的每个步骤都应该有足够的带宽来供给模型(可能不会太多)。例如,如果从一个队列移动到另一个队列的速度很快,但没有足够的数据输入到第一个队列(例如因为I/O问题),你很容易遇到瓶颈。你也可以想象有大量的并行读取器和充足的I/O带宽,但只有一个线程负责收集所有这些样本成为瓶颈。一些粗略的计算可能会有所帮助,但最终你应该监控每个队列中的样本数量

至于第二个问题,tf.train.batch确实会启动自己的queue runner。实际的入队/出队操作是异步进行的,这就是为什么监控队列大小以确保训练不会比输入管道产生数据更快地消耗数据很重要的原因。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注