如何使用tf.data读取tfrecords数据集
程序员文章站
2024-01-19 13:25:58
...
tfrecords有一个问题就是如果数据集图片数量太大了,使用传统的方法tf.train.string_input_producer,就会报OutOfRangeError这个错误,至今我不知道怎么解决,找了无数方法也不知道怎么解决,不过引起的原因大部分是因为数据格式不一致,比如图片有一部分unit8的灰度图,但是你其实在制作RGB三通道的数据集,这样图片格式不一致就会报错,具体原因可以看我其他博客,有一个就是介绍可能引起来的各种方法。
- 在制作数据集之前,首先要检查数据集的格式,查看是否一致,图片的格式主要有RGB,RGBA,L,P,
import os
import tensorflow as tf
from PIL import Image
cwd = r'/home/hehe/python/deeplearning/pan/'
num=0
for img_name in os.listdir(cwd):
img_path = cwd + img_name
img = Image.open(img_path)
print(num,img_name ,img )
将输出结果粘贴到word里面,然后查找model=RGBA,找到所有非RGB的图片删除,这一步很关键,如果不删除后面的数据集很可能就不能用。
如果你的文件夹和你的标签对应得上,那么使用这种方式也可以的
#下面的代码是为了生成list.txt , 把不同文件夹下的图片和 数字label对应起来
import os
path=r"/user/huanglong/jiao/"
output_path = 'list.txt'
fd = open(output_path, 'w')
cate = [path + x for x in os.listdir(path) if os.path.isdir(path + x)]
# os.path.splitext(DATA_URL.split("/")[-1])[0]
for index, folder in enumerate(cate):
name=os.path.splitext(folder.split("/")[-1])[0]
for im in os.listdir(folder):
fd.write('{}/{} {}\n'.format(name, im, name))
fd.close()
print('finish task')
这样的方法就不需要你刚刚那样每次还需要修改,只需要更改文件路径就好了。
上一篇: 光驱启动BIOS 设置说明
下一篇: 滚轮根据鼠标位置缩放所绘制图形的功能