如何在Keras中使用已保存的H5模型进行预测?
没问题!既然你已经用save()把Keras模型存成H5格式了,用它做预测其实很简单,我结合你给出的模型结构(输入形状是(64, 64, 3))给你一步步拆解:
1. 加载保存的H5模型
首先你需要用load_model工具导入已保存的模型,记得导入对应的模块:
from keras.models import load_model # 替换成你实际的模型文件名 classifier = load_model('你的模型文件.h5')
2. 预处理待预测图像
模型的输入必须和训练时的输入规格完全匹配,所以你需要对单张待预测图像做以下处理:
from keras.preprocessing import image import numpy as np # 1. 加载图像并调整到模型要求的尺寸(64x64) test_image = image.load_img('你的待预测图片路径.jpg', target_size=(64, 64)) # 2. 把图像转换成numpy数组格式 test_image = image.img_to_array(test_image) # 3. 扩展维度:模型默认接受批量输入,单张图要变成(1, 64, 64, 3)的形状 test_image = np.expand_dims(test_image, axis=0) # 4. 归一化(和训练时的预处理一致!比如训练时如果用了rescale=1./255,这里必须同步) test_image = test_image / 255.0
3. 执行预测并解析结果
根据你的分类任务类型(二分类/多分类),解析预测结果的方式略有不同:
二分类场景(比如猫/狗识别)
如果是二分类任务,predict()会返回一个0-1之间的概率值,你可以设定阈值(通常是0.5)来判断类别:
result = classifier.predict(test_image) # 假设你训练时的标签映射是:猫=0,狗=1 if result[0][0] > 0.5: prediction = "狗" else: prediction = "猫" print(f"预测结果:{prediction}")
多分类场景(比如多种物体识别)
如果是多分类任务,predict()会返回每个类别的概率值,你需要找到概率最高的类别:
result = classifier.predict(test_image) # 替换成你自己的类别标签列表,顺序要和训练时的类别顺序一致 class_labels = ["类别A", "类别B", "类别C"] # 找到概率最大的类别索引 predicted_idx = np.argmax(result[0]) prediction = class_labels[predicted_idx] print(f"预测结果:{prediction},对应概率:{result[0][predicted_idx]:.2f}")
重要注意事项
- 预处理步骤必须和训练时完全对齐:比如训练时如果做了特定的图像增强(除了随机增强)、归一化方式,预测时必须完全一致,否则会影响准确率。
- 如果需要批量预测多张图片,可以用
ImageDataGenerator的flow_from_directory配合predict_generator方法,效率会更高。
内容的提问来源于stack exchange,提问作者Arjun
相关产品推荐
相关产品推荐

