【问题标题】:How to generate accuracy from a saved model of Keras?如何从保存的 Keras 模型中生成准确性?
【发布时间】:2021-05-05 03:59:54
【问题描述】:

我已经在 .h5 中训练了我的 Keras 模型。我的模型使用 6 个类,它能够使用图像对所有类进行分类。该模型能够输出它成功分类的类的名称。但是,我想在使用用户输入的图像测试模型时产生准确性。我已经到处搜索,但仍然没有解决这个问题。

model = load_model('prototype-tl2-80-20.h5')
classes = { 1:'Kacip Fatimah',
        2:'Mempisang',
        3:'Misai Adam',
        4:'Pandan Serapat',
        5:'Tapak Sulaiman',
        6:'Tongkat Ali'}

image = Image.open(file_path)
image = image.resize((224,224))
image = numpy.expand_dims(image, axis=0)
image = numpy.array(image)
pred = model.predict_classes([image])[0]    
sign = classes[pred+1]
print(sign)

【问题讨论】:

  • 您所说的“生成准确性”究竟是什么意思?
  • 我的意思是当用户将图像输入系统以对图像的类别进行分类时,系统可以对其进行分类,但有时会显示错误的分类。对于最终用户,他们不知道系统是否给出了正确的分类,因为没有关于它的信息。为了解决这个问题,我想输出每个图像的分类精度,但我仍然找不到解决方案。
  • 啊,你问的是所谓的置信度或概率,它只是你模型的输出,使用model.predict并手动获取argmax,模型输出的最大值将给出你的概率,但在任何情况下,概率不会给你太多的信息。
  • 非常感谢先生提供的信息。很高兴知道我对信心有错误的理解。

标签: python tensorflow keras


【解决方案1】:

要使用经过训练的模型预测图像,您必须小心确保图像的处理与训练图像的处理完全相同。图像应与训练图像的大小(高度、宽度)相同,并且具有相同数量的色带,例如“rgb”或“灰度”。确保色带的顺序与训练中使用的顺序相同。接下来,您必须对图像应用相同的预处理。例如,如果您的训练图像被缩放到 0 到 1 之间,那么您需要使用 image=image/255 重新缩放测试图像。之后比做

pred = model.predict(image) 
index=np.argmax(pred)
class=classes[index]
print (index, class)

【讨论】:

  • 感谢您的指导。我已经实现了您的建议,但我仍然不知道如何从用户输入的图像中输出分类的准确性。如果我们想根据准确率知道分类是否正确,这一点很重要。
猜你喜欢
  • 2017-08-22
  • 2021-06-24
  • 2018-12-05
  • 2019-10-17
  • 2020-06-20
  • 1970-01-01
  • 2021-03-23
  • 2019-09-16
  • 2020-07-08
相关资源
最近更新 更多