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

时间:2017-08-17 23:09:32

标签: python python-3.x tensorflow mnist tensorflow-gpu

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

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

现在在TensorFlow页面的示例中,精确度在几千次迭代后很快接近1。但是在我的代码中,除了队列实现是相同的模型之外,准确度似乎在~0.05和~0.15之间振荡。此外,在几百次迭代之后损失达到约2.3并且没有比那更远地减少。

另一个值得注意的一点是:当我对创建的原始批次和后续迭代中使用的批次进行比较时,它们看起来是等效的。也许问题在于我的排队/出队但我不确定如何解决它。如果有人发现我的实现有任何问题,我们将非常感谢一些指示!

1 个答案:

答案 0 :(得分:0)

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