【发布时间】:2018-11-23 12:40:34
【问题描述】:
作为输入 a 有一个浮点数 1.0 或 0.0。当我尝试使用我的模型和 sparse_categorical_crossentropy 损失进行预测时,我得到如下信息:
[[0.4846592 0.5153408]].
我怎么知道它预测的是什么类别?
【问题讨论】:
标签: python tensorflow machine-learning keras loss
作为输入 a 有一个浮点数 1.0 或 0.0。当我尝试使用我的模型和 sparse_categorical_crossentropy 损失进行预测时,我得到如下信息:
[[0.4846592 0.5153408]].
我怎么知道它预测的是什么类别?
【问题讨论】:
标签: python tensorflow machine-learning keras loss
您看到的这些数字是给定输入样本的每个类别的概率。例如,[[0.4846592 0.5153408]] 表示给定样本属于 0 类的概率约为 0.48,属于 1 类的概率约为 0.51。因此,您想选择概率最高的课程,因此您可以使用np.argmax 来查找哪个索引(即 0 或 1)是最大的:
import numpy as np
pred_class = np.argmax(probs, axis=-1)
此外,这与模型的损失函数无关。这些概率由模型中的最后一层给出,很可能它使用softmax 作为激活函数将输出归一化为概率分布。
【讨论】:
sparse_categorical_crossentropy,您分配给数字0的类别实际上是0类;您分配给数字 1 的类别实际上是 1 类;等等。例如,如果您使用 sklearn 中的 LabelEncoder,则可以通过 .classes_ 属性找到此映射(请参阅文档和示例)。