如何让TensorFlow CNN返回样本对应各类别的概率?
如何让TensorFlow CNN返回每个类别的概率
你的模型其实已经具备输出类别概率的能力,不需要修改模型结构或编译配置,只需要调整预测阶段的代码:
- 你当前用
np.argmax(model_0.predict(X_test_pad), axis=-1)仅提取了概率最大的类别索引,但model_0.predict(X_test_pad)本身返回的就是每个样本对应所有类别的概率矩阵(形状为(测试样本数, 类别数),这里就是(测试样本数, 3))。
直接修改预测代码即可获取概率:
# 获取每个样本对应3个类别的概率矩阵 y_pred_probs = model_0.predict(X_test_pad) # 示例:打印第一个测试样本的各类别概率(百分比格式) print(f"类别0概率:{y_pred_probs[0][0]:.2%}") print(f"类别1概率:{y_pred_probs[0][1]:.2%}") print(f"类别2概率:{y_pred_probs[0][2]:.2%}")
补充说明:
- 你的模型最后一层使用了
activation='softmax',这个激活函数会将输出值归一化,使得所有类别的概率之和为1,完全符合你需要的概率输出要求。 - 损失函数选用
sparse_categorical_crossentropy是匹配你的整数型标签格式,不会影响概率输出,无需调整。
内容的提问来源于stack exchange,提问作者lonyen11
相关产品推荐
相关产品推荐

