Keras softmax 输出和精度

这是 Keras 模型的最后一层。

model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

我知道softmax层的输出是一个数组,概率总和为1,比如[0.1, 0.4, 0.5].

我有一个关于使用准确性作为指标的问题。

例如,当真实类别为[0, 0, 1]且预测概率为 时[0.1, 0.4, 0.5],即使0.5是最大概率,此预测的准确度也应为0,因为0.5 != 1. 那是对的吗?

更一般地,当输出层激活为 时softmax,我们通常会得到浮动概率预测,并且在极少数情况下我们会得到 [0, 0, 1]像 所以我们在使用as activation的时候不能用accuracyas metric softmax。那是对的吗?


鸿蒙传说
浏览 123回答 1
1回答

墨色风雨

eg,当真实类别为[0, 0, 1],预测概率为[0.1, 0.4, 0.5]时,即使0.5是最大概率,这个预测的准确率也应该是0,因为0.5 != 1。是那对吗?不,您将具有最大值的索引视为模型的预测。因此,在您的示例中,此示例预测将有助于提高准确性。这通常称为 Top-1 精度。在图像分类中,也经常使用 Top-5 精度(softmax 层中的前 5 个最大值被视为 NN 的猜测,并考虑它们的精度)。更一般地,当输出层激活为 softmax 时,我们通常会得到浮动概率预测,并且在极少数情况下我们会得到像 [0, 0, 1] 这样的整数概率预测。所以我们在使用 softmax 作为激活时不能使用准确性作为度量。那是对的吗?从技术上讲,您永远不会获得 softmax 层输出的整数值,因为类型是 float。但是,是的,获得 [0.0, 0.0, 1.0] 的机会非常小。而你的这个假设是不正确的,因为前提不成立。然而,当使用 Softmax 作为神经网络的分类层时,准确性是一个有效的指标。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python