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

文章目录

  • 前言
  • 一、常用损失函数(后面用到了新的会一一补充)
    • 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 nnloss = 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.mzph.cn/diannao/11557.shtml

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

相关文章

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码+数据库+文档)

基于SSM的“基于协同过滤的在线通用旅游平台网站”的设计与实现(源码数据库文档) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统主界面 景点信息界面 后台界面 部分源码…

【每日刷题】Day39

【每日刷题】Day39 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 622. 设计循环队列 - 力扣(LeetCode) 2. 387. 字符串中的第一个唯一字符 - …

百度云防护502 Bad Gateway原因总结和处理方法

最近,随着原百度云加速用户新接入百度云防护后,很多站长反馈网站打不开,出现了502 Bad Gateway的情况。 为此,百度云这里给大家总结下,出现502的大概几个原因: 1.服务器防火墙拦截了百度云防护的IP节点请求…

vivado Kintex UltraScale+ 配置存储器器件

Kintex UltraScale 配置存储器器件 下表所示闪存器件支持通过 Vivado 软件对 Kintex UltraScale 器件执行擦除、空白检查、编程和验证等配置操作。 本附录中的表格所列赛灵思系列非易失性存储器将不断保持更新 , 并支持通过 Vivado 软件对其中所列非易失性存…

【VUE.js】前端框架——未完成

基于脚手架创建前端工程 环境 当安装node.js时,它本身就携带有npm命令。(-v 查版本号)安装VUE CLI npm i vue/cli -g(全局) 创建 vue create 【project name】 镜像源解决方案 输入创建命令后,提示检查更…

【JAVA】JAVA的垃圾回收机制详解

对于Java的垃圾回收机制,它是Java虚拟机(JVM)提供的一种自动内存管理机制,主要负责回收不再使用的对象以释放内存空间。垃圾回收机制主要包括以下几个方面的内容: 垃圾对象的识别:Java虚拟机通过一些算法&…

C++学习笔记3

A. 求出那个数 题目描述 喵喵是一个爱睡懒觉的姑娘,所以每天早上喵喵的妈妈都花费很大的力气才能把喵喵叫起来去上学。 在放学的路上,喵喵看到有一家店在打折卖闹钟,她就准备买个闹钟回家叫自己早晨起床,以便不让妈妈这么的辛苦…

Caddy2使用阿里云DNS申请https证书,利用阿里云DNS境内外不同解析给Gone文档做一个同域名的国内镜像站点

我从头到尾实现了一个Golang的依赖注入框架,并且集成了gin、xorm、redis、cron、消息中间件等功能;自己觉得还挺好用的,并且打算长期维护! github地址:https://github.com/gone-io/gone 文档原地址:https:/…

2024CCPC郑州站超详细题解(含题面)ABFHJLM(河南全国邀请赛)

文章目录 前言A Once In My LifeB 扫雷 1F 优秀字符串H 随机栈J 排列与合数L Toxel 与 PCPC IIM 有效算法 前言 这是大一博主第一次参加xcpc比赛,虽然只取得了铜牌,但是收获满满,在了解了和别人的差距后会更加激励自己去学习,下面…

Python从0到POC编写--函数

数学函数: 1. len len() 函数返回对象(字符、列表、元组等)长度或项目个数, 例如: str "python" len(str)2. range range() 函数返回的是一个可迭代对象(类型是对象),…

并行执行的4种类别——《OceanBase 并行执行》系列 4

OceanBase 支持多种类型语句的并行执行。在本篇博客中,我们将根据并行执行的不同类别,分别详细阐述:并行查询、并行数据操作语言(DML)、并行数据定义语言(DDL)以及并行 LOAD DATA 。 《并行执行…

vm虚拟机扩容centos磁盘内存

1.查看虚拟机扩展前磁盘内存 df -h 2.关机情况下扩展磁盘内存 3.对扩容的磁盘分区 fdisk /dev/sda 输入n新增分区,回车,选择p,回车 为分区设置分区格式,在Fdisk命令处输入:t 分区号用默认 3(或回车&…

OSS证书自动续签,一分钟轻松搞定,解决阿里云SSL免费证书每3个月失效问题

文章目录 一、🔥httpsok-v1.11.0支持OSS证书自动部署介绍支持特点 二、废话不多说上教程:1、场景2、实战Stage 1:ssh登录阿里云 ECSStage 2:进入nginx (docker)容器Stage 3:执行如下指令Stage 3…

测试环境搭建整套大数据系统(十六:超级大文件处理遇到的问题)

一:yarn出现损坏的nodemanger 报错现象 日志:1/1 local-dirs usable space is below configured utilization percentage/no more usable space [ /opt/hadoop-3.2.4/data/nm-local-dir : used space above threshold of 90.0% ] ; 1/1 log-dirs usabl…

01-02-2

1、typedef的使用 a.语法 typedef 原名 别名;。 ​ typedef struct student {int num;char name[20];char sex; }stu,*pstu;//stu相当于struct student这个类型,*pstu相当于struct student * 别名的理解方法:若是字母前面有符号&#xff0…

SOUI4里使用字体回退

在新版本的SOUI里render-skia导出了一个新的函数用于字体回退功能。Render_Skia_SetFontFallback 函数原型如下: EXTERN_C void SOUI_COM_API Render_Skia_SetFontFallback(FontFallback fontFallback);因为我的工程是使用动态库,这里可以直接获取到这…

如何用微信小程序实现远程控制4路控制器/断路器

如何用微信小程序实现远程控制4路控制器/断路器呢? 本文描述了使用微信小程序调用HTTP接口,实现控制4路控制器/断路器,支持4路输出,均可独立控制,可接入各种电器。 可选用产品:可根据实际场景需求&#xf…

内容与图像一对多问题解决

场景复现 分析: 其实这是两给表,一个内容表,一个图片表,一对多的关系。 解决思路: 1. 先上传图片拿到图片的List集合ids,返回值是集合的ids,给到前端 2. 再添加内容表的数据生成了id,遍历查…

佳博打印机如何设置打印模式为热敏模式

1、打开电脑搜索框,如下图输入打印机: 2、点击打印机设置,如下图: 3、点击打印机首选项,如下图: 4、点击下图“卷”进行设置 也可对打印机间距高度进行调整

【深度学习】探秘PSD:合成到真实去雾框架的实例解析

揭秘PSD:合成到真实去雾框架的革新 一、PSD框架的提出背景二、PSD框架的原理与网络结构三、PSD框架的实现与代码示例四、结论与展望 在图像处理领域,去雾技术一直是一个备受关注的研究热点。然而,传统的去雾方法在面对真实世界的模糊图像时&a…