训练期间每个纪元后的多类分类问题如何计算精度、召回率?



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

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 分数,以确保它是否是网络的过度拟合。

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

以下文章中提供了问题的一种解决方案:https://medium.com/@thongonary/how-to-compute-f1-score-for-each-epoch-in-keras-a1acd17715a2。

上面的文章提到了如何在每个纪元结束时计算所需的指标。

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

另外,您可以查看这里写的这个例子(在 TensorFlow2.X版本上工作,>=2.1(:如何在 Tensorflow 2.0 中获取其他指标(不仅是准确性(?

相关内容

  • 没有找到相关文章

最新更新