栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Retrieval task calculate Recall@k

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Retrieval task calculate Recall@k

《检索Recall@k的计算脚本》

检索任务的评估指标是召回率,我们不光要看Recall@1也要看下Recall@3及Recall@10等,看下排序有多少空间,记录一下训练过程中对positive pair 计算 Recall的脚本;基于numpy

  • 我们默认 query 和 doc 是一一匹配的 positive pair

  • query shape -> (n, c)

  • doc shape -> (n, c)

  • query.dot(doc.T) shape -> (n, n)

  • 内积计算的相似度矩阵对角线上是正样本其余都是负样本

    def top10_recall(query, doc, n):
    # 这里的 query 和 doc 都是单位向量
    top_ten = np.array([0] * 10) # 记录 top_ten 个数的列表
    # measure accuracy and record loss
    query = query.detach().cpu().numpy()
    doc = doc.detach().cpu().numpy()
    sim_matrix = query.dot(doc.T)
    # 降序排序
    top_sim = np.argsort(-sim_matrix, 1)[:, :10].tolist()
    target = np.arange(n)
    # 计算top 1 到 top 10 的 recall
    for ii in range(n):
    for top in range(10):
    if target[ii] in top_sim[ii][:top + 1]:
    top_ten[top:] += 1
    break
    top_ten /= n
    return top_ten

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号