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中读取数据,需要检查一下设置的参数是否有问题;