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,一经查实,立即删除!

相关文章

NeoVim配置文件基本的

init.lua 文件 require(options) require(keymaps) require(plugins) require(colorscheme) require(lsp)-- 插件 require("config.lualine") require("config.nvim-tree") require("config.treesitter")~\lua\plugins.lua 文件 local lazypa…

基于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虚拟机通过一些算法&…

Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装

参考文档 Taro.request(option) 在 src/http 下创建 request.ts, 写入如下配置: import Taro from tarojs/taro import { encryptData } from ./encrypt // 请求数据加密,可选console.log(NODE_ENV, process.env.NODE_ENV) console.log(TARO_APP_PROX…

C++学习笔记3

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

Leetcode 3143. Maximum Points Inside the Square

Leetcode 3143. Maximum Points Inside the Square 1. 解题思路2. 代码实现 题目链接:3143. Maximum Points Inside the Square 1. 解题思路 这一题由于都是从中心开始的正方形,因此,我们只要找到所有tag下的点距离中心的位置最小的点&…

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比赛,虽然只取得了铜牌,但是收获满满,在了解了和别人的差距后会更加激励自己去学习,下面…

MySQL变量的定义与应用

DQL #MySQL变量的定义与应用 set userName小可爱; select userName; # 定义数值类型整数小数 set x5,y7; select xy, x-y, x*y,x/y; #1、字符串查询 set cityNameHaag; SELECT * FROM city where Name cityName; #2、数值类型 set popvalue105819; select * from city where P…

Python Pandas 数据分析快速入门

Python Pandas 数据分析快速入门 Pandas 是一个开源的 Python 数据分析库,它提供了高效的 DataFrame 结构来处理大型数据集,常用于数据清洗和分析工作。在本教程中,我们将介绍如何使用 Pandas 进行基本的数据分析操作,以及如何处…

34岁2个娃的女程序真的要回归家庭了吗?

我34岁已婚已育,家里两个娃。在去年年末的裁员大潮中被裁了。目前已经找工作2个月,本来被裁我还挺开心的,我老二还在哺乳期,妥妥的4n的工资。赶紧裁了要我好好玩玩吧。抱着这种兴高采烈的心态那这赔偿跑路了。刚好被裁之后紧接着就…

Python从0到POC编写--函数

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

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

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

对Whisper模型的静音攻击

针对Whisper模型的静音攻击方法主要针对基于Transformer的自动语音识别系统,特别是Whisper系列模型。其有效性主要基于Whisper模型使用了一些“特殊标记”来指导语言生成过程,如标记表示转录结束。我们可以通过在目标语音信号前添加一个通用短音频段&…

vue项目通过点击文字上传html文件,查看html文件

上传html文件 解决思路&#xff1a;新建一个上传组件&#xff0c;将它挪到页面之外。当点击文字时&#xff0c;手动触发上传组件&#xff0c;打开上传文件框。 <template><BasicTable register"registerTable"><template #bodyCell"{ column, …

UIButton案例之添加动画

需求 基于上一节代码进行精简&#xff0c;降低了冗余性。添加动画&#xff0c;使得坐标变化自然&#xff0c;同时使用了bounds属性和center属性&#xff0c;使得UIView变化以中心点为基准。 此外&#xff0c;使用两种方式添加动画&#xff1a;1.原始方式。 2.block方式。 代码…