具有不同形状的Tensorflow数据集

pro*_*eja 1 python tensorflow

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

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

Rev*_*keb 6

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