【问题标题】:Load my model from tensorflow but not work从 tensorflow 加载我的模型但不起作用
【发布时间】:2023-01-01 11:05:21
【问题描述】:

我正在尝试从该网站修改和调用我自己的模型 https://pythonprogramming.net/using-trained-model-deep-learning-python-tensorflow-keras/

但这是我的问题。

def prepare(filepath):
    IMG_SIZE = 70  # 50 in txt-based
    img_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)  # read in the image, convert to grayscale
    new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))  # resize image to match model's expected sizing
    return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1)  # return the image with shaping that TF wants.

1.我的模型输入是 (180x180x3) ,由于索引超出范围,我无法将其更改为灰度。

2.因为我知道我的频道是 3,所以我想将我的数组更改为 new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 3),但是当它预测

print(prediction[0][0])

它不是数字 0 或 1,所以我无法预测我的照片。

请帮我弄清楚发生了什么,无论是问题 1 还是问题 2。

我感谢你的帮助。

我希望只有 1 或 0,所以我可以对标签“通过”或“失败”进行分类

【问题讨论】:

    标签: python tensorflow machine-learning


    【解决方案1】:

    在 prepare 函数中,图像被读取为灰度,然后被调整为 (IMG_SIZE, IMG_SIZE)。如果您的模型需要 3 个通道 (RGB),但图像正在转换为灰度(1 个通道),那么模型将无法正确处理图像,您将无法获得预期的输出。

    要解决此问题,您可以更改以下行:

    img_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE)  # read in the image, convert to grayscale
    

    到:

    img_array = cv2.imread(filepath)  # read in the image
    

    这将读入具有 3 个通道 (RGB) 的图像。

    关于第二个问题,如果预测不是 0 或 1,那么模型很可能没有输出二元分类。您可以尝试检查模型的输出以查看其预测的内容。您可以通过在应用 argmax 操作之前打印出模型的输出来执行此操作。

    如果模型未输出二元分类,您可能需要修改模型或使用专为二元分类设计的不同模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多