Python Keras softmax输出和精度
这是Keras模型的最后一层Python Keras softmax输出和精度,python,tensorflow,keras,neural-network,Python,Tensorflow,Keras,Neural Network,这是Keras模型的最后一层 model.add(Dense(3, activation='softmax')) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 我知道softmax层的输出是一个数组,概率总和为1,例如[0.1,0.4,0.5] 我有一个关于使用精度作为度量标准的问题 e、 例如,当真实类为[0,0,1]且预测概率为[0.1,0.4,0.5]时,即使0
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
我知道softmax层的输出是一个数组,概率总和为1,例如[0.1,0.4,0.5]
我有一个关于使用精度作为度量标准的问题
e、 例如,当真实类为[0,0,1]
且预测概率为[0.1,0.4,0.5]
时,即使0.5
为最大概率,该预测的准确性也应为0
,因为0.5!=1
。对吗
更一般地说,当输出层激活为softmax
时,我们通常会得到浮动概率预测,并且在很小的机会内我们会得到整数概率预测,如[0,0,1]
。因此,当使用softmax
作为激活时,我们不能使用准确性作为度量。对吗
e、 例如,当真实类为[0,0,1]且预测概率为[0.1,0.4,0.5]时,即使0.5是最大概率,该预测的准确性也应为0,因为0.5!=1.对吗
否。将具有最大值的索引视为模型的预测。因此,在您的示例中,此示例预测将有助于提高准确性。这通常被称为顶级精度。在图像分类中,也经常使用前5名的精度(softmax层中前5名的最大值被视为对NN的猜测,并考虑其精度)
更一般地说,当输出层激活为softmax时,我们通常会得到浮动概率预测,并且在很小的机会内我们会得到整数概率预测,如[0,0,1]。因此,当使用softmax作为激活时,我们不能使用精度作为度量。对吗
从技术上讲,您永远不会获得softmax层输出的整数值,因为该类型是float。但是是的,获得[0.0,0.0,1.0]的机会非常小。你的假设是不正确的,因为前提不成立。然而,当使用Softmax作为神经网络的分类层时,准确度是一个有效的指标。我刚刚尝试了模型。评估(x=[[1,2,3.]],y=[[0,0,1,0]],)
它按预期工作,成功地预测了作为其类别的最大值指数。谢谢你的回答。