TensorFlow 数据集重塑图像

6
我想使用TensorFlow数据集构建数据管道。由于每个数据的形状不同,所以我无法构建数据管道。
import tensorflow_datasets as tfds
import tensorflow as tf

dataset_builder = tfds.builder("oxford_flowers102")
dataset_builder.download_and_prepare()

train_data = dataset_builder.as_dataset(split=tfds.Split.TRAIN)
train_data = train_data.repeat().batch(32)
train_data = train_data.prefetch(tf.data.experimental.AUTOTUNE)
train_iterator = train_data.make_one_shot_iterator()
train_next_element = train_iterator.get_next()

with tf.Session() as sess:
    train_batch = sess.run(train_next_element)

以上代码给了我以下错误:

"tensorflow.python.framework.errors_impl.InvalidArgumentError: 无法对第1个组件中形状不同的张量进行批处理。第一个元素的形状为[500,666,3],而第二个元素的形状为[752,500,3]。"

我希望所有图像都具有[224,224,3]的形状。如何在现有的tensorflow数据集中重新调整图像的形状?

1个回答

3
您可以动态调整图像大小,例如:
train_data = train_data.map(lambda image: tf.image.resize_image_with_crop_or_pad(image, 224, 224))

在执行 train_data = train_data.repeat().batch(32) 之前,使用 tf.data.Dataset.map(...) 方法可以对图像应用各种转换,然后再将它们分批处理。

太好了!很高兴我能帮忙! - gorjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接