Skip to main content
 首页 » 编程设计

python之Tensorflow 数据集 reshape 图像

2024年09月03日24lyj

我想使用 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: Cannot batch tensors with different shapes in component 1. First element had shape [500,666,3] and element 1 had shape [752,500,3]."

我希望所有图像的形状都是 [224,224,3]。如何在现有的 tensorflow 数据集中 reshape 图像?

请您参考如下方法:

您可以像这样动态调整图像的大小:

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(...) 方法,您可以在对图像进行批处理之前对其应用各种转换。