Tensorflow:如何使用';输入数据读取器队列';?

Tensorflow:如何使用';输入数据读取器队列';?,tensorflow,Tensorflow,我有一些代码为tensorflow中的输入图像创建随机掩码 mask = get_random_mask(...) # Returns some tensor in the shape of the input images 但是,一批输入图像是使用 coord = tf.train.Coordinator() image_list, label_list , img_type = read_labeled_image_list(data_dir, data_list) images = tf

我有一些代码为tensorflow中的输入图像创建随机掩码

mask = get_random_mask(...) # Returns some tensor in the shape of the input images
但是,一批输入图像是使用

coord = tf.train.Coordinator()
image_list, label_list , img_type = read_labeled_image_list(data_dir, data_list)
images = tf.convert_to_tensor(image_list, dtype=tf.string)
labels = tf.convert_to_tensor(label_list, dtype=tf.string)
queue = tf.train.slice_input_producer([images, labels],shuffle=True)
image, label = read_images_from_disk(queue)
image_batch, label_batch = tf.train.batch([image, label], batch_size)
然后使用启动创建输入批处理数据的线程

config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sess = tf.Session(config=config)
init = tf.global_variables_initializer()
sess.run(init)
threads = tf.train.start_queue_runners(coord=coord, sess=sess)
但是,经过几次迭代后,程序失败,出现以下错误:

OutOfRangeError (see above for traceback): FIFOQueue '_1_create_inputs/batch/fifo_queue' is closed and has insufficient elements (requested 2, current size 0)
     [[Node: create_inputs/batch = QueueDequeueMany[_class=["loc:@create_inputs/batch/fifo_queue"], component_types=[DT_FLOAT, DT_UINT8, DT_FLOAT], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](create_inputs/batch/fifo_queue, create_inputs/batch/n)]]
我很确定这个错误是由以下事实造成的,即掩模的生产速度与输入图像和标签批次的生产速度不同。但是,我不知道如何告诉Tensorflow以相同的速度创建遮罩。有人有主意吗


我是否必须在与
图像\u列表
相同大小的开头创建随机遮罩列表

生产率不会导致这样的错误;下游队列将暂时阻塞。此错误似乎表明训练数据集已耗尽,并且没有给出再次读取它的指令(或者达到了显式的历元限制)。通常使用with
num\u epochs=None
(默认值)无限期地循环数据集。

我发现了错误。事实上,这个错误消息很容易引起误解。它与任何
FIFOQueue
元素不足(请求2个,当前大小为0)无关


在预处理过程中,我检查了每个张量维度。使用遮罩时,我的尺寸不匹配。不幸的是,“空队列”错误很容易引起误解。很抱歉这个糟糕的解决方案。仍然感谢您的帮助@Allen Lavoie

num_epochs=None
似乎已经是默认情况。我有一种感觉,TF无法调用张量中的值,而张量不是由
切片\u输入\u生产者管理的
,无论是随机掩码还是从磁盘加载的常量掩码(我也尝试过)。你能发布完整的问题端到端复制吗?抽象地说很难调试。