精度指标目的

时间:2019-04-12 16:26:33

标签: python keras conv-neural-network

我正在使用Keras来构建CNN,但对于“准确度”指标的确切用途却产生了误解。

我已经做过一些研究,看来它返回了模型的准确性。这些信息到底存储在哪里?这个指标会影响时代结果吗?

我找不到任何能真正深入描述“准确度”度量标准的资源。使用此指标会对我的结果有何影响?

      model.compile(
               loss="sparse_categorical_crossentropy",
               optimizer='adam',
               metrics=['accuracy']
               )

Keras文档没有解释该指标的目的。

3 个答案:

答案 0 :(得分:1)

它仅用于报告模型性能,不应以任何方式影响它,例如您的预测有多精确。

精度基本上就是精度:

precision = true_positives / ( true_positives + false_positives )

我建议使用f1_scorelink),因为它结合了精确度和查全率。

希望可以清除它。

答案 1 :(得分:1)

任何度量标准都是模型预测和基本事实的函数,与损失相同。模型本身的准确性是没有意义的,它不仅是模型的属性,而且还不是评估模型的数据集的属性。

准确度尤其是用于分类的度量,它只是正确预测(预测等于标签)的数量与数据集中数据点总数之间的比率。

在训练/评估过程中评估的任何指标都是对您有用的信息,它不用于训练模型。只有损失函数用于权重的实际训练。

答案 2 :(得分:1)

如果您有任何疑问,则检查Keras source code会更容易,因为任何深度学习框架的文档都很糟糕。

首先,您需要find如何处理字符串表示形式:

if metric in ('accuracy', 'acc'):
    metric_fn = metrics_module.categorical_accuracy

这紧随metric功能为definedcategorical_accuracy模块:

def categorical_accuracy(y_true, y_pred):
    return K.cast(K.equal(K.argmax(y_true, axis=-1),
                          K.argmax(y_pred, axis=-1)),
                  K.floatx())

很明显,该函数返回张量,并且仅返回日志中显示的数字,因此there is是包装器函数,用于处理具有比较结果的张量:

weighted_metric_fn = weighted_masked_objective(metric_fn)

此包装器函数contains用于计算最终值的逻辑。由于未定义权重和掩码,因此仅使用简单的求平均值:

return K.mean(score_array)

因此,有一个等式:

formula

建议。我对@VnC略有不同,因为精度和精度是不同的术语。准确度显示分类任务中正确预测的比率,精确度显示正预测值(more)的比率。