我想使用张量流数据集构建数据管道。因为每个数据都有不同的形状,所以我无法建立数据管道。
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],元素1的形状为[752,500,3]。”
我希望所有图像的形状均为[224,224,3]。如何在现有的Tensorflow数据集中重塑图像?
答案 0 :(得分:2)
您可以动态调整图像的大小,例如:
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(...)
方法,您可以在批处理图像之前对图像应用各种转换。