pycharm中编写top5概率代码

def accu(output, target, topk=(1,)):
    """Computes the accuracy over the k top predictions for the specified values of k"""
    with torch.no_grad():
        maxk = max(topk)
        batch_size = target.size(0) # 获取数据总量
        _, pred = output.topk(maxk, 1, True, True) #获取概率前topk
        pred = pred.t()
        correct = pred.eq(target.view(1, -1).expand_as(pred))

        res = []
        for k in topk:
            correct_k = correct[:k].contiguous().view(-1).float().sum(0, keepdim=True)
            res.append(correct_k.mul_(100.0 / batch_size))
        return res
运行;
  y_test = torch.tensor(y_test)
    y_pred_proba = clf.predict_proba(X_test)
    y_pred_proba = torch.tensor(y_pred_proba)
    top1, top5=accu(y_pred_proba, y_test, topk=(1,5))
    print('top1[0],top5[0]',top1[0].item(),top5[0])
  #top1[0],top5[0] tensor(68.0489) tensor(97.3357)
y_pred_proba:是二维数组,体现了每个类别的概率、

输入是模型输出y_pred_proba(batch_size×num_of_class),目标y_test(num_of_class向量),元组(分别向求top几)

torch.eq().sum()就是将所有值相加,但得到的仍是tensor.
torch.eq().sum()得到的结果就是[ ]。
torch.eq().sum().item()得到某个数值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值