尝试将数据提供给模型时,我收到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上发布不同的解决方案以获取相同的错误。不幸的是没有什么对我有用如果我应该提供任何其他信息,请告诉我。 任何建议表示赞赏。 提前谢谢。
答案 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 糟糕的错误信息,这个错误可能是由于以下原因: