Pytorch中accuracy和loss的计算知识点总结


Posted in Python onSeptember 10, 2019

这几天关于accuracy和loss的计算有一些疑惑,原来是自己还没有弄清楚。

给出实例

def train(train_loader, model, criteon, optimizer, epoch):
  train_loss = 0
  train_acc = 0
  num_correct= 0
  for step, (x,y) in enumerate(train_loader):

    # x: [b, 3, 224, 224], y: [b]
    x, y = x.to(device), y.to(device)

    model.train()
    logits = model(x)
    loss = criteon(logits, y)

    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    train_loss += float(loss.item())
    train_losses.append(train_loss)
    pred = logits.argmax(dim=1)
    num_correct += torch.eq(pred, y).sum().float().item()
  logger.info("Train Epoch: {}\t Loss: {:.6f}\t Acc: {:.6f}".format(epoch,train_loss/len(train_loader),num_correct/len(train_loader.dataset)))
  return num_correct/len(train_loader.dataset), train_loss/len(train_loader)

首先这样一次训练称为一个epoch,样本总数/batchsize是走完一个epoch所需的“步数”,相对应的,len(train_loader.dataset)也就是样本总数,len(train_loader)就是这个步数。

那么,accuracy的计算也就是在整个train_loader的for循环中(步数),把每个mini_batch中判断正确的个数累加起来,然后除以样本总数就行了;

而loss的计算有讲究了,首先在这里我们是计算交叉熵,关于交叉熵,也就是涉及到两个值,一个是模型给出的logits,也就是10个类,每个类的概率分布,另一个是样本自身的

label,在Pytorch中,只要把这两个值输进去就能计算交叉熵,用的方法是nn.CrossEntropyLoss,这个方法其实是计算了一个minibatch的均值了,因此累加以后需要除以的步数,也就是

minibatch的个数,而不是像accuracy那样是样本个数,这一点非常重要。

以上就是本次介绍的全部知识点内容,感谢大家对三水点靠木的支持。

Python 相关文章推荐
python赋值操作方法分享
Mar 23 Python
详解Python实现按任意键继续/退出的功能
Aug 19 Python
Python3使用pandas模块读写excel操作示例
Jul 03 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
python2和python3在处理字符串上的区别详解
May 29 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
如何基于python生成list的所有的子集
Nov 11 Python
提升python处理速度原理及方法实例
Dec 25 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
python简单利用字典破解zip文件口令
Sep 07 Python
numba提升python运行速度的实例方法
Jan 25 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 #Python
Windows10下 python3.7 安装 facenet的教程
Sep 10 #Python
python 图像处理画一个正弦函数代码实例
Sep 10 #Python
Python操作Mongodb数据库的方法小结
Sep 10 #Python
Python使用matplotlib绘制三维参数曲线操作示例
Sep 10 #Python
Python matplotlib绘制饼状图功能示例
Sep 10 #Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 #Python
You might like
PHPShop存在多个安全漏洞
2006/10/09 PHP
资料注册后发信小技巧
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jQuery与getJson结合的用法实例
2015/08/07 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
Python读取图片属性信息的实现方法
2016/09/11 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
2019/03/01 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
使用 Python 在京东上抢口罩的思路详解
2020/02/27 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
大学校庆邀请函
2014/01/11 职场文书
关于廉洁的广播稿
2014/01/30 职场文书
晚会主持词开场白
2014/03/17 职场文书
师德承诺书
2015/01/20 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
python 下划线的多种应用场景总结
2021/05/12 Python
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
golang使用map实现去除重复数组
2022/04/14 Golang