【损失函数】SmoothL1Loss 平滑L1损失函数
1、介绍
torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数,通常用于回归问题。它是 L1 损失和 L2 损失的结合,旨在减少对异常值的敏感性。
loss_function = nn.SmoothL1Loss(reduction='mean', beta=1.0)
2、参数
size_average (已弃用): 以前用于确定是否应该对损失的每个元素取平均。如果设置为
False,则对损失进行求和。现在此选项已被弃用,应使用reduction参数代替。reduce (已弃用): 这也是一个旧参数,用于指定是否应用缩减。现在也被
reduction参数替代。reduction: 指定应用于输出的缩减方法。可选值为:
'none': 不应用缩减。'mean': 计算损失的平均值。'sum': 计算损失的总和。beta: 用于确定平滑的转换点。对于错误小于
beta的情况,损失函数变为 L2 损失,对于大于beta的情况,变为 L1 损失。
3、图像

在 Smooth L1 损失函数的图像中,当预测值与真实值之间的差异较小时(小于 beta,在这里默认为 1.0),它的计算方式类似于 L2 损失(平方误差)。当差异较大时,它的计算方式类似于 L1 损失(绝对误差)。这种混合特性使得 Smooth L1 损失对异常值不那么敏感,同时在优化中更稳定。
4、实例
假设我们有以下情况:我们正在训练一个模型来预测某些连续值,例如房价。我们有以下目标值(真实值)和预测值:
- 目标(真实值):
[1.5, 2.0, 3.0] - 预测:
[1.4, 2.1, 2.9]
我们使用 SmoothL1Loss 作为损失函数:
import torch
import torch.nn as nn# 定义目标和预测值
targets = torch.tensor([1.5, 2.0, 3.0])
predictions = torch.tensor([1.4, 2.1, 2.9])# 创建 SmoothL1Loss 实例
loss_function = nn.SmoothL1Loss(reduction='mean', beta=1.0)# 计算损失
loss = loss_function(predictions, targets)
print(loss)
在这个例子中,损失函数将计算目标和预测之间的 Smooth L1 损失,并返回其平均值。如果预测和目标之间的差异小于 beta(在这种情况下为 1.0),则它会应用 L2 损失的平方形式;如果差异大于 beta,则应用 L1 损失的绝对值形式。这种混合使得 Smooth L1 损失对异常值不那么敏感,特别是当预测值与真实值差异很大时。
5、参考
【pytorch】nn.SmoothL1Loss 函数使用_nn.smoothl1loss()-CSDN博客
PyTorch学习笔记:nn.SmoothL1Loss——平滑L1损失_nn.smoothl1loss()-CSDN博客
相关文章:
【损失函数】SmoothL1Loss 平滑L1损失函数
1、介绍 torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数,通常用于回归问题。它是 L1 损失和 L2 损失的结合,旨在减少对异常值的敏感性。 loss_function nn.SmoothL1Loss(reductionmean, beta1.0) 2、参数 size_average (已弃用): 以前用于确定是…...
Go语言中的HTTP重定向
大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP重定向,让我们开始吧! 大家都知道,网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说,你可能想将旧的URL结构…...
ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享
引言 根据上周的计划,我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境,里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代…...
鸿蒙开发ArkTS基础学习-开发准备工具配置
文章目录 前言1. 准备工作2.开发文档3.鸿蒙开发路径一.详情介绍二.DevEco Studio安装详解-开发环境搭建2.1配置开发环境欢迎各位读者阅读本文,今天我们将介绍鸿蒙(HarmonyOS)应用开发的入门步骤,特别是在准备工作和开发环境搭建方面的重要信息。本文将对鸿蒙官方网站的关键…...
WEB 3D技术 three.js 雾 基础使用讲解
本文 我们说一下 雾 在three.js中有一个 Fog类 它可以创建线性雾的一个效果 她就是模仿现实世界中 雾的一个效果 你看到远处物体会组件模糊 直到完全被雾掩盖 在 three.js 中 有两种雾的形式 一种是线性的 一种是指数的 个人觉得 线性的会看着自然一些 他是 从相机位置开始 雾…...
Python中的网络编程
IP地址 IPv4IPv6查看本机的IP地址 win ipconfiglinux ifconfig ping命令 ping www.baidu.com 查看是否能连通指定的网站ping 192.168.1.222 查看是否能连通指定的IP Port端口 0-65535 TCP/IP协议 传输数据之前要建立连接,通过三次握手建立: 客户端 --&g…...
uni-app js语法
锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...
【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain
1.论文介绍 Detecting Camouflaged Object in Frequency Domain 基于频域的视频目标检测 2022年发表于CVPR [Paper] [Code] 2.摘要 隐藏目标检测(COD)旨在识别完美嵌入其环境中的目标,在医学,艺术和农业等领域有各种下游应用。…...
Mysql(5日志备份恢复)
一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无: 修改配置文件添加:错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 修改配置文件添加:通用查…...
MR实战:实现数据去重
文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、Map阶段实现(1)创建Maven项目(2)添加相关依赖…...
JVM 常用知识和面试题
1. 什么是JVM内存结构? jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区; 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟…...
【教3妹学编程-算法题】一年中的第几天
3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包” 2哥 :3妹,什么事呀这么开森。 3妹:2哥你看今天的天气多好啊,经过了一周多的寒潮,天气总算暖和些了。 2哥ÿ…...
ramdump 中的memory统计
0. 前言 ramdump是指某个时刻系统或者子系统发生crash等异常,系统将内存中的数据通过一定的方式保存下来,相当于一个系统内存快照,用以开发者离线分析系统异常问题。 ramdump 工具中有很多内存统计的脚本,本文逐一剖析内存相关的…...
Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题
使用elemenui树形删除数据的时候刷新页面,我在网上找了好多方法,要么没用,要么都是部分代码,自己又看不懂,不得不硬着头皮看源码,发现了有个方法可以刷新。 使用elemenui树形删除数据的时候刷新页面。源码里…...
基于NASM搭建一个能编译汇编语言的汇编软件工具环境(利用NotePad++)
文章目录 一、创建汇编语言源程序二、Notepad的下载、安装、使用三、下载和安装编译器NASM3.1 下载NASM编译器3.2 安装并配置环境变量 四、编译汇编语言源程序(使用命令)五、下载和使用配套源码及工具六、将编译功能集成到Notepad 一、创建汇编语言源程序…...
使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用
setoolkit是一款kali自带的工具 使用命令启动 setoolkit 1) Social-Engineering Attacks 1) 社会工程攻击 2) Penetration Testing (Fast-Track) 2) 渗透测试(快速通道) 3) Third Party Module…...
计算机组成原理-总线概述
文章目录 总线简图总线的物理实现总览总线定义总线的特性总线的分类按数据格式分类串行总线并行总线 按总线功能分类注意系统总线的进一步分类 总线的结构单总线的机构双总线的结构三总线的结构四总线的结构 小结 总线简图 总线的物理实现 如果该为数据总线,那么当…...
三角函数两角和差公式推导
一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α , ∠ C B F ∠ β ∠ABC∠α,∠CBF∠β ∠ABC∠α,∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …...
HarmonyOS page生命周期函数讲解
下面 我们又要看一个比较重要的点了 页面生命周期 页面组件有三个生命周期 onPageShow 页面显示时触发 onPageHide 页面隐藏时触发 onBackPress 页面返回时触发 这里 我们准备两个组件 首先是 index.ets 参考代码如下 import router from ohos.router Entry Component struc…...
3D视觉-结构光测量-线结构光测量
概述 线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件,因此…...
JetBrains IDE试用期重置终极指南:三步实现无限试用
JetBrains IDE试用期重置终极指南:三步实现无限试用 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗?IDE Eval Resetter是一款专门为JetBrains系列I…...
【毕设】城市公园信息管理系统的设计与实现
💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…...
你以为你在选Hermes还是OpenClaw,其实你在选择自己的工作命运
昨晚快十一点,我在北京的一个前同事给我发来信息。 他说,兄弟,看你最近发 AI 的东西,方便不?聊一会。 我回,方便。 一方面,是因为确实好久没联系了。另一方面,也是因为以前大家一…...
139. 由于卸载Rancher主目录,恢复失败
访问Rancher-K8S解决方案博主,企业合作伙伴 : When attempting to restore an RKE2 cluster, it fails due to Rancher directories being unmounted by the rke2-killall.sh script. 当尝试恢复 RKE2 集群时,由于 rke2-killall.sh 脚本卸载…...
容器启动慢?磁盘爆满?Docker 27存储驱动调优全解析,深度解读inode泄漏、layer膨胀与GC失效三大隐性故障
第一章:Docker 27存储驱动演进与核心架构变革Docker 27 引入了存储驱动的范式级重构,彻底解耦镜像层管理与运行时文件系统操作,将原生 overlay2 的硬依赖升级为可插拔的 Storage Abstraction Layer(SAL)。这一变革使容…...
Docker 27车载部署必须关闭的5个默认守护进程,否则QNX/Hypervisor共存环境下将触发TSN时间同步漂移
第一章:Docker 27车载部署的TSN时间同步风险总览在车载边缘计算场景中,Docker 27(即 Docker v27.x 系列)被广泛用于容器化部署时间敏感网络(TSN)相关的实时通信组件,例如 IEEE 802.1AS-2020 时间…...
告别点灯:用STM32CubeIDE和HAL库,给你的SSD1306 OLED做个动态仪表盘
用STM32CubeIDE和HAL库打造SSD1306 OLED动态仪表盘 在嵌入式开发中,OLED屏幕因其高对比度、低功耗和快速响应等特性,成为数据显示的理想选择。本文将带你从零开始,使用STM32CubeIDE和HAL库,为SSD1306 OLED屏幕开发一个功能丰富的动…...
从《新概念英语》Lesson 10 看技术圈:为什么我们总在“脚刹”和“手刹”之间争论不休?
技术社区的“脚刹与手刹之争”:当工具辩论吞噬创新精神 深夜的GitHub评论区闪烁着刺眼的蓝光,几十条消息在React与Vue的对比帖下快速滚动。有人贴出最新的性能基准测试图表,另一位立即反驳测试条件不公允。第三位参与者突然插入:&…...
别再只盯着加密算法了!聊聊GM/T 0054标准里密钥生命周期的8个关键环节(附实操建议)
密钥生命周期管理的工程实践:从GM/T 0054标准到落地实施 在密码应用系统的开发与运维中,密钥管理往往被视为"后台"功能而草率实现,直到安全事件发生才追悔莫及。GM/T 0054标准虽明确了密钥生命周期的理论框架,但如何将其…...
为什么你的Keil工程总是报GCC pragma错误?深入解析arm_math.h与编译器兼容性问题
为什么你的Keil工程总是报GCC pragma错误?深入解析arm_math.h与编译器兼容性问题 当你在Keil MDK环境下开发STM32项目时,是否曾在编译过程中遭遇过这样的警告信息? ..\CORE\arm_math.h(293): warning: #2803-D: unrecognized GCC pragma #pra…...
