python - TensorFlow 数据集重塑图像
问题描述
我想使用 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],元素 1 的形状为 [752,500,3]。”
我希望所有图像都是 [224,224,3] 的形状。如何重塑现有 tensorflow 数据集中的图像?
解决方案
您可以动态调整图像的大小,例如:
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(...)
方法,您可以在批量处理图像之前对图像应用各种转换。
推荐阅读
- javascript - 在 javascript 中,我是否可以返回我悬停的任何 DOM 元素的元素?
- html - 在 CSS 中使用 display flex
- javascript - 显示两部手机之间位置的简单网络应用程序
- oauth-2.0 - 客户端应用程序中的 IdentityServer4 无效范围
- angular - 何时在 Angular 中使用模板驱动和响应式表单
- python - 在 Keras (2.4.3) 和 Tensorflow (2.4.1) 中使用 NumPy 数组
- ios - 如何对 UIApplication 扩展进行单元测试
- webpack - 升级到 Webpack 5 后出现“此源的内容和地图不可用”错误
- python - 将列表中的每个元素转换为相应的(预定义的)字典值
- javascript - 根据输入变化的搜索条件过滤数组内容