【发布时间】:2021-08-08 20:57:48
【问题描述】:
我有两个包含图像和标签的形状数组 (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
【问题讨论】:
-
您可以尝试将数组转换为 float32,但如果它不起作用,我建议您尝试在数据框中查找空值
标签: python arrays numpy tensorflow image-processing