2016-07-24 145 views
0

我正在使用tensorflow在具有55,000个训练图像(来自mnist的原始60,000图像的5,000张图像被保留用于验证)的mnist数据集上进行练习。使用tf.train.shuffle_batch循环数据多次

目前我正在使用tf.TFRecordReader读入训练tf.record,然后使用tf.train.shuffle_batch读入训练输入。这个过程可以在https://bitbucket.org/jackywang529/tesorflow-sandbox/src的mnist.py的输入函数中找到。

不过,我一直步骤之后,提示以下错误:2720

tensorflow.python.framework.errors.OutOfRangeError: RandomShuffleQueue '_1_input/shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 100, current size 0) 

因此,我有2个问题:

  1. 为什么会步2720之后?考虑到每一步都需要100个批次,而且我有55,000个训练图像?如果它超出范围,在步骤550左右不应该这样做吗?

  2. 如何使用tf.train.shuffle_batch永远循环遍历数据集?我不确定这是否是shuffle_batch实现或其他设置的限制。

谢谢!

+0

从你的队列中读取其他内容吗?例如,如果您有汇总统计信息,它们将消耗队列中的元素。如果你将你的shuffle_batch连接到string_input_producer之类的东西,默认行为是永久生成条目,你应该检查你是否设置了'epochs'参数 –

+0

谢谢Yaroslav!你是对的,菲利普在下面的回复中也是如此:) – Banana

回答

2

您是否检查过您的tf.train.string_input_producer的参数num_epochs=None,以便它无限循环?