使用Pytorch训练分类问题时,分类准确率的计算方式

 更新时间:2023年09月14日 14:24:58   作者:jayus丶  
这篇文章主要介绍了使用Pytorch训练分类问题时,分类准确率的计算方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Pytorch训练分类问题时,分类准确率的计算

作者记录方便查询

使用条件

真实标签与预测标签都是tensor。

使用方法

#标签情况
print(y)
tensor([[1, 1, 0, 0]])
print(pred)
tensor([[1, 0, 1, 0]])
# 比较真实与预测
print(y==pred)
tensor([[ True, False, False,  True]])
# 对正确元素求和,sum会自动计算True的个数
print((y==pred).sum())
tensor(2)

因此在每个epoch开始时,只需要初始化一个计数器accuracy,对每次的正确元素进行累加,在除以训练元素的总数,便获得了每个epoch的准确率。

for epoch in range(epochs):
    accuracy=0
    for i, (x,y) in enumerate(train_loader, 1): 
        pred = net(x)
        loss = loss_function(pred.to(torch.float32),y.to(torch.float32))
        optimizer.zero_grad()
        loss.backward() #反向传播
        optimizer.step() #更新梯度
        loss_steps[epoch]=loss.item()#保存loss
        running_loss = loss.item()
        accuracy += (pred == y).sum()
        acc = float(accuracy*100)/float(len(train_ids))# 除以元素总数,可以用其他方式获取
    print(f"第{epoch}次训练,loss={running_loss:.4f},Accuracy={acc:.3f}".format(epoch,running_loss,acc))

结果

训练情况

Pytorch 计算分类器准确率(总分类及子分类)

分类器平均准确率计算

correct = torch.zeros(1).squeeze().cuda()
total = torch.zeros(1).squeeze().cuda()
for i, (images, labels) in enumerate(train_loader):
            images = Variable(images.cuda())
            labels = Variable(labels.cuda())
            output = model(images)
            prediction = torch.argmax(output, 1)
            correct += (prediction == labels).sum().float()
            total += len(labels)
acc_str = 'Accuracy: %f'%((correct/total).cpu().detach().data.numpy())

分类器各个子类准确率计算

correct = list(0. for i in range(args.class_num))
total = list(0. for i in range(args.class_num))
for i, (images, labels) in enumerate(train_loader):
            images = Variable(images.cuda())
            labels = Variable(labels.cuda())
            output = model(images)
            prediction = torch.argmax(output, 1)
            res = prediction == labels
            for label_idx in range(len(labels)):
                label_single = label[label_idx]
                correct[label_single] += res[label_idx].item()
                total[label_single] += 1
 acc_str = 'Accuracy: %f'%(sum(correct)/sum(total))
 for acc_idx in range(len(train_class_correct)):
            try:
                acc = correct[acc_idx]/total[acc_idx]
            except:
                acc = 0
            finally:
                acc_str += '\tclassID:%d\tacc:%f\t'%(acc_idx+1, acc)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 从入门到精通详解Python函数参数全攻略

    从入门到精通详解Python函数参数全攻略

    在编程的世界里,函数(Function)就像是一个精密加工的工厂,本文将带你系统地拆解 Python 函数参数的奥秘,从最基础的用法到进阶技巧,助你彻底攻克这一知识点
    2025-12-12
  • pytorch之添加BN的实现

    pytorch之添加BN的实现

    今天小编就为大家分享一篇pytorch之添加BN的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python Flask 库及应用场景

    Python Flask 库及应用场景

    Flask 是 Python 生态中 ​轻量级且高度灵活的 Web 开发框架,基于 Werkzeug WSGI 工具库和 Jinja2 模板引擎构建,下面给大家介绍Python Flask 库详解,感兴趣的朋友一起看看吧
    2025-05-05
  • pytorch 如何把图像数据集进行划分成train,test和val

    pytorch 如何把图像数据集进行划分成train,test和val

    这篇文章主要介绍了pytorch 把图像数据集进行划分成train,test和val的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python处理列表的部分元素的实例详解

    python处理列表的部分元素的实例详解

    在本篇文章里小编给大家整理的是一篇关于python处理列表的部分元素的实例详解内容,有兴趣的朋友们可以学习下。
    2021-09-09
  • 自动转换Python代码为HTML界面的GUI库remi使用探究

    自动转换Python代码为HTML界面的GUI库remi使用探究

    这篇文章主要为大家介绍了自动转换Python代码为HTML界面的GUI库remi使用探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 使用Python编写Prometheus监控的方法

    使用Python编写Prometheus监控的方法

    今天小编就为大家分享一篇关于使用Python编写Prometheus监控的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Python实战小项目之Mnist手写数字识别

    Python实战小项目之Mnist手写数字识别

    MNIST 数据集已经是一个被”嚼烂”了的数据集, 很多教程都会对它”下手”, 几乎成为一个 “典范”. 不过有些人可能对它还不是很了解, 下面通过一个小实例来带你了解它
    2021-10-10
  • Python语音合成的项目实战(PyQt5+pyttsx3)

    Python语音合成的项目实战(PyQt5+pyttsx3)

    本文主要介绍了Python语音合成的项目实战(PyQt5+pyttsx3),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 能让Python提速超40倍的神器Cython详解

    能让Python提速超40倍的神器Cython详解

    今天带大家了解一下能让Python提速超40倍的神器,文章围绕着神器Cython展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06

最新评论