TensorFlow:如果训练批处理已经是并行的出列例子了吗?

2024-09-30 06:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

在TensorFlow slim文档中,有一个ParallelReader对象,它可以通过让多个读取器将示例字符串引入队列来并行读取TFRecords数据。不过,如果我没弄错的话训练批处理从队列中取出示例,并且能够与参数num_threads并行执行。如果是这种情况,是否有必要使批创建和数据读取的速度相同,否则会导致批创建速度减慢?在

实际上,我不太确定出列操作是否发生在训练批处理或者当一个队列运行器被手动创建以使示例出列时,我相信训练批处理可以有效地替代队列运行器操作。这是对的吗?在


Tags: 数据对象字符串文档示例参数队列tensorflow
1条回答
网友
1楼 · 发布于 2024-09-30 06:23:17

就第一段而言:答案是输入管道中的每个步骤都应该有足够的带宽来为模型提供数据(可能不会太多)。如果从一个队列移动到另一个队列很快,但是没有足够的数据被输入到第一个队列(例如,由于I/O问题),则很容易遇到瓶颈。您还可以想象有大量的并行读卡器和大量的I/O带宽,但是只有一个线程负责收集所有这些示例,这是一个瓶颈。一些背面的计算可能会有所帮助,但最终您应该是monitoring the number of examples in each queue。在

至于第二个问题,tf.train.batch does start its own queue runner。实际的排队/出列是异步进行的,这就是为什么监控队列大小以确保训练不会比输入管道产生数据的速度更快而消耗数据。在

相关问题 更多 >

    热门问题