我使用卷积网络来分割不同形状的图像。我找不到在Tensorflow中加载图像的方法。基于this issue,它应该与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()
执行时我收到此错误
HandleElementToSlice Cannot copy slice: number of elements does not match. Shapes are: [element]: [295,256,3], [parent slice]: [276,128,3]
是否可以使用Tensorflow加载不同大小的图像,随机播放和批处理?
备注:我想使用空间金字塔池来处理不同的图像大小。
答案 0 :(得分:4)
dataset.batch()正在尝试从不同大小的张量(不同大小的图像)构建密集批处理,如下所述:tf.contrib.data.DataSet batch size can only set to 1
如果您正在设置batch_size = 1或2,您的代码可能会起作用。将所有图像调整为相同大小,例如在read_file-function中使用tf.image.resize_image_with_crop_or_pad()。
另一种选择是使用dataset.padded_batch(...)而不是dataset.batch并指定padded_shape使得所有图像具有相同的大小(包括填充),即可能是dataset.padded_batch(batch_size,padded_shape = [无])。
最后,在即将发布的TF r1.4中,您可以使用dataset.from_generator()。