Tensorflow数据集具有不同的形状

时间:2017-10-17 13:47:11

标签: python tensorflow

我使用卷积网络来分割不同形状的图像。我找不到在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加载不同大小的图像,随机播放和批处理?

备注:我想使用空间金字塔池来处理不同的图像大小。

1 个答案:

答案 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()。