在下面的示例中,我从文件中读取数据,对其进行解码并使用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])
答案 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])