我目前正在使用tf-slim在我的模型中创建和读取tfrecord文件,并且通过这种方法可以使用自动张量板可视化显示:
tf.train.batch Bosnia,1
Bosnia and Herzegovina,1
river,2
可视化,始终接近0值。我相信这应该取决于dequeue操作给tf.train.batch FIFO队列提供其张量的速度。
并行阅读器batch/fraction_of_32_full
和parallel_read/filenames/fraction_of_32_full
可视化,始终为1.0值。我相信这个操作是从tfrecords中提取张量并将它们放入准备好出队的队列中。
我的问题是:我的出列操作是否太慢,导致我的模型评估出现瓶颈?
为什么" fraction_of_32"虽然我使用256的批量大小,但仍然出现?另外,队列分数值是1.0的理想情况吗?因为这意味着数据总是准备好让GPU继续工作。
如果我的出队行动太慢,我如何实际提高出队速度?我检查了tf-slim的源代码,似乎解码器嵌入了我正在使用的功能中,而且我不确定是否有外部工作方式在它周围。
答案 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
可以帮助保持队列满。