我遇到了TensorFlow的Deep MNIST for Experts,并希望对其进行调整,以便更有效地使用GPU。由于feed_dict似乎非常慢,我使用tf.train.shuffle_batch
和FIFOQueue
实现了一个输入管道,以便将数据提供给模型。
Here's a Gist with the stock implementation of the TensorFlow guide和here's a Gist with my attempt at an optimized implementation.
现在在TensorFlow页面的示例中,精确度在几千次迭代后很快接近1。但是在我的代码中,除了队列实现是相同的模型之外,准确度似乎在~0.05和~0.15之间振荡。此外,在几百次迭代之后损失达到约2.3并且没有比那更远地减少。
另一个值得注意的一点是:当我对创建的原始批次和后续迭代中使用的批次进行比较时,它们看起来是等效的。也许问题在于我的排队/出队但我不确定如何解决它。如果有人发现我的实现有任何问题,我们将非常感谢一些指示!
答案 0 :(得分:0)
找到解决方案。结果tf.train.shuffle_batch
隐含地实现了RandomShuffleQueue
。将tf.train.shuffle_batch
的结果加载到FIFOQueue
可能会导致FIFOQueue
不更新输入批处理,而标签正在更新,因为它们未被传递到FIFOQueue
}。删除FIFOQueue
完全解决了我的问题。