【问题标题】:The Accuracy Metric Purpose准确度指标的目的
【发布时间】:2019-04-12 16:26:32
【问题描述】:

我正在使用 Keras 构建 CNN,但我对准确度指标的确切作用产生了误解。

我做了一些研究,它似乎返回了模型的准确性。这些信息具体存储在哪里?这个指标会影响 epoch 结果吗?

我找不到任何可以深入描述准确度指标的实际作用的资源。使用此指标对我的结果有何影响?

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

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

【问题讨论】:

    标签: python keras conv-neural-network


    【解决方案1】:

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

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

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

    这遵循metric 模块,其中categorical_accuracy 函数是defined

    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)
    

    所以,结果有一个等式:

    P.S.我有点不同意@VnC,因为准确度和精确度是不同的术语。准确率表示分类任务中正确预测的比率,准确率表示正预测值的比率 (more)。

    【讨论】:

      【解决方案2】:

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

      准确度基本上意味着精度:

      precision = true_positives / ( true_positives + false_positives )
      

      我建议使用f1_score (link),因为它结合了精度和召回率。

      希望能解决这个问题。

      【讨论】:

        【解决方案3】:

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

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

        在训练/评估期间评估的任何指标都是为您提供的信息,不用于训练模型。只有损失函数用于权重的实际训练。

        【讨论】:

          猜你喜欢
          • 2021-08-02
          • 2020-04-04
          • 2020-11-13
          • 2021-12-19
          • 2020-09-07
          • 2016-01-12
          • 2017-03-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多