迁移学习二分类训练得到h5模型后如何在测试数据集上测试
测试已保存h5模型的实现步骤
1. 导入依赖并加载模型
首先加载你已经训练好的h5格式模型,代码如下:
from keras.models import load_model # 加载保存的模型 model = load_model('vgg16_new_model.h5')
2. 加载测试集
和你训练阶段构造training_set、val_set的逻辑一致,使用ImageDataGenerator读取测试文件夹下的图像,必须保证测试集的预处理逻辑和训练阶段完全一致(比如训练时用了rescale=1./255,测试阶段也要加相同参数,输入尺寸也需要和训练时匹配,VGG16默认输入为224x224),二分类任务的构造代码示例如下:
from keras.preprocessing.image import ImageDataGenerator # 初始化测试集数据生成器,和训练预处理保持一致 test_datagen = ImageDataGenerator(rescale=1./255) # 示例参数,替换为你训练时的预处理参数 test_set = test_datagen.flow_from_directory( '你的测试集文件夹路径/test', # 替换为你的test文件夹实际路径 target_size=(224, 224), # 和训练时的输入尺寸一致 batch_size=32, # 和训练时的batch size可不同,不影响结果 class_mode='binary', # 二分类固定为binary shuffle=False # 测试阶段不需要打乱顺序,方便对应样本和预测结果 )
3. 模型评估
直接调用模型的evaluate方法即可得到测试集上的损失值和准确率:
test_loss, test_acc = model.evaluate(test_set, steps=len(test_set)) print(f"测试集损失:{test_loss:.4f}") print(f"测试集准确率:{test_acc:.4f}")
可选:获取单样本预测结果
如果需要得到每个测试样本的预测标签、计算混淆矩阵、召回率等更细粒度的指标,可以用predict方法:
import numpy as np # 得到所有测试样本的预测概率 predictions = model.predict(test_set, steps=len(test_set)) # 二分类阈值设为0.5,转换为预测标签 pred_labels = [1 if x > 0.5 else 0 for x in predictions] # 读取测试集的真实标签 true_labels = test_set.classes # 接下来可以自定义计算各类指标,比如混淆矩阵 from sklearn.metrics import confusion_matrix cm = confusion_matrix(true_labels, pred_labels) print("混淆矩阵:") print(cm)
内容的提问来源于stack exchange,提问作者Vedant Modi
相关产品推荐
相关产品推荐

