我目前正在使用 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/