深度学习 常见的名词Top-1和Top-5分别有什么含义

雨点打透心脏的1/2处 2022-09-10 01:24 190阅读 0赞

在深度学习过程中,会经常看见各成熟网络模型在ImageNet上的Top-1准确率和Top-5准确率的介绍,如下图所示:

74f71ada37f416a9d45c629417c7b831.png

那Top-1 Accuracy和Top-5 Accuracy是指什么呢?区别在哪呢?我们知道ImageNet有大概1000个分类,而模型预测某张图片时,会给出1000个按概率从高到低的类别排名,

所谓的Top-1 Accuracy是指排名第一的类别与实际结果相符的准确率,

而Top-5 Accuracy是指排名前五的类别包含实际结果的准确率。

下面的代码可更为直观地说明其中的区别:

  1. import numpy as np
  2. import tensorflow.keras.backend as K
  3. # 随机输出数字0~9的概率分布
  4. output = K.random_uniform_variable(shape=(1, 10), low=0, high=1)
  5. # 实际结果假设为数字1
  6. actual_pos = K.variable(np.array([1]), dtype='int32')
  7. print("数字0~9的预测概率分布为:", K.eval(output))
  8. print("实际结果为数字:", K.eval(actual_pos))
  9. print("实际结果是否in top 1: ", K.eval(K.in_top_k(output, actual_pos, 1)))
  10. print("实际结果是否in top 5: ", K.eval(K.in_top_k(output, actual_pos, 5)))

运行后再看看结果为:

  1. 数字0~9的预测概率分布为: [[0.301023 0.8182187 0.71007144 0.80164504 0.7268218 0.58599055 0.19250274 0.9076816 0.8101771 0.49439466]]
  2. 实际结果为数字: [1]
  3. 实际结果是否in top 1: [False]
  4. 实际结果是否in top 5: [ True]

从结果上看,output中排名最高的值为0.9076816,其对应的数字为7,而实际数字为1,故不在Top1,而数字1对应的值为0.8182187,排名第二,故在Top5内。

发表评论

表情:
评论列表 (有 0 条评论,190人围观)

还没有评论,来说两句吧...

相关阅读