【问题标题】:How to calculate precision, recall in multiclass classification problem after each epoch during training?如何在训练期间每个时期后计算多类分类问题的精度和召回率?
【发布时间】:2020-05-12 00:46:32
【问题描述】:

我正在使用 Tensorflow 1.15.0 和 keras 2.3.1。我正在尝试在训练期间为我的训练数据和验证数据计算每个时期的六类分类问题的精度和召回率。 我可以使用分类报告,但只有在训练完成后才能使用。

from sklearn.metrics import classification_report
y_pred = final.predict(X_test)
y_indx = np.argmax(y_test_new, axis = 1)
pred_indx = np.argmax(y_pred, axis = 1)
print(classification_report(y_indx, pred_indx))

网络 ResNet154 的结果如下所示,我的数据集是平衡的。

             precision    recall  f1-score   support

       0       0.00      0.00      0.00    172482
       1       0.00      0.00      0.00    172482
       2       0.00      0.00      0.00    172482
       3       0.00      0.00      0.00    172482
       4       0.00      0.00      0.00    172482
       5       0.17      1.00      0.29    172482


accuracy                           0.17   1034892
macro avg       0.03      0.17      0.05   1034892
weighted avg       0.03      0.17      0.05   1034892

我只想通过使用回调来检查我的训练数据的准确率、召回率和 f1 分数,以确保它是否过度拟合网络。

【问题讨论】:

    标签: keras deep-learning multiclass-classification resnet precision-recall


    【解决方案1】:

    您需要定义一个特定的回调才能执行此操作。

    您的问题的一个解决方案可在以下文章中找到:https://medium.com/@thongonary/how-to-compute-f1-score-for-each-epoch-in-keras-a1acd17715a2

    上面的文章提到了如何在每个 epoch 结束时计算你想要的指标。

    否则,您可以定义一个自定义回调,您可以在其中访问您的验证集;在on_epoch_end() 中,您将获得TPTNFNFP 的数量,您可以使用它们计算您想要的所有指标。

    此外,您可以查看此处编写的示例(使用 TensorFlow 2.X 版本,>=2.1):How to get other metrics in Tensorflow 2.0 (not only accuracy)?

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 2018-06-05
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2010-10-14
      • 1970-01-01
      • 2016-06-19
      • 2018-01-18
      相关资源
      最近更新 更多