我正在使用Keras来构建CNN,但对于“准确度”指标的确切用途却产生了误解。
我已经做过一些研究,看来它返回了模型的准确性。这些信息到底存储在哪里?这个指标会影响时代结果吗?
我找不到任何能真正深入描述“准确度”度量标准的资源。使用此指标会对我的结果有何影响?
model.compile(
loss="sparse_categorical_crossentropy",
optimizer='adam',
metrics=['accuracy']
)
Keras文档没有解释该指标的目的。
答案 0 :(得分:1)
它仅用于报告模型性能,不应以任何方式影响它,例如您的预测有多精确。
精度基本上就是精度:
precision = true_positives / ( true_positives + false_positives )
我建议使用f1_score
(link),因为它结合了精确度和查全率。
希望可以清除它。
答案 1 :(得分:1)
任何度量标准都是模型预测和基本事实的函数,与损失相同。模型本身的准确性是没有意义的,它不仅是模型的属性,而且还不是评估模型的数据集的属性。
准确度尤其是用于分类的度量,它只是正确预测(预测等于标签)的数量与数据集中数据点总数之间的比率。
在训练/评估过程中评估的任何指标都是对您有用的信息,它不用于训练模型。只有损失函数用于权重的实际训练。
答案 2 :(得分:1)
如果您有任何疑问,则检查Keras
source code会更容易,因为任何深度学习框架的文档都很糟糕。
首先,您需要find如何处理字符串表示形式:
if metric in ('accuracy', 'acc'):
metric_fn = metrics_module.categorical_accuracy
这紧随metric
功能为defined的categorical_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)
因此,有一个等式:
建议。我对@VnC略有不同,因为精度和精度是不同的术语。准确度显示分类任务中正确预测的比率,精确度显示正预测值(more)的比率。