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

Keras模型predict全输出1.,训练准确率却极高的问题求助

问题排查:MNIST清晰/模糊二分类器预测全为1,但训练准确率拉满

嘿,我碰到过类似的坑,先给你捋捋最可能的原因和解决办法:

最核心的问题:预测数据预处理和训练数据不一致

你看代码里,训练和验证阶段用ImageDataGenerator做了rescale=1. / 255,把像素值从0-255缩到了0-1,但预测的时候直接读图片转成数组,完全没做归一化!模型是用归一化后的数据训练的,突然喂给它0-255的原始像素,它肯定懵了,输出全1一点都不奇怪。

修复方法:给预测数据加上同样的归一化

修改你的预测代码段:

filelist = glob.glob('/Binary Classifier/data/image_data/*.png')
x = []
for fname in filelist:
    img = Image.open(fname)
    img_array = np.array(img)
    # 必须和训练时一样做归一化!
    img_array = img_array / 255.0
    x.append(img_array)
x = np.array(x)
x = np.expand_dims(x, axis=3)  # 保持输入形状和模型一致:(样本数, 28, 28, 1)
ones = model.predict(x)

其他需要排查的点

  1. 确认类别映射关系
    训练时flow_from_directory会按文件夹的字母顺序给类别分配0和1,你可以在训练完后加一行:
print("类别映射:", train_generator.class_indices)

比如输出如果是{'clear': 0, 'blurry': 1},那模型输出1代表模糊类,你得确认测试集里是不是真的不全是模糊图——不过大概率不是这个问题,但确认一下没坏处。

  1. 检查测试图片的格式
    确保所有测试图都是28×28的灰度图(模式为L),可以加个小检查:
for fname in filelist:
    img = Image.open(fname)
    print(f"图片:{fname},尺寸:{img.size},模式:{img.mode}")

如果有尺寸不对或者彩色图,也会导致模型输出异常。

  1. 验证集准确率是否正常?
    你只说了训练准确率近乎完美,但如果验证准确率很低,那可能是模型过拟合了,但这种情况一般不会输出全1,所以优先级低于预处理问题。

总结

90%的概率是预测数据没归一化导致的,先改这个试试,应该就能解决问题了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:54