clustering_loss.py 文件源码

python
阅读 20 收藏 0 点赞 0 评论 0

项目:deep_metric_learning 作者: ronekko 项目源码 文件源码
def normalized_mutual_info_score(x, y):
    xp = chainer.cuda.get_array_module(x)

    contingency = contingency_matrix(x, y)
    nonzero_mask = contingency != 0
    nonzero_val = contingency[nonzero_mask]

    pi = contingency.sum(axis=1, keepdims=True)
    pj = contingency.sum(axis=0, keepdims=True)
    total_mass = pj.sum()
    pi /= total_mass
    pj /= total_mass
    pi_pj = (pj * pi)[nonzero_mask]

    pij = nonzero_val / total_mass
    log_pij = xp.log(pij)
    log_pi_pj = xp.log(pi_pj)
    mi = xp.sum(pij * (log_pij - log_pi_pj))
    nmi = mi / max(xp.sqrt(entropy(pi) * entropy(pj)), 1e-10)
    return xp.clip(nmi, 0, 1)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号