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

如何用Keras的model.predict()获取CNN二分类模型的概率分数?

解决CNN模型predict仅输出0/1而无法获取概率值的问题

嘿,这问题我之前也碰到过!咱们一步步来排查解决:

核心原因分析

你的模型最后一层用了sigmoid激活,理论上应该输出0到1之间的概率值,现在只出0或1,大概率是输入预处理环节出了问题,或者是调用predict时的输入格式不对。

具体解决方案

  • 检查图像预处理步骤
    确保你没有把输入图像错误地二值化(比如用了阈值截断操作),而且要把像素值归一化到0-1的浮点范围。比如:

    # 正确的预处理示例
    from PIL import Image
    import numpy as np
    
    img = Image.open("test_image.jpg").resize((1500, 1500))
    img_array = np.array(img).astype('float32') / 255.0  # 转为浮点并归一化
    
  • 保证输入的维度正确
    model.predict()要求输入是批量数据,也就是形状为(batch_size, height, width, channels)。如果是单张图像,必须手动添加batch维度:

    img_array = np.expand_dims(img_array, axis=0)  # 从(1500,1500,3)变成(1,1500,1500,3)
    
  • 执行预测并获取概率
    现在调用predict就能得到连续的概率值了:

    pred_prob = model.predict(img_array)[0][0]
    print(f"分类概率: {pred_prob}")  # 输出类似0.656这样的数值
    

额外排查点

如果还是不行,检查下训练时的设置:

  • 确认训练用的损失函数是binary_crossentropy(二分类任务的正确选择)
  • 模型保存和加载过程中有没有丢失层的设置(比如用model.save()和load_model()而不是手动重建)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:59:33