为什么在以下代码中调用dequeue_op会抛出tensorflow.python.framework.errors.OutOfRangeError

时间:2016-02-12 13:21:37

标签: tensorflow

在下面的示例中,我从文件中读取数据,对其进行解码并使用tf.train.shuffle_batch创建批处理。我启动每个队列运行程序线程,然后获取我的批处理。它抛出outOfRange错误,好像我的数据队列是空的。我不明白为什么我开始每个队列跑步者。

filename_queue = tf.train.string_input_producer(source,shuffle=True)

example, label = decode_and_transform(filename_queue, ....)
examples, labels = tf.train.shuffle_batch([example, label], ...)

init_var = tf.initialize_all_variables()

sess = tf.Session()
sess.run(init_var)
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord, sess=sess)

# throw out of range error
img, lab = sess.run([examples, labels])

1 个答案:

答案 0 :(得分:1)

意外 tf.errors.OutOfRangeError的最常见原因是将队列中的元素排入队列的操作之一失败。通过手动运行上游代码(并且不调用decode_and_transform()来检查tf.train.start_queue_runners()函数中的某个操作是否失败:

# Runs the ops before `tf.train.shuffle_batch()`.
example_val, label_val = sess.run([example, label])