TensorFlow:将单个例子出列为瓶颈吗?

时间:2017-02-08 12:29:26

标签: python machine-learning tensorflow computer-vision deep-learning

在TF-slim documentation(参考read函数)中,我意识到有多个读者将已解析的TF示例提供(入队)到队列中,但是有一个函数dequeue,一次只能将一个元素出列。当我创建批次时,这是否会导致我的培训出现瓶颈?是否更好地使用dequeue_many

当我之前训练我的模型时,我注意到TensorBoard上并行读取器队列始终是满的 - 这是一个令人担忧的原因还是排队操作应该比出列操作更快?一般来说,出列操作是否应该排除与排队操作的读者数量一样多的例子?

以下是我对队列的可视化: Queue Visualization

我的猜测是,只要有一个min_after_dequeue参数可以确保队列中的足够多个示例在任何一个点被洗牌,那么任何时候都有更多的例子可能会出现更好的事实(事实上,多久一次)洗牌发生了?)。但是,一次性将许多例子出局的交易是什么呢?

1 个答案:

答案 0 :(得分:2)

这个answer显示了如何进行性能分析,对于该示例,每个出队操作在一个线程上花费了60微秒。如果在出列之前使用tf.batch,它将并行运行多个出列操作,因此平均每个deqeueue可能会降低到12微秒。这意味着如果您的计算时间少于12微秒,它将只是一个瓶颈。一段时间我检查时,花了5微秒来安排单个GPU内核调用,因此任何超过2个GPU操作的网络将需要更长的时间来评估,dequeue将不会成为瓶颈。