gpt4 book ai didi

python - 如何修复数据类型不匹配以使用我的训练模型预测图像?

转载 作者:行者123 更新时间:2023-11-30 09:03:40 25 4
gpt4 key购买 nike

我训练了 CNN,但无法用它来进行预测。我的所有图像都在一个文件夹中

model = tf.keras.models.load_model("C:\Sid\CNNs\MoonRocks.h5")
import os
filepath = "C:\Sid\Projects\LunarMoonRocks\DataSet\Test Images"

for img in os.listdir(filepath):
img_path = os.path.join(filepath, img)
img_array=cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
new_array=cv2.resize(img_array, (480, 480))
img_tbp = new_array.reshape(-1, 480, 480, 1)
prediction = model.predict([img_tbp])

此代码显示错误

TypeError: Value passed to parameter 'input' has DataType uint8 not in list of allowed values: float16, bfloat16, float32, float64

我尝试使用将图像类型更改为 float32

image = tf.image.decode_jpeg(img_tbp)
image = tf.cast(image, tf.float32)

但是显示了错误

ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type int).

如何让我的模型预测文件夹中的图像?

最佳答案

decode_jpeg 用于解码以二进制格式读取的图像文件的内容。您已经使用 OpenCV 读取了图像文件,并且 OpenCV 读取 NumPy 格式的文件。您是否使用过read_file ,那么您应该使用 decode_jpeg

现在谈到您的问题,您可以通过使用 tf.cast 操作将您的 uint8 图像转换为 float 类型,就像您所做的那样,但是您已经最有可能忘记将图像从 uint8 中的 [0, 255] 范围标准化为 float 中的 [0, 1]。因此,您可以直接将图像转换为 float ,并将数字值置于 [0, 1] 范围内,使用:

image = image / 255.0

关于python - 如何修复数据类型不匹配以使用我的训练模型预测图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58470877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com