【error】OutOfRangeError (see above for traceback): RandomShuffleQueue

前言

在使用tensorflow TFRecord的过程中,读取*.tfrecord文件时出现错误,本文解决这个错误。

错误描述:

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

源码:

image_batch, label_batch, roi_batch, landmark_batch = tf.train.shuffle_batch([img,label,roi,landmark],
                                                    batch_size=batch_size,
                                                    capacity=capacity,
                                                    min_after_dequeue=min_after_dequeue,
                                                    num_threads=7)  

错误原因:

在执行训练的时候,队列会被后台的线程填充好。如果设置了最大训练迭代数(epoch),在某些时候,样本出队的操作可能会抛出一个tf.OutOfRangeError的错误。这是因为tensorflow的队列已经到达了最大实际的最大迭代数,没有更多可用的样本了。这也是为何推荐代码模板需要用try..except ..finally结构来处理这种错误。

一般遇到这个错误,代码本身并没有什么问题,基本上都是参数设置不一致或者和不合适导致的,要注意检查各个参数。

对于博主来说,更改的参数有:

1. 数据格式的不一致性,要与生成tfrecord的数据格式保持一致。

features = tf.parse_single_example(serialized_example,
                               features={
                               ‘img‘:tf.FixedLenFeature([],tf.string),
                               ‘label‘:tf.FixedLenFeature([],tf.int64),
                               ‘roi‘:tf.FixedLenFeature([4],tf.float32),
                               ‘landmark‘:tf.FixedLenFeature([10],tf.float32),
                               })

将label的数据格式由int32改为int64;

这方面,还有一个更改的地方是输入图像数据的大小。

# img = tf.reshape(img, [48,48,3])
img = tf.reshape(img, [img_size,img_size,3]) 

这里博主测试的是MTCNN中生成的pos_12_train.tfrecord的数据,故此处img_size应该是12;

2. batch_size的大小;

这个是需要和运行环境匹配的,也就是批量大小过大,系统可能处理不过来造成的;

3. 根据情况可能还有其他参数需要检查,比如num_epochs、num_threads等等。

参考

1. 理解tfrecord读取数据

2. TensorFlow bug

原文地址:https://www.cnblogs.com/happyamyhope/p/11595845.html

时间: 2024-08-13 08:44:33

【error】OutOfRangeError (see above for traceback): RandomShuffleQueue的相关文章

【ERROR】bash: vim: command not found的解决办法

今天在学习鸟哥的菜的时候,发现自己linux不可以启用vim命令,错误为:bash: vim: command not found. 机器环境:VMWare8+RED HAT Enterprise5 解决方法: 发现问题的根源在于没有安装好vim 输入 rpm -qa|grep vim 命令, 如果 vim 已经正确安装,会返回下面的三行代码: 1 [[email protected] ~]# rpm -qa |grep vim 2 vim-minimal-7.0.109-6.el5 3 vim

【Error】Python:UnicodeDecodeError: ‘XXX' codec can't decode bytes in position... 解决方法

错误信息: UnicodeDecodeError: 'XXX' codec can't decode bytes in position 2-5: illegal multibyte sequence 这是因为遇到了非法字符,因此在转码的过程中出现了异常.具体哪些字符是非法字符我也搞不清. [解决办法] #将获取的字符串strTxt做decode时,指明ignore,会忽略非法字符,这样就可以了 inStr2 = inStr.decode('utf-8', 'ignore') [补充] 默认的参

【ERROR】---Error executing "adb devices":ADB server didn't ACK

搭建环境 ionic emulate android 的时候出现问题 端口占用,找到占用端口的程序,结束进程再启动 重新ionic emulate android 还是报错,闪了一下说failed to execute tools android.bat 直接运行AVD Manger.exe 报错,failed to execute tools android.bat 拷贝AVD Manager.exe至D:\android-sdk-windows\sdk目录下 [ERROR]---Error

【Error】Python:SyntaxError: Non-ASCII character '\xe5'解决方法

在编写Python程序时,程序中有中文时经常会出现错误信息:SyntaxError: Non-ASCII character '\xe5' 出现这种情况,可以用如下解决办法: Python的默认编码文件是用的ASCII码,你将文件存成了UTF-8,解决办法很简单,在文件开头加入如下代码: #coding=utf-8 这就可以了,希望对大家有所帮助. [Error]Python:SyntaxError: Non-ASCII character '\xe5'解决方法

【Error】Python:ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)

最近编写Python程序时经常遇见中文相关的问题,这里说一个问题的解决方法. 我在使用json模块的dumps()函数时,因为涉及到中文,报出如下错误: ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128) 这是编码相关的问题,在该程序中加入如下代码: import sys reload(sys) sys.setdefaultencoding('utf-8') 这样就可以解决该问题了,希望对大家有所帮

laravel 【error】MethodNotAllowedHttpException No message

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException No message 报错原因[原理]CSRF防护: 在 web 路由文件中所有请求方式为PUT.POST或DELETE的HTML表单都会包含一个CSRF令牌字段,否则,请求会被拒绝 解决办法: 在html表单提交中加入: {{csrf_field()}}或者 <input type="hidden" name="_t

【ERROR】使用jquery的ajax出现error:readyState=4,status=500

使用jquery的ajax出现error:readyState=4,status=500,ajax代码如下: $.ajax({ url : "../toBeFinMisManage/showToBeFinMisNum.action?&_dc=" + new Date().getTime(), type : "get", cache : false, dataType: "json", data:{}, success :feedBackR

【error】OpenCV Error: Parsing error (Missing or invalid SVM type) in read_params, file modules/ml/src/svm.cpp

前言 移植代码到板子上出现小问题,其实非常简单,但是不一定能立即想到,故还是记录一下.好记性不如烂笔头~ 错误 Vxworks上的error 0x21c411c0 (iRtp_imx6): RTP 0x2117b0e0 has been deleted due to signal 6. OpenCV Error: Parsing error (Missing or invalid SVM type) in read_params, file modules/ml/src/svm.cpp, lin

【Error】Python安装gevent时出错:“致命错误: Python.h:没有那个文件或目录”

Python Web开发时,为了获得极高的并发性能,需要使用gevent,在Linux下用python的包安装工具pip安装gevent时:sudo pip install gevent,出现如下错误: 致命错误: Python.h:没有那个文件或目录 这种情况是因为没有安装python-dev,所以只需要安装python-dev之后再安装gevent就不会出错了. 安装python-dev命令:sudo apt-get install python-dev 最近在用gunicorn+geven