Pytorch学习 day10(L1Loss、MSELoss、交叉熵Loss、反向传播)

news2024/10/6 8:36:30

Loss

  • loss的作用如下:
    • 计算实际输出和真实值之间的差距
    • 为我们更新模型提供一定的依据(反向传播)

L1Loss

  • 绝对值损失函数:在每一个batch_size内,求每个输入x和标签y的差的绝对值,最后返回他们平均值
    在这里插入图片描述

MSELoss

  • 均方损失函数:在每一个batch_size内,求每个输入x和标签y的差的平方,最后返回他们的平均值
    在这里插入图片描述

交叉熵Loss

  • 当我们在处理分类问题时,经常使用交叉熵损失函数。
    • 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。交叉熵的值越小,模型预测效果就越好。
    • 交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
  • 由于以下内容需要理解Softmax函数和交叉熵损失函数,所以先回顾一遍:
  • Softmax函数:
    • 首先,分类任务的目标是通过比较每个类别的概率大小来判断预测的结果。但是,我们不能选择未规范化的线性输出作为我们的预测。原因有两点。
1. 线性输出的总和不一定为1
2. 线性输出可能有负值
  • 因此我们采用Softmax规范手段来保证输出的非负、和为1,公式和举例如下:
    • 左侧为Softmax函数公式,右侧的o为线性输出,y为Softmax规范后的输出
      在这里插入图片描述
  • 交叉熵损失函数:
    • 下图为交叉熵损失函数公式,P(x)为真实概率分布,q(x)为预测概率分布:
      在这里插入图片描述
  • 我们将Softmax规范后的输出代入交叉熵损失函数中,可得:
    • 在训练中,我们已知该样本的类别,那么在该样本的真实概率分布中,只有该类别为1,其他都为0。
    • 在计算机中的log,默认都是ln。
      请添加图片描述
  • 这就是Pytorch官网中的交叉熵损失函数公式:
    在这里插入图片描述
  • 注意:给此公式的交叉熵损失函数传入的input,不需要进行规范化,即不需要进行Softmax变换
  • 我们仍然使用该类的对象函数来调用forward方法,而forward方法需要满足以下条件:
    • input:第一位为batch_size,第二位为输入的class数量
    • target:只有一位,为batch_size
      在这里插入图片描述
  • 代码如下:
import torch

x = torch.tensor([0.1, 0.2, 0.3])
print(x.shape)  # torch.Size([3])
print(x)    # tensor([0.1000, 0.2000, 0.3000])
y = torch.tensor([1])   
x = torch.reshape(x, (1,3)) # 由于交叉熵损失函数的forward方法要求输入是二维,且第一位是batch_size,第二位是class的数量
print(x.shape)  # torch.Size([1, 3])
print(x)    # tensor([[0.1000, 0.2000, 0.3000]])
loss_cross = torch.nn.CrossEntropyLoss()    # 交叉熵损失函数
result_loss = loss_cross(x, y)  # 计算交叉熵损失
print(result_loss)  

# 输出结果:
# torch.Size([3])
# tensor([0.1000, 0.2000, 0.3000])
# torch.Size([1, 3])
# tensor([[0.1000, 0.2000, 0.3000]])
# tensor(1.1019)
  • 计算器的输出结果如下:
    • 代码中的log默认为ln
      在这里插入图片描述

反向传播

  • 当输入不变时,我们要想让总loss最小,就是要找到一组最小的w、b序列,这时我们可以采用一种系统的方法:梯度下降方法
    • 那么找w、b序列,就转换为求学习率和loss对w、b的偏导数,形象化的表示如下:
      在这里插入图片描述
    • 梯度下降的公式如下:
      在这里插入图片描述
  • 这其中:学习率是我们手动设定的,偏导数则是模型自动计算的。
  • 由于每一个节点都需要计算偏导数,如果我们采用正向传播计算,那么针对每一个节点,我们都需要正向计算到结尾一次,而反向传播,只需要我们从头正向计算到结尾一次,之后根据节点位置,进行反向偏导数相乘即可,流程图如下:
    在这里插入图片描述

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

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

相关文章

phpcms头像上传漏洞

经典版 漏洞原理:我们上传一个zip的压缩包,它会解压然后删除其中不是.jpg .gig .png的文件 function check_dir($dir):这是一个PHP函数的定义,它接受一个参数 $dir,代表要检查的目录路径。 $handle opendir($dir);&…

公众号如何获取视频号下载工具?

视频内容已经成为信息传播的重要载体,微信视频号作为国内主流的短视频平台之一,深受用户喜爱。有时我们想要保存喜欢的视频以供日后观看,这时就需要借助一些公众号提供的视频号下载工具。 本文将详细解析如何利用这些工具,让你轻…

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案 连续复制,最大限度地减少数据丢失快速故障转移,最大限度地减少停机时间可忽略的性能影响支持物理、虚拟和基于云的系统平台 停机从多种途径侵扰 IT 企业。 从相…

Mybatis的使用快速入门

1. 数据库准备 假设目前存在以下数据库表。 CREATE TABLE t_emp(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id) );2. 依赖导入 pom.xml <dependencies><!-- mybatis依赖 --><dependency><groupId>or…

仿牛客网项目---项目总结

本篇文章是对整个项目的一个总结。下面这张图要好好理解。 整个项目都是构建在SpringBoot之上的&#xff0c;所以把它画到最底下&#xff0c;其它技术依托在springboot之上。但是springboot并不是技术的核心&#xff0c;而只是起到了一个辅助的作用&#xff0c;它的作用仅仅是降…

2024自动化测试入门分析!

1、回归到具体的测试本质工作 产品质量很难孤立的去看&#xff0c;不管是自动化测试还是业务测试&#xff0c;最终的目的都是为了产 品质量服务&#xff0c;从而打造很酷很好的产品来赋能客户 测试的工作就是质量管理以及测试效率的提升。质量管理是一个比较大的话题&#x…

项目管理软件:如何确保项目启动顺利?

对所有项目经理来说&#xff0c;了解如何启动项目是最关键的技能之一。项目都是从小事开始&#xff0c;逐渐发展为更大型、更复杂的。好的开始是成功的一半&#xff0c;对项目管理来说更是如此。 启动项目的 10 个简单步骤 即使是最复杂的项目&#xff0c;也可以分解成简单的…

亚马逊、速卖通卖家自养号测评细节需要掌握的哪几点?

亚马逊&#xff0c;跨境电商的巨头&#xff0c;早已成为业界的热门话题。如今&#xff0c;越来越多的卖家渴望在亚马逊的舞台上崭露头角&#xff0c;这也使得市场竞争愈发激烈。在亚马逊的丛林中&#xff0c;Review成为影响卖家命运的关键因素。它不仅影响亚马逊对卖家账号的评…

关于DSP C6678的另一种引导启动方法

之前通过自启动已经将C6678的Core0和Core1都实现了启动。方法在之前的文章里面已经提及&#xff1a; C6678 EMIF NOR FLASH自启动方法-CSDN博客 这种启动方式是Core0和Core1工程里面都加了boot.asm&#xff0c;通过EMIF NOR FLASH特性&#xff0c;每个核自动搬移各个字段&…

[VulnHub靶机渗透] Nullbyte

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

路由器动态路由配置

本博客为观看湖科大的教书匠系列计算机网络视频的学习笔记。 静态路由选择动态路由选择采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。路由器通过路由选择协议自动获取路由信息。静态路由选择简单、开销小&#xff0c;但不能及时适应网络状态(流…

灭火新选择:便携式森林灭火泵,轻巧而强大

随着人类对自然环境的破坏&#xff0c;森林火灾频发&#xff0c;给生态环境和人民生命财产安全带来严重威胁。为了有效地应对森林火灾&#xff0c;恒峰研发出了一种便携式森林灭火泵&#xff0c;它将成为森林火灾的守护神。本文将详细介绍便携式森林灭火泵的特点、优势以及使用…

ORACLE RAC数据库压力测试(swingbench)

------------------------------------------------------------------- 欢迎关注作者 墨天伦:潇湘秦的个人主页 - 墨天轮 CSDN:潇湘秦-CSDN博客 公众号:潇湘秦的DBA之路 ------------------------------------------------------------------- 为了验证跑在虚拟机上的or…

WhatsApp模板信息申请大全:更好地触达WhatsApp客户

按照WhatsApp通话规则&#xff0c;用户主动和我们开始聊天后的24小时内&#xff0c;我们也是可以通过WhatsApp无限次数地与对方进行自定义消息对话&#xff0c;并且只计为一次服务型会话费用。 但是如果超过了24小时&#xff0c;我们还希望可以继续联系对方的话&#xff0c;只…

1688 API接口在数据分析与营销决策中的应用探索

在当今数字化快速发展的时代&#xff0c;数据分析与营销决策已成为企业运营中不可或缺的重要环节。而1688 API接口&#xff0c;作为阿里巴巴旗下的一个强大的数据交互平台&#xff0c;为企业在数据分析与营销决策方面提供了丰富的数据源和灵活的操作方式。本文将深入探讨1688 A…

每日OJ题_路径dp⑤_力扣64. 最小路径和

目录 力扣64. 最小路径和 解析代码 力扣64. 最小路径和 64. 最小路径和 难度 中等 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示…

Docker常用基础指令

目录 1 前言 2 常用指令 2.1 获取帮助 2.2 拉取镜像到本地 2.3 对本地镜像进行打包 2.4 对本地镜像的删除 2.5 通过tar包加载本地镜像 2.6 查看所有镜像 2.7 创建新的容器 2.8 查看容器 2.9 停止容器运行 2.10 运行容器 2.11 删除容器 2.12 查看容器日志 2.13 进…

应用资料 | 电动工具直流调速专用集成电路GS069

01 产品简介 GS069是CMOS工艺、电动工具直流调速专用集成电路。具有电源电压范围宽、功耗小、抗干扰能力强等特点。 应用范围&#xff1a;广泛应用于各种电动工具。 02 产品基本参数 03 产品应用 1、应用图&#xff1a; 2、测试参数&#xff1a;&#xff08;VCC9V&…

智慧公厕:提升城市形象与民生满意度的智能解决方案

智慧公厕是指通过智能化设备和系统&#xff0c;实现公共厕所的智能管理和智慧化服务的一种先进解决方案。它不仅可以紧跟政策要求&#xff0c;提升城市的整体形象&#xff0c;还能提供舒适的用厕环境&#xff0c;改善市民群众的生活品质。本文以智慧公厕源头实力厂家广州中期科…

墨水屏电子桌牌选购攻略:打造企业现代形象!

随着科技的不断发展&#xff0c;墨水屏电子会议桌牌作为一种新型的会议辅助工具&#xff0c;不仅能够提升会议效率&#xff0c;还能展现企业的现代化形象。然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;企业如何选购合适的墨水屏电子会议桌牌呢&#xff1f;下面&#…