模型训练中 平均损失值和平均准确率的深入理解

news/2025/9/24 13:09:58/文章来源:https://www.cnblogs.com/zhuzhucheng/p/19109047

aver_loss

总损失的计算

对于求平均损失来说 需要先求总损失
而求总损失 就需要求一个批次中的损失

对于一个bs来说 损失的计算是利用
loss=criterion(out,labels)计算得出
而criterion 使用的nn.crossentropy
得出来的损失值 已经是对这一个bs传入的所有样本取过平均值了
所以得出来的loss是当前bs的aver_loss

上面标亮的这段话 是求损失值的关键,也是后面两种方法的基础。
则total_loss+=loss 就计算出总损失了。

对于aver_loss 是可以有两种处理方式的。

方法一:累加“总损失”,最后除以“总样本数”

这是更精确、更标准的方法,也是 PyTorch 官方教程中常见的方式。

  1. 循环内的操作:

    Python

    running_loss += loss.item() * inputs.size(0)
    
    • loss.item():这是 PyTorch CrossEntropyLoss 默认返回的一个批次 (batch) 的平均损失

    • inputs.size(0):这是当前批次中的样本数量(也就是 batch_size)。

    • loss.item() * inputs.size(0):用“平均损失”乘以“样本数”,我们得到的实际上是这个批次的“总损失”(即损失值的加和)。

    • running_loss += ...:所以,running_loss 累加的是所有批次的总损失之和,也就是整个 epoch 见过的所有样本的损失总和

  2. 循环外的操作:

    Python

    epoch_loss = running_loss / dataset_size[phase]
    
    • 因为 running_loss所有样本的损失总和,所以我们理应除以所有样本的总数量 (dataset_size[phase]),来得到最精确的“平均到每个样本的损失”
  • 优点:这种方法可以精确地处理最后一个批次样本数不足的情况(当数据集总数不能被 batch_size 整除时),因为 inputs.size(0) 会自动适应最后一个批次的实际大小。

方法二:累加“平均损失”,最后除以“总批次数”(您提出的方式)

您的这个逻辑也是完全正确的!它代表了另一种计算思路。

  1. 要使用您的计算方法,循环内的操作应该是:

    Python

    running_loss += loss.item() 
    
    • 这里,我们累加的是每个批次的“平均损失”running_loss 最终会变成所有批次的平均损失之和
  2. 循环外的操作(如您所写):

    Python

    aver_loss = running_loss / len(dataloaders[phase])
    
    • 因为 running_loss所有批次平均损失的和,所以我们理应除以总的批次数 (len(dataloaders[phase])),来得到“每个批次的平均损失的平均值”
  • 优点:实现起来非常直观。

  • 微小缺点:当最后一个批次样本数不足时,它在计算最终平均值时,给予了这个不完整的批次的“平均损失”与其他完整批次相同的权重,理论上会引入微小的计算偏差。但在实践中,当数据集很大时,这点偏差几乎可以忽略不计。

accuracy

对于准确率来说,他是在每一个批次(bs)中
使用_,preds=torch.max(outputs,1)
torch.max的使用参考https://www.cnblogs.com/zhuzhucheng/p/19109039先求出分类的类别。
然后调用torch.sum(preds == labels.data) 求出正确预测的总数。
preds==labels.data 返回的是一个bool数组。
torch.sum则是把bool数组的true视为1 false视为0 求和 最后返回一个整数

在每一个epoch训练前定义需定义total_acc=0
在每个批次累加正确的数量到total_acc上
再一个轮次所有批次训练完后 total_acc/样本总数(也就是参考损失值计算中的dataset_size[phase]) 即为正确率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一篇了解 Git 运用方式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

现在有什么网站做设计或编程兼职域名自动更新中

目录 关键词平台说明一、VFB1.1VFB是什么1.1VFB的好处1.2VFB的坏处 二、VFB在ECU内部的描述2.1Components2.2 Port-Interfaces2.3 Port2.4 Compositions 关键词 嵌入式、C语言、autosar、VFB 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0…

torch.max函数在分类问题中的使用 学习

适用于在pytorch的张量上,求某一维度的最大值。 一般在模型测试阶段,求模型预测输出类别的时候使用。 假设是10分类问题,比如mnist 对于一个批次的输入 images 将它传入net(images) 会得到输出out(bs,10) 但是第二个…

手机p2p网站江西省网站建设公司

教程介绍 旨在降低网络防范黑客的入门门槛,适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法,让网站管理人员都具备基本的保护能力。Python 编程的简单实现,让网络运维变得更简单。各种黑客工具的理论和原理解剖,让人知…

网站开发人力成本电子商务营销方案

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

网站开发实训总结致谢网站源码怎么用

来源:非正式组织概要:在Yann LeCun、Yoshua Bengio和Geoffrey Hinton三巨头nature深度学习综述《deep learning》文章中提到,这段期间神经网络模型被主流的计算机视觉和学术界所抛弃。一、前言深度学习的发展大致分为这么几个学期&#xff1a…

vultr做网站怎么样WordPress登录提醒

redis设置:修改redis服务器的配置文件vim /usr/local/redis/bin/redis.confbind 0.0.0.0 protected-mode no重新启动redissystemctl restart redis.service #重新启动服务注意:服务器的话需要设置安全组开放端口1.导入依赖org.springframework.boot …

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南

react native 国际化 react-i18next 和 i18n,运用高级组件的形式。 - 指南2025-09-24 12:57 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x:…

godot3.6字典遍历

godot3.6字典遍历for key in Global.dataJson["game"]:if Global.dataJson["game"][key]["status"] == "在看":game_watch_count+=1

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读

国产DevOps工具链崛起:Gitee领衔的本土化技术生态全景解读 在全球数字化转型加速的背景下,企业技术团队正积极寻求高效、安全的软件开发与运维解决方案。DevOps(开发运维一体化)作为提升软件交付效率的关键实践,正…

安装 elasticsearch-9.1.4的 IK分词器

前提 IK 分词器的文档中描述,在 Elasticsearch 中可以使用命令来安装操作,如下图所示操作过程如下挑选主节点的机器,操作如下[es@lab10 elasticsearch-9.1.4]$ bin/elasticsearch-plugin install https://get.infin…

已收录的网站不好优化wordpress企业营销

拆分Transformer注意力,韩国团队让大模型解码提速20倍AI正在颠覆AI上市不到两年,蜗牛游戏可能要退市了?世界人工智能大会结束了,百花齐放,但也群魔乱舞“串联OLED”被苹果带火了,比OLED强在哪里&#xff1f…

免费医院网站源码静态网页效果图

内容 本次入门内容是调用OpenAI的聊天机器人功能。 实现原理是使用OpenAI提供的API,通过向其发送请求来生成回复文本。 首先,导入ChatOpenAI类,这个类是用于实现与OpenAI聊天机器人交互的。 pip install langchain-openai2. 编写调试代码 …

react性能优化

memo 如下所示例子中,因为App内部状态的更新,总会牵连其无辜子组件Demo的更新。 const Demo = () => {console.log(Demo render);return (<div>我是子组件</div>); };const App = () => {console.…

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式

从研发效能到知识中枢:Gitee Wiki如何重塑企业知识管理范式 在数字化浪潮席卷全球的当下,企业知识管理正经历着从简单文档存储向智能中枢的范式转变。某研发团队经过长达两年的实践探索,对Notion、Confluence和Gite…

站点建错了网页能打开吗ps做网站首页

推荐一个学习资源&#xff1a;数据结构与算法之美。主要包括以下几个学习内容&#xff1a; 20个经典数据结构与算法100个真实项目场景案例文科生都能看懂的算法手绘图解轻松搞定BAT的面试通关秘籍 作者&#xff1a;王争 前谷歌工程师 内容很强。扫描我的二维码买的话&#x…

全国房地产网站如何运营一个公众号

MySql索引(二) 转自&#xff1a; http://www.cnblogs.com/dreamhome/archive/2013/04/16/3025304.html 所有MySQL列类型可以被索引。根据存储引擎定义每个表的最大索引数和最大索引长度。 所有存储引擎支持每个表至少16个索引&#xff0c;总索引长度至少为256字节。大多数存储引…

金华建设二建哪个网站报名商洛微网站建设

搜索AI伙伴 申请到了百度的chatgpt&#xff1a; 完整的窗口布局&#xff1a; 三个哲学问题&#xff1a; 灵感中心&#xff1a; 请做一副画&#xff0c;一个渔夫&#xff0c;冬天&#xff0c;下着大雪&#xff0c;在船上为了一家的生计在钓鱼&#xff0c;远处的山上也都是白雪&a…

Gitee DevSecOps平台:军工软件研发的智能化革命

Gitee DevSecOps平台:军工软件研发的智能化革命 军工行业正经历着数字化转型的关键时期,软件研发的工业化进程已成为提升国防科技实力的重要突破口。在这一背景下,Gitee DevSecOps平台凭借其创新的智能版本管理体系…

靠谱的程序员推荐阅读-----《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解

靠谱的程序员推荐阅读----->《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解将程序错误前置扼杀在编译期,是这个规约对我们开发者带来的最大的收益。《阿里巴巴Java开发手册》编程规约->OOP规…