问题描述
我在创建自定义数据集时遇到了一些问题。 现在,我设法获得了一个生成器函数:
def dataset_generator():
for path in pathlist_img:
img,labels = process_path(path)
yield img,labels
它返回两个张量流张量:shape =(720,1280,3)的第一个,dtype = uint8,shape =(?,14)的第二个,dtype = float32,其中“?”表示它取决于图像(这是一个对象检测数据集,因此识别出的实例数不是固定的)。
我想拥有一个与标签相关的图像的数据集,所以这就是为什么我生成元组的原因。
问题是我的数据集
dataset = tf.data.Dataset.from_generator(dataset_generator,((tf.uint8,tf.uint8,tf.uint8),(tf.float32,tf.float32)))
只是一个
<FlatMapDataset shapes: ((<unkNown>,<unkNown>,<unkNown>),(<unkNown>,<unkNown>)),types: ((tf.uint8,tf.float32))>
而且似乎不包含任何东西,或者至少我无法从中得到任何东西。
是否有一些最佳实践,可以从图像和标签文件构建数据集? 我该如何解决这个问题?
解决方法
尝试这样重写:
img = tf.ones((730,1280,3),dtype=tf.uint8)
label = tf.ones((tf.random.uniform(shape=[],minval=1,maxval=10),14),dtype=tf.float32)
def gen():
yield img,label
dataset = tf.data.Dataset.from_generator(
gen,(tf.uint8,tf.float32),)
在输出类型中,您仅应指定整体张量的整体dtype,而不是每个尺寸的dtype。