损失函数总结(十六):NRMSELoss、RRMSELoss

news2024/9/28 3:28:07

损失函数总结(十六):MSLELoss、RMSLELoss

  • 1 引言
  • 2 损失函数
    • 2.1 NRMSELoss
    • 2.2 RRMSELoss
  • 3 总结

1 引言

在前面的文章中已经介绍了介绍了一系列损失函数 (L1LossMSELossBCELossCrossEntropyLossNLLLossCTCLossPoissonNLLLossGaussianNLLLossKLDivLossBCEWithLogitsLossMarginRankingLossHingeEmbeddingLossMultiMarginLossMultiLabelMarginLossSoftMarginLossMultiLabelSoftMarginLossTripletMarginLossTripletMarginWithDistanceLossHuber LossSmoothL1LossMBELossRAELossRSELossMAPELossRMSELossLogCosh LossMSLELossRMSLELoss)。在这篇文章中,会接着上文提到的众多损失函数继续进行介绍,给大家带来更多不常见的损失函数的介绍。这里放一张损失函数的机理图:
在这里插入图片描述

2 损失函数

2.1 NRMSELoss

Normalized Root Mean Squared Error (归一化均方根误差,NRMSE) 将RMSE的值变成(0,1)之间, 有助于不同尺度模型之间的比较。NRMSELoss 的数学表达式如下:
L ( Y , Y ′ ) = 1 n ∑ i = 1 n ( y i − y i ′ ) 2 y ‾ L(Y, Y') = \frac{\sqrt{\frac{1}{n}\sum_{i=1}^{n}(y_i-y_i')^2}}{\overline y} L(Y,Y)=yn1i=1n(yiyi)2

其中:

  • y ‾ \overline y y: 表示观测值的平均值范围(定义为最大值减去最小值)。

代码实现(Pytorch):

import torch
import torch.nn as nn

# 创建模型的预测值和真实观测值
predicted = torch.tensor([2.0, 4.0, 6.0, 8.0, 10.0], dtype=torch.float32)
observed = torch.tensor([1.5, 4.2, 5.8, 7.9, 9.8], dtype=torch.float32)

# 自定义 NRMSE 损失函数
def nrmse_loss(predicted, observed):
    # 创建 MSLE 损失函数
	msle_loss = nn.MSELoss()
	
	# 计算 MSLE Loss
	rmse = torch.sqrt(msle_loss(predicted , observed ))
    observed_range = torch.max(observed) - torch.min(observed)
    nrmse = rmse / observed_range
    return nrmse

# 计算 NRMSE
loss = nrmse_loss(predicted, observed)

# 打印 NRMSE
print("Normalized Root Mean Squared Error (NRMSE):", loss.item())

NRMSELoss 与 RMSLE一致,存在低估比高估受到更严重的惩罚的问题。因此,仅在特殊情况使用。。。。

2.2 RRMSELoss

Relative Root Mean Squared Error (相对均方根误差,RRMSE) 是没有维度的 RMSE 变体。RRMSE 是一种均方根误差度量,它已根据实际值进行缩放,然后由均方根归一化。虽然原始测量的尺度限制了 RMSE,但 RRMSE 可用于比较各种测量方法。RRMSELoss 的数学表达式如下:
L ( Y , Y ′ ) = 1 n ∑ i = 1 n ( y i − y i ′ ) 2 ∑ i = 1 n ( y i ′ ) 2 L(Y, Y') = \sqrt\frac{{\frac{1}{n}\sum_{i=1}^{n}(y_i-y_i')^2}}{\sum_{i=1}^{n}(y_i')^2 } L(Y,Y)=i=1n(yi)2n1i=1n(yiyi)2

代码实现(Pytorch):

import torch
import torch.nn as nn

# 创建模型的预测值和真实观测值
predicted = torch.tensor([2.0, 4.0, 6.0, 8.0, 10.0], dtype=torch.float32)
observed = torch.tensor([1.5, 4.2, 5.8, 7.9, 9.8], dtype=torch.float32)

# 自定义 RRMSE损失函数
def rrmse_loss(predicted, observed):
    # 创建 MSLE 损失函数
	msle_loss = nn.MSELoss()
	
	# 计算 MSLE Loss
	mse = msle_loss(predicted , observed )
    robs_sum = torch.sum(torch.square(observed))
    rrmse = mse / robs_sum 
    return rrmse 

# 计算 RRMSE
loss = rrmse_loss(predicted, observed)

# 打印 RRMSE
print("Relative Root Mean Squared Error (RRMSE):", loss.item())

RRMSE更多的是作为一种评价指标来使用。损失函数的话更多的还是使用MSELoss。。。。

3 总结

到此,使用 损失函数总结(十六) 已经介绍完毕了!!! 如果有什么疑问欢迎在评论区提出,对于共性问题可能会后续添加到文章介绍中。如果存在没有提及的损失函数也可以在评论区提出,后续会对其进行添加!!!!

如果觉得这篇文章对你有用,记得点赞、收藏并分享给你的小伙伴们哦😄。

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

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

相关文章

基于微服务的新星购物电商系统的设计与实现

基于微服务的新星购物电商系统的设计与实现 摘要:这几年来,随着互联网的技术的快速发展和人们生活水平和质量的不断上升,在网上购买物品逐渐成为了人们日常生活中不可缺少的一部分,所以电子商务系统使用的技术也经历了非常快速的…

通达信抛物线SAR指标原理详解、参数设置及选股公式

抛物线指标(SAR)是由技术分析大师威尔斯威尔德(Welles Wilder)发明的,在其1978 年出版的《技术交易系统新概念》一书中介绍了该指标。SAR指标通过跟踪股票价格的动态变化,在走势图上以一系列点的形式显示,提供了一种判断趋势反转的方法&#…

【Python】jieba分词基础

jieba分词主要有3种模式: 1、精确模式:jieba.cut(文本, cut_allFalse) 2、全模式:jieba.cut(文本, cut_allTrue) 3、搜索引擎模式:jieba.cut_for_search(文本) 分词后的关键词提取: jieba.analyse.textrank(txt,t…

从入门到精通:了解接口测试的全流程!

扫盲内容: 1.为什么要做接口测试?2.怎样做接口测试?3.接口测测试点是什么?4.接口测试都要掌握哪些知识?5.其他相关知识? 一.为什么要做接口测试? ①.越底层发现bug,它的修复成本是…

mobaxterm 下载、安装、使用

下载 官网 MobaXterm free Xserver and tabbed SSH client for Windows 下载页面 MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download 点击下载 安装 双击安装 勾选协议 修改安装路径 ,等待安装完成 使用 启动 新建连接 输入主机用户名和密…

记一次请求接口出现400响应码的诡异错误实录

前言 最近业务碰到了一个诡异的400接口请求异常,部门用户通过浏览器访问会出现400响应码错误,部分用户又能正常访问。该接口用postman请求访问,都能正常返回数据。后端写客户端请求该接口,也都能返回正常的数据。本文就来记录一下…

世微 舞台灯深度调光 大功率 dc-dc降压恒流驱动IC APS54083

产品描述 APS54083 是一款 PWM 工作模式,高效率、外围简单、外置功率 MOS 管,适用于 5-220V 输入高精度降压 LED 恒流驱动芯片。输出最大功率150W最大电流 6A。APS54083 可实现线性调光和 PWM 调光,线性调光脚有效电压范围 0.5-2.5V.PWM 调光频率范围 10…

《工业和信息化领域数据安全行政处罚裁量指引(试行)》意见征求

11月23日,工业和信息化部网络安全管理局发布了《工业和信息化领域数据安全行政处罚裁量指引(试行)》,并且面向社会公开征求意见。 据悉,《工业和信息化领域数据安全行政处罚裁量指引(试行)》的推…

【挑战业余一周拿证】二、在云中计算 - 第 3 节 - Amazon EC2 定价

目录 第 3 节 - Amazon EC2 定价 一、按需 适用场景 二、Savings Plans 适用场景 三、预留实例 三种付款模式 四、Spot 实例 适用场景 五、专用主机 适用场景 关注订阅号 首页:【挑战业余一周拿证】AWS 认证云从业者 - 基础 课程目录:【挑…

玻色量子企业荣誉

2023年 2023.7 玻色量子创始人&COO马寅荣获“优秀共产党员”荣誉称号 2023.4 斩获“双金”!玻色量子在中国移动第七届创客马拉松大赛脱颖而出 2023.1 再创佳绩!玻色量子荣膺2022年德勤中国“朝阳明日之星” 2023.1 玻色量子荣为第二届朝阳区“…

SpringCloudAlibaba之Nacos的持久化和高可用——详细讲解

目录 一、Nacos持久化 1.持久化说明 2.安装mysql数据库5.6.5以上版本(略) 3.修改配置文件 二、nacos高可用 1.集群说明 2.nacos集群架构图 2.集群搭建注意事项 3.集群规划 4.搭建nacos集群 5.安装Nginx 6.配置nginx conf配置文件 7.启动nginx进行测试即可 一、Nacos持久…

JAVAEE初阶 多线程基础(四)

join的知识补充,线程的状态和线程安全 一.多线程完成运算操作二.多线程代码的变换2.1 转换成串行执行 三.join的参数四.获取线程的引用4.1用this方法获取实例4.2 用currentThread获取实例 五.线程的状态六.线程安全 一.多线程完成运算操作 可以发现,多线程并行比单线程的速度快…

操作系统安全实验一Linux系统的基本操作

一、实验要求 二、实验步骤 (1)Linux命令格式Linux系统中bash命令的一般格式是 :命令名[选项][处理对象]例:ls -la mydir 三、目录操作 ls指令 ls指令 ls指令 cd指令 pwd指令 四、文件操作 cat指令 cat指令 rm指令 cp指令 mv指令 五、系统权限设置 who指令 chmod指令 groups指…

c++ opencv使用drawKeypoints、line实现特征点的连线显示

前言 图像经过算子处理后得到若干特征点,使用opencv进行渲染显示出这些特征点并且连线,更直观的对比处理前后的一些差异性 demo核心代码 //画出特征点并连线 void drawFilterLinePoints(cv::Mat& srcMat, cv::Point2f pointStart, cv::Point2f po…

多模态大模型总结2

LLaVA-V1(2023/04) 论文:Visual Instruction Tuning 网络结构 如下图 所示为 LLaVA-v1 的模型结构,可以看出其简化了很多,但整体来说还是由三个组件构成: Vision Encoder:和 Flamingo 模型的 V…

TS版LangChain实战:基于文档的增强检索(RAG) | 京东云技术团队

LangChain LangChain是一个以 LLM (大语言模型)模型为核心的开发框架,LangChain的主要特性: 可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等允许语言模型与其环境交互封装了Model I/O(输入…

操作系统CLOCK算法

操作系统时钟(CLOCK)置换算法_时钟置换算法-CSDN博客 前七步相同 第八步的时候 发现页面在内存中 标记位变成1 但是指针不需要移动。

虚幻学习笔记3—UI跟随弹窗

一、前言 本文使用的虚幻引擎5.3.2,继点击场景3D物体的两种处理方式的基础完成对3D物体的点击触发后,我们需要制作一个可以弹窗显示该物体信息的UI面板,同时保证弹窗可以跟随物体。另外还讲了一种UI上的悬浮提示跟随弹窗。 二、实现 2.1、创…

【python】python基础速通系列2-python程序中的积木块

【组成Python的几个单位】 变量:指向值的名称。或者说变量是一个名称,这个名称指向一个具体的指。比如n=17,就说这个叫做n的变量的值是17。表达式:是值,变量和运算符的组合。如果把变量理解为名词,那么表达式就是把名词连起来的动词形容词。比如:n+25。语句:代码的基本…

Java后端开发——JDBC(万字详解)

Java后端开发——JDBC(万字详解) 今日目标 掌握JDBC的的CRUD理解JDBC中各个对象的作用掌握Druid的使用 1,JDBC概述 在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 …