我使用卷积网络对具有不同形状的图像进行分类。我找不到在Tensorflow中加载图像的方法。基于此问题,它应与tf.data.Dataset()一起使用。我以这种方式创建数据集:
dataset = tf.data.Dataset.from_tensor_slices(filenames)
dataset = dataset.map(read_file)
dataset = dataset.shuffle(samples_in_buffer)
dataset = dataset.batch(batch_size)
dataset = dataset.repeat()
Run Code Online (Sandbox Code Playgroud)
执行时出现此错误
HandleElementToSlice Cannot copy slice: number of elements does not match. Shapes are: [element]: [295,256,3], [parent slice]: [276,128,3]
Run Code Online (Sandbox Code Playgroud)
是否可以使用Tensorflow加载不同大小的图像,随机播放和批处理它们?
备注:我想使用空间金字塔池来处理不同的图像大小。
Dataset.batch()试图从不同大小的张量(您的大小不同的图像)构建密集批处理,如此处所述:tf.contrib.data.DataSet批处理大小只能设置为1
如果1.您正在设置batch_size = 1或2.将所有图像调整大小为相同大小,例如,在read_file函数中使用tf.image.resize_image_with_crop_or_pad(),则您的代码可能会工作。
另一种选择是使用dataset.padded_batch(...)而不是dataset.batch并指定padded_shape,以使所有图像具有相同的大小(包括填充),即可能为dataset.padded_batch(batch_size,papped_shape = [无]) )。
最后,在即将发布的TF r1.4中,您可以使用dataset.from_generator()。