在没有 feed_dict 使用队列的情况下实现 TensorFlow 的 MNIST 示例的问题

Issues with implementing TensorFlow's MNIST example without feed_dict using a queue

我遇到了 TensorFlow 的 Deep MNIST for Experts 并希望对其进行调整以便在 GPU 上更高效地使用它。由于 feed_dict 似乎非常慢,我使用 tf.train.shuffle_batchFIFOQueue 实现了一个输入管道,以将数据输入模型。

Here's a Gist with the stock implementation of the TensorFlow guide and here's a Gist with my attempt at an optimized implementation.

现在在 TensorFlow 页面上的示例中,在几千次迭代后准确率很快接近 1。但是在我的代码中,除了队列实现是相同的模型外,准确度似乎在 ~0.05 和 ~0.15 之间波动。此外,在几百次迭代后损失达到约 2.3,并且不会比这降低太多。

另一个值得注意的点:当我比较原始创建的批次和后续迭代中使用的批次时,它们似乎是等价的。也许问题出在我的 queuing/dequeuing 上,但我不确定如何解决它。如果有人发现我的实施有任何问题,将不胜感激!

找到解决方案。结果 tf.train.shuffle_batch 隐式实现了 RandomShuffleQueue。将 tf.train.shuffle_batch 的结果加载到 FIFOQueue 可能导致 FIFOQueue 不更新输入批次,而标签正在更新,因为它们没有被传递到 FIFOQueue ].删除 FIFOQueue 完全解决了我的问题。