一,常用的內置評估指標
-
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 (求和)
- https://tensorflow.google.cn/api_docs/python/tf/keras/metrics
二,自定義品函數及使用
import numpy as np import pandas as pd import tensorflow as tf from tensorflow.keras import layers,models,losses,metrics # 函數形式的自定義評估指標 @tf.function def ks(y_true,y_pred): y_true = tf.reshape(y_true,(-1,)) y_pred = tf.reshape(y_pred,(-1,)) length = tf.shape(y_true)[0] t = tf.math.top_k(y_pred,k = length,sorted = False) y_pred_sorted = tf.gather(y_pred,t.indices) y_true_sorted = tf.gather(y_true,t.indices) cum_positive_ratio = tf.truediv( tf.cumsum(y_true_sorted),tf.reduce_sum(y_true_sorted)) cum_negative_ratio = tf.truediv( tf.cumsum(1 - y_true_sorted),tf.reduce_sum(1 - y_true_sorted)) ks_value = tf.reduce_max(tf.abs(cum_positive_ratio - cum_negative_ratio)) return ks_value y_true = tf.constant([[1],[1],[1],[0],[1],[1],[1],[0],[0],[0],[1],[0],[1],[0]]) y_pred = tf.constant([[0.6],[0.1],[0.4],[0.5],[0.7],[0.7],[0.7], [0.4],[0.4],[0.5],[0.8],[0.3],[0.5],[0.3]]) tf.print(ks(y_true,y_pred))
model.compile( loss="categorical_crossentropy", optimizer=keras.optimizers.Adam(lr=0.001), metrics=[keras.metrics.MeanIoU(num_classes=2),ks] )