tensorflow2 metrics评价标准(评价指标、评价函数)

介绍

在一个batch(批次)训练完成后,可以对本批次训练结果进行测试,测试准确率,在tensorflow中称之为 metrics,评价标准(评价指标)

如何设置

通过model.compile()的形参metrics进行设置,如下:

model.compile(optimizer=optimizer,loss='categorical_crossentropy',metrics=['acc'])

此处的'acc'是accuracy简写,指 tf.keras.metrics. Accuracy

评价函数

  • 有些 损失函数 可以作为评价函数,如:mse,在 tf.keras.metrics 模块下,下面有介绍
  • tf.keras.metrics模块下的函数都是评价标准函数
  • 自定义评价函数

tf.keras.metrics 下的评价函数

详见 keras api目录

下面是简单介绍:

函数:

  • binary_accuracy:二分类评价函数
  • categorical_accuracy:用于one-hot评价函数
  • sparse_categorical_accuracy:与categorical_accuracy类似,但label是非one-hot
  • top_k_categorical_accuracy
  • sparse_top_k_categorical_accuracy

类:

  • MeanSquaredError(平方差误差,用于回归,可以简写为MSE,函数形式为mse)

  • MeanAbsoluteError (绝对值误差,用于回归,可以简写为MAE,函数形式为mae)

  • MeanAbsolutePercentageError (平均百分比误差,用于回归,可以简写为MAPE,函数形式为mape)

  • RootMeanSquaredError (均方根误差,用于回归)

  • Accuracy (准确率,用于分类,可以用字符串”Accuracy”表示,Accuracy=(TP+TN)/(TP+TN+FP+FN),要求y_true和y_pred都为类别序号编码)

  • Precision (精确率,用于二分类,Precision = TP/(TP+FP))

  • Recall (召回率,用于二分类,Recall = TP/(TP+FN))

  • TruePositives (真正例,用于二分类)

  • TrueNegatives (真负例,用于二分类)

  • FalsePositives (假正例,用于二分类)

  • FalseNegatives (假负例,用于二分类)

  • AUC(ROC曲线(TPR vs FPR)下的面积,用于二分类,直观解释为随机抽取一个正样本和一个负样本,正样本的预测值大于负样本的概率)

  • CategoricalAccuracy(分类准确率,与Accuracy含义相同,要求y_true(label)为onehot编码形式)

  • SparseCategoricalAccuracy (稀疏分类准确率,与Accuracy含义相同,要求y_true(label)为序号编码形式)

  • MeanIoU (Intersection-Over-Union,常用于图像分割)

  • TopKCategoricalAccuracy (多分类TopK准确率,要求y_true(label)为onehot编码形式)

  • SparseTopKCategoricalAccuracy (稀疏多分类TopK准确率,要求y_true(label)为序号编码形式)

  • Mean (平均值)

  • Sum (求和)

自定义损失函数

自定义评价函数应该在编译的时候(compile)传递进去。该函数需要以 (y_true, y_pred) 作为输入参数,并返回一个张量作为输出结果。

import tensorflow as tf

def mean_pred(y_true, y_pred):
    return tf.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])

感谢:
https://zhuanlan.zhihu.com/p/95293440
https://www.cnblogs.com/xiximayou/p/12689915.html