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

如何将TensorFlow model.predict()结果缩放至总和为100%

解决方法

当前你的模型输出是logits(原始未激活的预测值),这类值可能为负且总和不为1,需要通过Softmax函数转换为总和为1的概率分布,再处理成你需要的比例形式。

修改后的预测函数如下:

import numpy as np

img = "./img/hat.jpg"
def predict(img):
    img = preprocess_image(img)
    pred = model.predict(img)
    pred = np.squeeze(pred).astype(float)
    
    # 将logits转换为总和为1的概率
    pred_probs = np.exp(pred) / np.sum(np.exp(pred))  # 手动实现Softmax,兼容所有numpy版本
    # 若你的numpy版本≥1.20.0,也可以直接用:pred_probs = np.softmax(pred)
    
    # 保留4位小数(可根据需求调整),生成类别-概率字典
    pred_result = {cls: round(prob, 4) for cls, prob in zip(class_names, pred_probs)}
    
    print(pred_result)
    return pred_result

关键说明

  • Softmax函数的作用:将任意实数的logits转换为0到1之间的概率值,且所有类别的概率总和严格为1(即100%)。
  • 手动实现Softmax的公式是np.exp(pred) / np.sum(np.exp(pred)),原理是对每个logits取指数(消除负数),再除以所有指数的和(归一化到总和为1)。
  • 若需要百分比形式,只需将prob乘以100,比如round(prob * 100, 2),得到的结果就是百分比数值(总和为100)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:42:15