keras中,如何计算top5
1. 什么是top5
top5 的全称应该是top5 accuracy。
它一般是用于多分类问题中的,假定有10个类,那网络最终会给出10个值,分别代表样例是对应类的几率,最终将几率按从大到小排序。
我们一般认为,样例对应的类的几率最大,则认为网络对该样例的分类是正确的,即val_acc,亦可以叫做top1。
而top5 accuracy则放宽了要求,如果 网络对该样例的分类是排在前5个几率之内,就认为分类是正确的。
top1和top5都是评估模型的一个准则,往往关注top5,可以帮助我们更加清楚的了解模型的性能。
2. keras中如何计算top5
keras中已集成了top_k_categorical_accuracy函数用于计算top5,通过修改参数也可以查看top2,top3,top4等。
我们可以在编译模型时,通过定义监控的量来实时的检测top5。
注意,top_k_categorical_accuracy的默认参数为5。
代码实现:
from keras.metrics import top_k_categorical_accuracy
def acc_top2(y_true, y_pred):
return top_k_categorical_accuracy(y_true, y_pred, k=2)
def acc_top3(y_true, y_pred):
return top_k_categorical_accuracy(y_true, y_pred, k=3)
def acc_top4(y_true, y_pred):
return top_k_categorical_accuracy(y_true, y_pred, k=4)
def acc_top5(y_true, y_pred):
return top_k_categorical_accuracy(y_true, y_pred, k=5)
# 编译模型
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-3),
metrics=['acc', acc_top2, acc_top3, acc_top4, acc_top5])
好的,基本就是这些