介绍
在一个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