OutOfRangeError:RandomShuffleQueue'_2_shuffle_batch / random_shuffle_queue'已关闭且元素不足(请求1,当前大小为0)

时间:2017-09-07 14:36:30

标签: debugging tensorflow

尝试将数据提供给模型时,我收到outOfRange错误。我猜测数据永远不会到达队列,因此错误。只是为了测试我正在用一个元组(image,ground_truth)来提供tfrecord。 我也试过tensorflow调试器(tfdbg),但它也会抛出相同的错误,我看不到任何tensoeflow值。

Tensorflow版本:1.3

Python版本:3.5.3

Os:Windows10

filename_queue = tf.train.string_input_producer([tfrecord_filename],num_epochs=1)

image_batch, annotation_batch = tf.train.shuffle_batch([resized_image, resized_annotation],
                                                       batch_size=1,
                                                       capacity=10,
                                                       num_threads=1,
                                                       min_after_dequeue=1)

堆栈跟踪:

Traceback (most recent call last):
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1327, in _do_call
    return fn(*args)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1306, in _run_fn
    status, run_metadata)
  File "C:\Program Files\Python35\lib\contextlib.py", line 66, in __exit__
    next(self.gen)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.OutOfRangeError: RandomShuffleQueue '_2_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 1, current size 0)
     [[Node: shuffle_batch = QueueDequeueManyV2[component_types=[DT_UINT8, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](shuffle_batch/random_shuffle_queue, shuffle_batch/n)]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/supriya.godge/PycharmProjects/tf-image-segmentation/tf_image_segmentation/recipes/pascal_voc/DeepLab/resnet_v1_101_8s_train.py", line 160, in <module>
    train_step])
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 895, in run
    run_metadata_ptr)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1124, in _run
    feed_dict_tensor, options, run_metadata)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1321, in _do_run
    options, run_metadata)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1340, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.OutOfRangeError: RandomShuffleQueue '_2_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 1, current size 0)
     [[Node: shuffle_batch = QueueDequeueManyV2[component_types=[DT_UINT8, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](shuffle_batch/random_shuffle_queue, shuffle_batch/n)]]

Caused by op 'shuffle_batch', defined at:
  File "C:/Users/supriya.godge/PycharmProjects/tf-image-segmentation/tf_image_segmentation/recipes/pascal_voc/DeepLab/resnet_v1_101_8s_train.py", line 68, in <module>
    min_after_dequeue=1)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\training\input.py", line 1220, in shuffle_batch
    name=name)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\training\input.py", line 791, in _shuffle_batch
    dequeued = queue.dequeue_many(batch_size, name=name)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\ops\data_flow_ops.py", line 457, in dequeue_many
    self._queue_ref, n=n, component_types=self._dtypes, name=name)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\ops\gen_data_flow_ops.py", line 1342, in _queue_dequeue_many_v2
    timeout_ms=timeout_ms, name=name)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_op
    op_def=op_def)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2630, in create_op
    original_op=self._default_original_op, op_def=op_def)
  File "C:\Program Files\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1204, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

OutOfRangeError (see above for traceback): RandomShuffleQueue '_2_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 1, current size 0)
     [[Node: shuffle_batch = QueueDequeueManyV2[component_types=[DT_UINT8, DT_INT32], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](shuffle_batch/random_shuffle_queue, shuffle_batch/n)]]

我已尝试在stackoverflow上发布不同的解决方案以获取相同的错误。不幸的是没有什么对我有用如果我应该提供任何其他信息,请告诉我。 任何建议表示赞赏。 提前谢谢。

4 个答案:

答案 0 :(得分:0)

我正在为我的机器学习项目创建一个数据集,而且每当我从python以png格式保存图像文件时,我都会遇到上述错误。 我使用mat-lab生成了数据集,错误消失了。我仍在调查此问题并尽快发布更新后的答案。同时我希望这会对某人有所帮助。

答案 1 :(得分:0)

  

如果注释图像错误,将显示此错误。请参阅   注释图像矩阵值。它应该是不同的。例如   注释图像矩阵值具有灰色(矩阵值[1 1 1])   但你的图像不是灰色的(matix值[1 3 6])。所以检查矩阵值   您的注释图像

     

如果注释图像不是灰色,则表示队列未填充。这是   错误。

在CamVid_reader_seq def

中的Inputs.py第68行中尝试此代码
label_bytes = tf.image.decode_png(labelValue,1)

注意:1表示将彩色图像转换为灰度

答案 2 :(得分:0)

请使用此网址创建注释图像。完成注释图像后,请查看注释图像的矩阵值。
URL:https://github.com/kyamagu/js-segment-annotator

Example:
Originale Annotation Image Matrix Value [1,1,1] but
Your Annotation image have [0,0,1] or [1,0,0] or [0,1,0].

所以你使用我的python脚本和opencv从[0,0,1]转换为相同的值[1,1,1]

def biggest(a, y, z):
    Max = a
    if y > Max:
        Max = y
    if z > Max:
        Max = z
        if y > z:
            Max = y
    return Max
#Input Image
outdir = "sampleimages/sample2.png"
cnt = 0
image = cv2.imread(outdir)

for i in range(0,360):
  for j in range(0,480):
    newvalue = biggest(image[i,j,0],image[i,j,1],image[i,j,2])
    image[i,j,0] = newvalue
    image[i,j,1] = newvalue
    image[i,j,2] = newvalue
    #if image[i,j] == 8:
    #  cnt += 1
#Output Image
cv2.imwrite("sampleimages/sample-gray-2.png",image)

请参阅: https://github.com/tkuanlun350/Tensorflow-SegNet/issues/6

答案 3 :(得分:0)

对于这可能有帮助的任何人,我都遇到了同样的错误,这显然是第一个在不同上下文中讨论错误的链接。

感谢 Tensorflow 糟糕的错误信息,这个错误可能是由于以下原因:

  1. TF 记录文件的错误路径
  2. 图像形状不匹配
  3. 图片文件格式不匹配