IRIS数据集神经网络使用softmax仍输出多标签问题咨询
问题原因及解决方法
- 首先你对输出的理解存在偏差:
softmax激活输出的不是多标签结果,而是每个样本对应3个类别的预测概率,单一样本所有类别概率之和为1,这完全符合单标签多分类的标准输出逻辑。多标签分类的输出为每个类别独立计算概率、总和不为1,和你当前的输出形式有本质区别。 - 你只需要对概率输出做简单后处理即可得到预期的单标签结果:调用
np.argmax(predictions, axis=1),就能得到每个样本概率最高的类别索引,对应0、1、2三个鸢尾花分类,就是你需要的单标签输出。 - 额外注意你的代码存在特征选取错误:你注释中标注数据集有4个特征,但代码中
X = iris_df.iloc[:, 0:3]只选取了前3个特征,漏掉了petal width特征,会对模型分类精度产生负面影响。
你可以自行验证softmax的输出特性:任取一行预测结果求和,例如第一行
9.91973519e-01 + 4.85600685e-05 + 7.97787122e-03 ≈ 1,完全符合softmax的输出规则。
内容的提问来源于stack exchange,提问作者Sauvik Das
相关产品推荐
相关产品推荐

