我目前正在使用tf-slim来创建tfrecord文件并将其读取到我的模型中,通过这种方法,可以使用自动的张量板可视化显示:
tf.train.batch batch/fraction_of_32_full
可视化效果,始终接近0值。我认为这应该取决于出队操作将tf.train.batch FIFO队列的张量给予多快。
并行读取器parallel_read/filenames/fraction_of_32_full
和paralell_read/fraction_of_5394_full
可视化效果,始终为1.0值。我相信此操作是从tfrecords中提取张量并将它们放入队列中以备出队的原因。
我的问题是:我的出队操作是否太慢并且导致模型评估出现瓶颈?
尽管我使用的批次大小为256,为什么会出现“ fraction_of_32”?此外,理想的情况是队列分数值为1.0?因为这意味着数据随时可以供GPU使用。
如果我的出队操作太慢,如何实际提高出队速度?我已经检查了tf-slim的源代码,似乎解码器已嵌入到我正在使用的函数中,并且我不确定是否有外部方法可以解决该问题。
最佳答案
我有一个类似的问题。如果batch / fraction_of_32_full接近于零,则意味着使用数据的速度比生成数据的速度快。
不管您的批处理大小如何,队列的默认大小都是32。明智的做法是将其设置为至少与批量大小一样大。
这是相关文档:https://www.tensorflow.org/api_docs/python/tf/train/batch
设置num_threads = multiprocessing.cpu_count()
和capacity = batch_size
可以帮助保持队列已满。
关于machine-learning - TensorFlow:如何检查数据输入管道中的瓶颈?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44797985/