You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras+TensorFlow下三类物体检测CNN模型的混淆矩阵生成问题

生成三类物体检测模型的混淆矩阵

我来帮你一步步搞定这个混淆矩阵的生成,其实核心就是要保证预测结果和真实标签的顺序完全对应,这是最容易踩的坑,咱们直接上实操步骤:

1. 加载模型与配置测试生成器

首先把你的模型加载进来,同时完善测试数据生成器的配置,这里一定要加上shuffle=False——因为你的测试集是按类别顺序排列的,打乱顺序会导致真实标签和预测结果错位:

from tensorflow.keras.models import load_model
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import numpy as np

# 加载训练好的模型
model = load_model('model.h5')

# 定义测试数据生成器,注意必须设置shuffle=False
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=(你的模型输入尺寸, 你的模型输入尺寸),  # 比如(224,224),要和训练时一致
    batch_size=32,  # 可根据内存调整,最后一批会自动适配
    class_mode='categorical',  # 多分类场景用categorical,和训练时的损失函数匹配
    shuffle=False  # 绝对不能省略!保证数据顺序和测试集完全一致
)

2. 获取预测结果与真实标签

接下来用模型对测试集做预测,把概率转换成类别索引,同时提取真实标签:

# 生成预测概率
predictions = model.predict(test_generator)
# 把概率转换为类别索引(取概率最大值对应的类)
predicted_classes = np.argmax(predictions, axis=1)

# 获取真实标签:test_generator.classes就是测试集每个样本的真实类别索引
true_classes = test_generator.classes
# 获取类别名称与索引的对应关系,比如{'cat':0, 'dog':1, 'other':2}
class_labels = list(test_generator.class_indices.keys())

3. 生成并可视化混淆矩阵

用scikit-learn生成混淆矩阵,再用seaborn画热力图,结果会更直观:

from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 生成混淆矩阵
cm = confusion_matrix(true_classes, predicted_classes)

# 可视化混淆矩阵
plt.figure(figsize=(8,6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', 
            xticklabels=class_labels, 
            yticklabels=class_labels)
plt.xlabel('Predicted Label')
plt.ylabel('True Label')
plt.title('Confusion Matrix for Cat/Dog/Other Classification')
plt.show()

关键注意事项

  • shuffle=False是核心:如果不设置这个,测试生成器会打乱数据顺序,混淆矩阵的结果完全不可信。
  • class_mode要匹配:如果训练时用的是sparse_categorical_crossentropy损失,那class_mode要设为sparse,必须和训练配置一致。
  • 输入尺寸统一:target_size必须和训练模型时的输入尺寸完全相同,否则预测会出现错误。

这样就能得到准确的混淆矩阵,清晰看到模型在猫、狗、其他三类上的分类表现啦!

内容的提问来源于stack exchange,提问作者sayem48

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:28:17