pytorch常用内置loss函数与正则化技术(补充小细节)

news2024/7/6 18:33:49

文章目录

  • 前言
  • 一、常用损失函数(后面用到了新的会一一补充)
    • 1.1 回归中的损失函数
      • 1.1.1 nn.MSELoss()
        • 示例1:向量-向量
        • 示例2:矩阵--矩阵(维度必须一致才行)
    • 1.2 分类中的损失函数
      • 1.2.1 二分类
        • (1)nn.BCELoss --- 二分类交叉熵损失函数
          • 示例1:向量-向量
          • 示例2:矩阵--矩阵(维度必须一致才行)
        • (2)BCEWithLogitsLoss --- 二分类交叉熵损失函数
          • 示例1:向量-向量
          • 示例2:矩阵--矩阵(维度必须一致才行)
      • 1.2.2 多分类
        • (1)nn.CrossEntropyLoss() --- 多分类交叉熵损失函数
          • 示例:输出矩阵 --- 目标向量
  • 二、正则化技术
  • 总结


前言

本博客主要简要记录一下对pytorch内置损失函数的一些理解和正则化技术在pytorch里面是怎么调用的。

一、常用损失函数(后面用到了新的会一一补充)

1.1 回归中的损失函数

1.1.1 nn.MSELoss()

示例1:向量-向量
import torch
import torch.nn as nn

# 创建一个简单的例子,假设有5个样本
outputs = torch.tensor([[0.9],
                        [0.8],
                        [0.7],
                        [0.6],
                        [0.5]])

# 真实标签,假设每个样本的目标值
targets = torch.tensor([[1],
                        [0.8],
                        [0.6],
                        [0.4],
                        [0.2]], dtype=torch.float32)

# 创建 MSE Loss 实例,默认情况下计算所有数据点的平均损失
criterion_mean = nn.MSELoss()
# 计算损失
loss_mean = criterion_mean(outputs, targets)
print("Mean Loss:", loss_mean.item())

# 设置 reduction 参数为 'sum',计算所有数据点的损失之和
criterion_sum = nn.MSELoss(reduction='sum')
# 计算损失
loss_sum = criterion_sum(outputs, targets)
print("Sum Loss:", loss_sum.item())

# 设置 reduction 参数为 'none',保持每个数据点的单独损失值
criterion_none = nn.MSELoss(reduction='none')
# 计算损失
loss_none = criterion_none(outputs, targets)
print("None Loss:", loss_none)
print("Sum of None Losses:", loss_none.sum())

输出:
在这里插入图片描述

示例2:矩阵–矩阵(维度必须一致才行)

比如在多标签回归中,output就应该是矩阵了,target显然也是矩阵(多标签)
实际上,这段代码中的 inputtarget 都是形状为 (3, 5) 的张量,表示有 3 个样本,每个样本有 5 个输出标签。在均方误差损失函数中,对应位置上的元素会进行相减操作,然后将差的平方求和,最后除以样本数量,得到平均损失。

换句话说,对于每个样本,均方误差损失函数会计算预测值和目标值对应位置上的差的平方,然后对所有位置上的差的平方求和,并求得平均值作为该样本的损失值。然后,对所有样本的损失值再求平均值,得到最终的损失值。

因此,output 是一个标量值,表示所有样本的均方误差损失。

import torch
import torch.nn as nn

loss = nn.MSELoss()
input = torch.randn(3, 5)
target = torch.randn(3, 5)
output = loss(input, target)
print(output)

输出:
在这里插入图片描述
【注】:这种操作适用于多标签输出每个标签都采用同一种类型损失函数。如果采用不同类型损失函数就需要再网络设计层过程中做一些处理了,但是这种方法更加灵活。(后面会专门写篇博客演示这个的-----待更新衔接)

1.2 分类中的损失函数

1.2.1 二分类

(1)nn.BCELoss — 二分类交叉熵损失函数

输出层直接用sigmoid激活函数即可。
nn.BCELoss(二元交叉熵损失)是用于二分类问题的损失函数。它的计算步骤如下:

  1. 将模型的输出视为预测的概率值。对于二分类问题,通常模型的输出是一个单一的概率值,表示正类别的概率。

  2. 将实际的目标标签视为二进制值,其中1表示正类别,0表示负类别。

  3. 对于每个样本,nn.BCELoss会计算预测值与实际标签之间的二元交叉熵损失。损失计算公式如下:
    loss = − 1 N ∑ i = 1 N ( y i log ⁡ ( p

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

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

相关文章

618买什么划算?618买啥好?618数码好物推荐,必买清单大放送!

随着一年一度的618购物狂欢节的临近,作为数码领域的资深爱好者,我感到有责任为大家推荐精心挑选的数码精品。无论你是追逐科技尖端的探索者,还是希望通过智能装备提升生活品质的时尚人士,这里的每一款产品都能与你的心灵产生共鸣。…

基于PHP开发的图片高清无损在线压缩源码系统 带完整源代码以及搭建教程

系统概述 高清无损在线压缩源码系统基于PHP语言开发,结合GD库和ImageMagick等图像处理工具,实现了对JPEG、PNG、GIF等多种图片格式的高清无损压缩。系统采用B/S架构,用户只需通过浏览器访问系统界面,即可实现图片的上传、压缩、预…

【小白入门篇6】常识|怎么计算模型需要的资源

01 背景 各个公司相继推出大模型, 有开源和不开源,有些技术爱好者也开始心痒难耐,萌生了私有本地模型,甚至有伙伴构建大模型并进行训练的想法, 大模型不仅比拼技术, 也是比拼爹(资源)的存在, 我个人在实战经历经常问自己,到底需要什么样配置才能跑起来这个模型, 完…

玩转cpp小项目星球3周年了!

公众号原创文章破600!玩转cpp小项目星球目前已运营3年,平时不怎么宣传,借此机会给大家分享一下这三年里面我沉淀了哪些内容。里面包含: 1.小项目:一些核心模块的拆解,例如:grpc、mutex、线程池等…

python数据分析——数据分类汇总与统计

数据分类汇总与统计 前言一、Groupby分类统计语法按列分组示例一示例二示例三 遍历各分组示例 使用字典和Series分组示例 使用函数分组示例 二、数据聚合groupby的聚合函数示例一示例二 逐列及多函数应用示例一示例二 返回不含行索引的聚合数据示例 三、一般性的“拆分-应用-合…

程序员日志之星际争霸

目录 传送门正文日志1、概要2、星际争霸编年史2.1、最早版本 Alpha2.2、早期版本 Early Beta2.3、测试版 Beta2.4、正式版 StarCraft2.5、母巢之战测试版 BroodWar Beta2.6、星际争霸-母巢之战 BroodWar2.7、地图编辑器(1.07及以上) StarEdit2.8、《星际…

掌握决策之道:层次分析法(AHP)的步骤、应用与局限性

目录 一、层次分析法简介 举一个小例子: 评价类问题可用打分解决,比如:小华高考结束后,在华科和武大两所学校之间做抉择。 评价类问题可用打分解决 二、层次分析法的步骤 (一)一道引出层次分析法的例…

造纸废水处理有哪些工艺设备

造纸废水处理是一个复杂的过程,因为造纸过程中产生的废水含有大量的有机物、悬浮物、色素、油脂、木质素、纤维素等污染物。为了有效处理这些废水,通常需要采用一系列的工艺设备。以下是一些常见的造纸废水处理工艺设备: 格栅:用于…

申贷时,银行级大数据自己能查到吗?

随着金融风控的不断健全,大数据作为辅助的风控工具正在被越来越多的银行和机构使用。在进行申贷时,银行通常会进行大数据查询,以便评估申请人的信用状况。那么,这些大数据自己能查到吗?接下来本文就为大家详细介绍一下&#xff0…

OKHTTP 3.12.0 以后版本 headers 中不可携带中文

今天遇到的报错: java.lang.llegalArgumentException: Unexpected char 0x957f at 0 in x-brand value: 电视堆栈 okhttp3.Headers.checkValue(Headers.java:272) okhttp3.Headers$Builder.add(Headers.java:312) okhttp3.Request$Builder.addHeader(Request.iava:…

超便捷备忘录共享方法 文字文件都可共享

在这个信息爆炸的时代,备忘录已成为我们生活中不可或缺的小助手。它记录着我们的工作计划、待办事项、灵感闪现,甚至是那些温馨的家庭琐事。然而,当我们在不同的设备间穿梭,如何在手机、电脑,甚至是不同品牌的手机之间…

selenium进行xhs图片爬虫:05xhs一个博主的全部文章链接获取

在今天的文章中,是需要进行保持登录状态的,如果没有登录状态。会导致xhs博主下的文章数量缺失。 我使用的仍然是selenium远程调试,也就是我之前说的selenium操作已经打开的浏览器。这块内容配置还是挺简单的,大家可以去试试。 今…

vuerouter声明式导航

声明式导航-跳转传参数 1.查询参数传参 语法:to /path?参数名值 2.对应页面组件接受传来的值 $router.query.参数名 2.动态路由传参 1.配置动态路由 2.配置导航连接 to/path/参数值 3.对应页面组件接收传递过来的值 #route.params.参数名 多个参数传递&…

GPT搜索引擎原型曝光!

OpenAI发布会前一天,员工集体发疯中……上演大型套娃行为艺术。 A:我为B的兴奋感到兴奋;B:我为C的兴奋感到兴奋……Z:我为这些升级感到兴奋 与此同时还有小动作不断,比如现在GPT-4的文字描述已不再是“最先…

树莓派|SPI通信

SPI的原理 SPI(Serial Peripheral Interface)是一种同步的串行通信协议,它允许在单片机和外设之间高速地传输数据。SPI协议主要有以下特点: 采用全双工通信模式,同时支持主从模式(Master/Slave&#xff09…

JavaEE开发重中之重 异常 捕获并抛出异常 自定义异常 2024详解

异常就是代表程序可能出现的问题 Error代表系统级别的错误 属于严重问题 Error是给sun公司用的,不是给程序员用的 Exception代表程序可能出现的问题 叫做异常 编译阶段不会出现异常提醒 运行时会出现的异常 编译阶段就会出现的异常 异常体系的最上层父类是E…

DLRover 如何拯救算力浪费?10 分钟自动定位故障机,1 秒内保存 Checkpoint!

欢迎大家在 GitHub 上 Star 我们: 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

flink cdc,读取datetime类型

:flink cdc,读取datetime类型,全都变成了时间戳 Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。具体来说,可以在MySQL数据源的debezium.source.converter配置项中指…

欢乐钓鱼大师攻略大全,稀有鱼介绍!

在《欢乐钓鱼大师》的广袤海域中,隐藏着无数神秘的鱼类,等待玩家们的探索。这不仅仅是一场钓鱼的冒险,更是一次心灵的洗礼。每一次挥杆都可能揭开一个新的秘密,让我们一起踏上这场奇妙的钓鱼之旅。 寻觅海域明珠:星光闪…

综合模型及应用(图论学习总结部分内容)

文章目录 前言六、综合模型及应用(以题目总结为主)分层图思想(包括拆点建图) e g 1 : 通信线路 eg1:通信线路 eg1:通信线路​​​[A-Telephone Lines](https://ac.nowcoder.com/acm/contest/1055/A)(蓝书例题) e g 2 : 小雨坐地铁 eg2:小雨坐地铁 eg2:小雨坐地铁​ [1012-小雨坐…