TensorFlow:单个示例的出列是否是一个瓶颈?

2024-05-18 07:12:48 发布

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

在TF slimdocumentation(参考read函数)中,我意识到有多个读取器将解析过的TF示例馈送(排队)到一个队列中,但是有一个函数dequeue,一次只对一个元素进行出列。当我创建批处理时,这是否会对我的培训造成瓶颈?使用dequeue_many是否更好?在

当我之前训练我的模型时,我在TensorBoard上注意到parallelreader队列总是满的——这是一个值得关注的原因还是排队操作应该比出列操作快?一般来说,出列操作是否应该与操作排队的读卡器数量一样多?在

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

我的猜测是,只要有一个min_-after-dequeue参数确保队列中有足够多的示例在任何一点被洗牌(事实上,洗牌发生的频率是多少),那么在任何一次都有更多的示例出列可能是好的。但是,一次把许多例子排出来有什么好处呢?在


Tags: 函数模型元素示例read队列tf读取器
1条回答
网友
1楼 · 发布于 2024-05-18 07:12:48

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

相关问题 更多 >