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

如何获取TensorFlow多分类预测概率 实现阈值触发的垃圾类分配

方案可行性与TensorFlow相关问题解答

能否直接获取TensorFlow的类别预测概率

可以直接获取,操作方式非常简单:
你现在训练的是3分类(仅类别0、1、2)模型,只要输出层使用softmax激活函数,模型推理输出的直接就是每个类别的归一化预测概率,示例代码如下:

# 推理获取概率,输出shape为 [样本数量, 3],对应每个样本属于0、1、2类的概率
pred_probs = model.predict(input_samples)
# 取单样本最高预测概率
max_probs = np.max(pred_probs, axis=-1)
# 按阈值判断类别
pred_labels = []
for prob, class_pred in zip(max_probs, np.argmax(pred_probs, axis=-1)):
    if prob < preset_threshold: # 阈值可根据验证集效果调整,比如0.7
        pred_labels.append(3)
    else:
        pred_labels.append(class_pred)

如果你的模型输出层没加softmax,是输出logits的话,手动做一次softmax转换就能得到概率:pred_probs = tf.nn.softmax(model.predict(input_samples), axis=-1)即可。

现有方案的优化建议

你提出的方案本身是可行的,在开放集识别、垃圾类兜底的场景非常常用,避免杂乱的兜底类样本干扰正常类的特征学习,不过可以注意几个优化点:

  • 阈值不要拍脑袋设定,用包含正常类(0、1、2)和兜底类(3)的验证集做测试,选择能平衡「正常类误判为兜底类」和「兜底类误判为正常类」两个指标的最优值
  • 如果发现模型输出的置信度不准,容易出现过置信(明明是兜底类还输出很高的置信度)或者欠置信(正常类置信度也很低)的情况,可以加一步温度缩放做置信度校准,提升阈值判断的准确率

如果后续发现单纯卡阈值的效果达不到要求,可以尝试更合适的处理方式:

  • 可选方案1:改用开放集识别算法比如OpenMax,相比单纯卡最大置信度,对离群兜底样本的识别准确率更高,鲁棒性更好
  • 可选方案2:如果有一定量的兜底类样本,可以不用完全排除在训练之外,训练时给兜底类的损失设置更低的权重,既让模型学到兜底类的共性特征,又不会过度干扰正常类的识别精度,比完全不用兜底类样本的效果更稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:06:04