OutOfRangeError (see above for traceback): RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue

本文探讨了在使用TFRecord进行数据预处理时遇到的一个常见问题:由于数据集中混入灰度图而导致的OutOfRangeError异常。文章详细分析了错误产生的原因,并提供了有效的排查和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OutOfRangeError (see above for traceback): RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 1, current size 0)

使用tfrecord时,报上述错误,检查了各种逻辑,最后发现是原始数据集有问题,整个人都不开心了,这次报错的主要原因是,训练集彩色图片中存在灰度图,在处理成tfrecord时,没有将两者区分开来,导致在训练时,遇到灰度图的数据就报错,完全不知所以然;根据网上查找的问题,以及自己的总结,将这个错误可能的原因总结一下:

1、检查图片是否都是RGB图片,特别要主要是否有灰度图,如果觉得自己检查麻烦,可以写程序检查,例如:

        try:
            image = np.reshape(img, [224, 224, 3])
        except:
            print(name)
            with open("exc.txt","a") as f:
                f.write(name)
                f.write("\n")
            continue

通过这种抛错的方式,可以把灰度图很快的检索出来;

2、tf.decode_raw(features['image'],tf.uint8) 解码时,数据类型有没有错?tf.float32 和tf.uint8有没有弄混?写入tfrecord时的格式是什么样的?这些直接检查代码就可以了;

3、如果一开始就没办法从tfrecord中读取数据,需要检查一下设置的参数是否有问题;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值