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

神经网络多分类文本任务中如何获取新样本的类别预测结果?

多分类文本预测结果处理方案

1. 先搞懂当前输出的含义

你拿到的数组是模型输出的原始预测值(logits),因为模型最后一层Dense(10)没加激活函数,且训练时用了BinaryCrossentropy(from_logits=True)。这里要提一句:你的任务是多分类,但当前用的二分类损失函数其实不对,不过先解决单样本预测的问题,后面再讲优化。

2. 把原始值转成类别概率

用Softmax函数可以把logits转换成0-1之间的概率值,所有类别概率加起来等于1。代码示例:

import tensorflow as tf

# 假设model.predict(x_single)得到的结果是logits数组
logits = model.predict(x_single)
# 转换为概率
probabilities = tf.nn.softmax(logits).numpy()

probabilities里的每个元素对应一个类别的概率,数值越大,该类别的可能性越高。

3. 提取最终分类结果

取概率数组里最大值对应的索引,就是预测的类别:

# 获取概率最大的类别索引
predicted_class_idx = tf.argmax(probabilities, axis=1).numpy()[0]

如果你的类别有对应名称(比如类别0对应"科技"、类别1对应"娱乐"),可以提前做个映射列表:

class_names = ["类别0", "类别1", "类别2", ..., "类别9"]  # 按哑变量的顺序对应
predicted_class = class_names[predicted_class_idx]

4. 优化模型训练配置(更规范的做法)

因为是多分类且标签是哑变量,建议调整模型配置:

  • 最后一层加上Softmax激活:layers.Dense(10, activation='softmax')
  • 编译时改用多分类专用损失函数:
model.compile(
    loss=losses.CategoricalCrossentropy(),
    optimizer='adam',
    metrics=['categorical_accuracy']
)

调整后模型直接输出概率,预测时可以直接用argmax取类别,不用额外转Softmax。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 00:22:23