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

标签 machine-learning tensorflow deep-learning

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

  1. tf.train.batch batch/fraction_of_32_full 可视化,始终接近 0 值。我相信这应该取决于出队操作为 tf.train.batch FIFO 队列提供张量的速度。

  2. 并行读取器 parallel_read/filenames/fraction_of_32_fullparalell_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/

相关文章:

machine-learning - F1 分数不是精确率和召回率的调和平均值的原因可能是什么

python - TypeError : Cannot convert 0. 0 到 dtype int32 的 EagerTensor

python - 为什么这个 TensorFlow 实现不如 Matlab 的 NN 成功?

machine-learning - Keras 是否需要一种热编码?

matlab - 这两个用于 ML 中正则化 Logistic 回归的 Octave 语句有什么区别

python - Numpy 索引赋值的 Tensorflow 等价物

python - 在 Tensorboard 的 mnist 示例中生成了意外层

python - Tensorflow seq2seq 聊天机器人始终给出相同的输出

python - 连体模型不学习任何东西,总是将图像编码成零向量

r - 从 sae.dnn (deepnet) 转换为 mx.mlp (mxnet) 错误