深度学习模型训练除却常见的PRF指标,在多分类的图像识别方面,还有两个误差率,也是公认的图片分类评价标准,即top1 err和top5 err。
比如AlexNet训练分类图片在top1和top5上的误差率分别降低到了39.7%和 18.9%。VGG在top5上的错误率为7.5%。
top1 err-----模型返回预测矩阵里概率最大对应的标签和正确标签不一致样本数/总样本数。其实这个就是 1-Accuracy
top5 err-----概率向量最大的前五中没有出现正确标签的样本数/总样本数
以上两个指标都是越小代表模型效果越好。
在计算top5 err时需要进行正确标签(对应的索引值)是否在返回的预测矩阵前五大概率(对应的索引值)中判断,用到以下tensorflow函数。
correct=tf.nn.in_top_k(logits,tf.argmax(labels, 1), 5) #logits是模型返回
上面是计算概率向量最大的前五中出现正确标签的样本数,最终记得转换过来:
*top5 err = (1-total_correct/num_sample)100
函数解释
tf.nn.in_top_k(predictions, targets, k, name=None)
这个函数是判断targets目标值是否在预测值predictions的前k个位置中,返回数据类型为bool类型,len与predictions同。例
predictions=[[0.52509776, 0.5892755 , 0.74725628, 0.76582739],
[0.50402326, 0.61583285, 0.29059194, 0.02758617],
[0.0509672 , 0.86364328, 0.65484514, 0.47734828]]
targets=[1 2 2]
out = tf.nn.in_top_k(predictions, targets, 2) # 这里简单一点 设置成前2大
输出参数
out = [False False True] #后面可以进行类型转换,计数True的个数
本篇链接:
https://blog.csdn.net/weixin_42385606/article/details/105590792
参考:
1、https://blog.csdn.net/wuguangbin1230/article/details/72820627
2、https://www.cnblogs.com/wuzhitj/p/6431381.html