python - 如何将 NumPy 图像数组转换为 Tensorflow
问题描述
我有两个包含图像和标签的形状数组(600,)。当我尝试以任何形式将它们传递给 Keras/Tensorflow 时,我收到错误消息:
ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。
据我了解,图像存储在数组数组中。观察内部数组(单个图像)时,它们具有以下属性:
dtype=uint8 的数组,形状为:(x, 500, 3),其中 x 介于 300 和 500 之间。
我能够通过 pandas.apply 在图像数组上应用 tf 层,希望问题出在图像大小不一致:
resize_and_rescale = tf.keras.Sequential([
tf.keras.layers.experimental.preprocessing.Resizing(IMG_SIZE, IMG_SIZE),
tf.keras.layers.experimental.preprocessing.Rescaling(1./255)
])
train_df.image = train_df.image.apply(resize_and_rescale)
此代码执行成功,但生成的 Eager tensor 仍然与 tensorflow 不兼容:
train_dataset = tf.data.Dataset.from_tensor_slices((train_df.image.values, train_df.label.values))
ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 tensorflow.python.framework.ops.EagerTensor)。
如何将图像数组加载到 tf 中?
我已经尝试了以下加载功能,但未成功:
NumpyArrayIterator
from_tensor_slices
ImageDataGenerator.flow
解决方案
首先,您应该尝试将 from_tensor_slices 的输入转换为 600 个数组的列表。该函数目前仅将其视为 1 个样本,即第一个形状为 600 的数组,从而产生错误。
推荐阅读
- json - Angular:获取特定对象键数据json
- python - 如何将 .HEIC/.HEIF 图像读入(python)opencv 以进行后续处理?
- android - 在 KOTLIN 中将字符串转换为浮点数或整数
- flutter - 多个平台的文本字段警报对话框
- reactjs - ReactJS Hooks UseRef 返回 null
- encryption - 解码 WWW-Authenticate:协商字符串 - SSO
- r - 如何将多个日期格式转换为```as.posixct```?
- angular - 如何在角度 7 的 webRTC 中的音频和视频通话之间切换
- scala - Scala 适配器模式 - 自动允许具有相同方法的类的“鸭子类型”
- r - 根据条件组合多个数据集