我正在 Tensorflow 2.1 上设置图像数据管道。我正在使用具有可变形状(h、w、3)的 RGB 图像的数据集,但我找不到让它工作的方法。我打电话时收到以下错误tf.data.Dataset.batch()
:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot batch tensors with different shapes in component 0. First element had shape [256,384,3] and element 3 had shape [160,240,3]
我找到了padded_batch
方法,但我不希望我的图像被填充到相同的形状。
编辑:
我认为我通过使用该函数tf.data.experimental.dense_to_ragged_batch
(将密集张量表示转换为参差不齐的表示)找到了一个解决方法。
与 不同
tf.data.Dataset.batch
的是,要进行批处理的输入元素可能具有不同的形状,并且每个批处理将被编码为tf.RaggedTensor
但是我有另一个问题。我的数据集包含图像及其相应的标签。当我使用这样的功能时:
ds = ds.map(
lambda x: tf.data.experimental.dense_to_ragged_batch(batch_size)
)
我收到以下错误,因为它试图将函数映射到整个数据集(因此映射到图像和标签),这是不可能的,因为它只能应用于 1 个单个张量(而不是 2 个)。
TypeError: <lambda>() takes 1 positional argument but 2 were given
有没有办法指定我希望将转换应用于两个元素中的哪个元素?