【pytorch】nn.SmoothL1Loss 函数使用

news2024/9/22 15:42:03

SmoothL1 Loss

  • 1、Smooth L1 Loss
  • 2、nn.SmoothL1Loss 函数使用


1、Smooth L1 Loss

本方法由微软rgb大神提出,Fast RCNN论文提出该方法

1)假设x为预测框和真实框之间的数值差异,常用的 L1 loss、L2 Loss 和 smooth L1 loss 定义分别为:

在这里插入图片描述

2)上述的3个损失函数对x的导数分别为:

在这里插入图片描述

从损失函数对 x 的导数可知:

  • L 1 L1 L1 损失函数对 x x x 的导数为常数,在训练后期, x x x很小时,如果 learning rate 不变,损失函数会在稳定值附近波动,很难收敛到更高的精度。
  • L 2 L2 L2 损失函数对x的导数在x值很大时,其导数也非常大,在训练初期不稳定。
  • s m o o t h L 1 smooth_{L1} smoothL1 完美的避开了 L 1 L1 L1 L 2 L2 L2损失的缺点。

3)实际目标检测框回归任务中的损失 loss 为: L l o c ( t u , v ) = ∑ i ∈ ( x , y , w , h ) s m o o t h L 1 ( t i u − v i ) L_{loc(t^u, v)} = \sum_{i \in (x, y, w, h)}smooth_{L1}(t_i^u - v_i) Lloc(tu,v)=i(x,y,w,h)smoothL1(tiuvi)

其中:

  • v = ( v x , v y , v w , v h ) v = (v_x, v_y,v_w, v_h) v=(vx,vy,vw,vh) :表示GT 的框坐标,
  • t u = ( t x u , t y u , t x w , t h u ) t^u = (t^u_x, t^u_y, t^w_x, t^u_h) tu=(txu,tyu,txw,thu):表示预测的框坐标,即分别求4个点的loss,然后相加作为Bounding Box Regression Loss。

在这里插入图片描述


2、nn.SmoothL1Loss 函数使用

在这里插入图片描述

torch.nn.SmoothL1Loss(size_average=None, reduce=None, reduction='mean', beta=1.0)

参数:

  • size_averagereduce已经被弃用,具体功能可由reduction替代
  • reduction:指定损失输出的形式,有三种选择:none|mean|sum。
    • none:损失不做任何处理,直接输出一个数组
    • mean:将得到的损失求平均值再输出,会输出一个数
    • sum:将得到的损失求和再输出,会输出一个数
  • beta:指定该损失在 L 1 ∼ L 2 L1\sim L_2 L1L2 之间变化的阈值,默认为1.0
import torch.nn as nn
import torch

loss1 = nn.SmoothL1Loss(reduction='none')
loss2 = nn.SmoothL1Loss(reduction='mean')

y = torch.randn(3)
y_pred = torch.randn(3)
loss_value1 = loss1(y, y_pred)
loss_value2 = loss2(y, y_pred)

print(y)   # tensor([ 1.6938, -0.3617, -1.2738])
print(y_pred)   # tensor([ 0.3932,  0.8715, -0.2410])
print(loss_value1)   # tensor([0.8007, 0.7332, 0.5328])
print(loss_value2)   # tensor(0.6889)

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

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

相关文章

浅谈Spring中事务管理器

由于事务部分代码在设计上整体比较简单,我自己觉得它在设计上没有什么特别让我眼前一亮的东西,所以下文更多的是侧重执行流程,能理解事务管理器等一众概念以及相关的变量含义,真正遇到Bug会调试,知道在什么地方打断点就…

前端FileReader对象实现图片file文件转base64

1、file转base64具体代码 // 图片file转base64方法(file文件,回调函数)fileToBase64(file, callback) {// 创建FileReader对象(不兼容IE)let reader new FileReader();// 将file转为base64 (异步操作&…

如何正确选择好用的投票平台微信公众平台投票链接链接投票平台

“年度人物楷模”网络评选投票_免费链接投票_作品投票通道_扫码投票怎样进行现在来说,公司、企业、学校更多的想借助短视频推广自己。通过微信投票小程序,网友们就可以通过手机拍视频上传视频参加活动,而短视频微信投票评选活动既可以给用户发…

driver.js web 新手交互引导工具库

前言 最近逛技术论坛发现了 driver.js 这个库,相信很多人在app中都碰到过功能引导的,这个库就可以用来做这个功能。web段项目很少见到功能引导的,但是用在uniapp 、浏览器插件 中感觉还是十分不错的,因此打算来简单学习一下&…

js 防抖函数 节流函数

某些事件中(如 onresize onscroll onkeydown onkeyup onmousemove …),会连续触发函数的执行,如果函数执行一些耗时的操作(如请求数据…),会影响性能,也有可能造成服务器压力。这时可以用 防抖函数 或 节流函数解决这种问题。 防…

分布式环境下的服务器时钟同步问题解决办法

一、分布式集群场景下时钟不同步会有什么问题? 如上面的示意图所示,分布式集群场景下如果各个服务器时间不一致,可能导致同一时间产生的数据,在处理过程中和数据库中,保存成了不同的时间,造成数据混乱。 …

大数据之Phoenix环境搭建

文章目录前言一、下载Phoenix安装包二、上传并解压三、拷贝服务包到各个hbase的lib目录下四、修改hbase的配置文件五、重启HBase集群六、连接Phoenix客户端前言 #博学谷IT学习技术支持# 本篇文章主要介绍Phoenix的环境搭建,Phoenix支持使用SQL语句操作HBase&#x…

JavaWeb6-线程常用方法

目录 1.线程等待join(共有3个方法重载) 1.1.public void join() 1.2.public void join(long millis) 2.线程终止 2.1.通过自定义标记符来中断(常用) 2.2.调用 interrupt() 方法来中断(常用,最推荐使用…

Ubuntu安装落雪音乐LX Music

网址: https://lxmusic.toside.cn/ 以 .deb 结尾的文件为在 Linux 系统上运行的版本,软件还有 .rpm/AppImage/pacman 格式的 Linux 包,但没有上传到网盘,可自行到项目发布页面下载。 在Ubuntu上安装比较简单。 安装成功 打开音乐…

maven多环境配置

maven多环境配置 参考网址: https://mp.weixin.qq.com/s/-e74bd2wW_RLx7i4YF5M2w https://mp.weixin.qq.com/s/3p53kBHqys58QdMme6lR4A 项目地址 https://gitee.com/shao_ming314/maven-profile-dir 项目说明 该项目基于目录进行多环境配置 , 具体的配置文件在 src/resource…

【Opencv--自适应图像二值化】cv2.adaptiveThreshold()

【Opencv–adaptiveThreshold】自适应阈值图像二值化 文章目录【Opencv--adaptiveThreshold】自适应阈值图像二值化1. 介绍2. adaptiveThreshold函数2.1 函数调用2.2 补充说明3. 代码示例4. 效果4.1 原图(ori.img)4.2 处理后5. 参考1. 介绍 在这里 cv2.…

ArcGIS Enterprise on Kubernetes 11.0安装示例

博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java、Linux、K8S 期待大家的关注💖点赞👍收藏⭐留言💬 目录安装前置条件基本安装解压文件生成秘钥执行安装脚本配置DNS方法一方法二…

快速上手:Prometheus和Grafana入门教程

目录一、简介二、安装Prometheus2.1 二进制安装2.2 添加到system服务2.3 访问UI三、安装Granfa3.1 Docker部署Mysql3.2 Docker部署Grafana3.3 访问UI3.4 添加Prometheus为数据源四、安装Exporter收集数据4.1 node_exporter 服务器监控下载解压启动node_exporter服务与整合Prome…

聚类-理论补充2

目录 一。拉普拉斯矩阵的定义 二。谱聚类算法:未正则拉普拉斯矩阵 三。谱聚类算法:随机游走拉普拉斯矩阵 四。谱聚类算法:对称拉普拉斯矩阵 五。进一步思考 六。随机游走和拉普拉斯矩阵的关系 七。标签传递算法 一。拉普拉斯矩阵的定义 …

MySQL(六)

查询优化 在编写快速的查询之前,需要清楚一点,真正重要的是响应时间,而且要知道在整个SQL语句的执行过程中每个步骤都花费了多长时间,要知道哪些步骤是拖垮执行效率的关键步骤,想要做到这点,必须要知道查询…

Qt之调色板类QPalette的使用

文章目录QPalette调色板类前言代码知识点讲解QPalette调色板类 前言 Qt提供的调色板类QPalette专门用于管理部件的外观显示,相当于部件或对话框的调色板,管理他们所有的颜色信息。每个部件都包含一个QPalette对象,在显示时,按照…

OnGUI Color 控件||Unity 3D GUI 简介||OnGUI TextField 控件

Unity 3D Color 控件与 Background Color 控件类似,都是渲染 GUI 颜色的,但是两者不同的是 Color 不但会渲染 GUI 的背景颜色,同时还会影响 GUI.Text 的颜色。具体使用时,要作如下定义:public static var color:Color;…

Go 管道关闭引发的探索

前言 在日常开发中, 经常会使用chan来进行协程之间的通信. 对chan的操作也无外乎读写关. 而本次, 就是从chan的关闭而来. 假设我们对外提供的方法如下: type Chan struct {ch chan int }func (c *Chan) Close() {close(c.ch) }func (c *Chan) Send(v int) {c.ch <- v }那…

Qt 工程师进阶技术23种设计模式

Qt 工程师进阶技术23种设计模式【1】23种设计模式【1】23种设计模式 设计模式是解决特定问题的一系列套路&#xff0c;这套方案提高代码可复用性、可读性、稳健性、可维护性及安全性。 23种设计模式可分为三类:结构型模式(侧重类与对象之间的组合)、行为型模式&#xff08;侧重…

day47【代码随想录】动态规划之买卖股票的最佳时机III、买卖股票的最佳时机IV、最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费

文章目录前言一、买卖股票的最佳时机III&#xff08;力扣123&#xff09;二、买卖股票的最佳时机IV&#xff08;力扣188&#xff09;三、最佳买卖股票时机含冷冻期&#xff08;力扣309&#xff09;四、买卖股票的最佳时机含手续费&#xff08;力扣714&#xff09;股票买卖问题总…