【问题标题】:How to convert NumPy array of images to Tensorflow如何将 NumPy 图像数组转换为 Tensorflow
【发布时间】: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


【解决方案1】:

首先,您应该尝试将 from_tensor_slices 的输入转换为 600 个数组的列表。该函数目前认为它只有一个样本,一个第一个形状为 600 的数组,因此会产生错误。

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 2018-09-09
    • 2023-03-17
    • 2010-09-27
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    相关资源
    最近更新 更多