TensorFlow:如何检查数据输入管道中的瓶颈?

时间:2017-06-28 08:57:11

标签: machine-learning tensorflow deep-learning

我目前正在使用tf-slim在我的模型中创建和读取tfrecord文件,并且通过这种方法可以使用自动张量板可视化显示:

  1. tf.train.batch Bosnia,1 Bosnia and Herzegovina,1 river,2 可视化,始终接近0值。我相信这应该取决于dequeue操作给tf.train.batch FIFO队列提供其张量的速度。

  2. 并行阅读器batch/fraction_of_32_fullparallel_read/filenames/fraction_of_32_full可视化,始终为1.0值。我相信这个操作是从tfrecords中提取张量并将它们放入准备好出队的队列中。

  3. 我的问题是:我的出列操作是否太慢,导致我的模型评估出现瓶颈?

    为什么" fraction_of_32"虽然我使用256的批量大小,但仍然出现?另外,队列分数值是1.0的理想情况吗?因为这意味着数据总是准备好让GPU继续工作。

    如果我的出队行动太慢,我如何实际提高出队速度?我检查了tf-slim的源代码,似乎解码器嵌入了我正在使用的功能中,而且我不确定是否有外部工作方式在它周围。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。如果batch / fraction_of_32_full接近于零,则意味着您比生成数据更快地消耗数据。

32是队列的默认大小,与批量大小无关。明智的做法是将其设置为至少与批量大小一样大。

这是相关文档:https://www.tensorflow.org/api_docs/python/tf/train/batch

设置num_threads = multiprocessing.cpu_count()capacity = batch_size可以帮助保持队列满。