PyTorch学习笔记:nn.SmoothL1Loss——平滑L1损失

news2025/1/12 3:44:34

PyTorch学习笔记:nn.SmoothL1Loss——平滑L1损失

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

功能:创建一个平滑后的 L 1 L_1 L1损失函数,即Smooth L1:
l ( x , y ) = L = { l 1 , … , l N } T l(x,y)=L=\{l_1,\dots,l_N\}^T l(x,y)=L={l1,,lN}T
其中,
l n = { 1 2 β ( x n , y n ) 2 , ∣ x n − y n ∣ < β ∣ x n − y n ∣ − 1 2 β , otherwise \begin{aligned} l_n=\left\{ \begin{matrix} & \frac{1}{2\beta}(x_n,y_n)^2, \quad |x_n-y_n|<\beta\\ &|x_n-y_n|-\frac12\beta,\quad \text{otherwise} \end{matrix} \right. \end{aligned} ln={2β1(xn,yn)2,xnyn<βxnyn21βotherwise

  如果绝对值误差低于 β \beta β,则创建一个平方项的损失( L 2 L_2 L2),否则使用绝对值损失( L 1 L_1 L1),此损失对异常值的敏感性低于 L 2 L_2 L2损失,即当 x x x y y y相差过大时,该损失数值要小于 L 2 L_2 L2损失数值,在某些情况下该损失可以防止梯度爆炸,损失图如下所示:

在这里插入图片描述

输入:

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

注意:

  • Smooth L1损失与 L 1 L_1 L1损失类似,但是随着 ∣ x − y ∣ < β |x-y|<\beta xy<β,即随着 x x x y y y的靠近,损失形式逐渐向 L 2 L_2 L2损失的形式靠近

代码案例

一般用法

import torch.nn as nn
import torch

# reduction设为none便于逐元素对比损失值
loss = nn.SmoothL1Loss(reduction='none')
x = torch.randn(10)
y = torch.randn(10)
loss_value = loss(x, y)
print(x)
print(y)
print(loss_value)

输出

# x
tensor([ 0.7584,  1.0724,  0.8966, -1.0947, -1.8141, -1.8305, -1.5329, -0.3077,
         0.6814, -0.2394])
# y
tensor([ 0.5081, -0.1718,  0.7817, -0.8019, -0.6405, -1.4802,  2.3039,  1.4522,
         1.1861, -0.2443])
# loss
tensor([3.1319e-02, 7.4427e-01, 6.6015e-03, 4.2872e-02, 6.7358e-01, 6.1354e-02,
        3.3368e+00, 1.2598e+00, 1.2736e-01, 1.1723e-05])

注:画图程序

import torch.nn as nn
import torch
import numpy as np
import matplotlib.pyplot as plt

loss = nn.SmoothL1Loss(reduction='none')
x = torch.tensor([0]*100)
y = torch.from_numpy(np.linspace(-3,3,100))
loss_value = loss(x,y)
plt.plot(y, loss_value)
plt.savefig('SmoothL1Loss.jpg')

官方文档

nn.SmoothL1Loss:https://pytorch.org/docs/stable/generated/torch.nn.SmoothL1Loss.html#torch.nn.SmoothL1Loss

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

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

相关文章

【Python爬虫实战案例】采集城市桌游商家数据信息,做可视化演示

前言 这里容我罗嗦几句 &#x1f617; 这个时间&#xff0c;我想大学生应该都回学校了吧&#xff0c;嘿嘿 现在应该蛮忙的&#xff0c;有些的还要准备开学考&#xff0c;临近毕业的朋友&#xff0c;也快要因为工作而烦恼了&#xff0c;但是&#xff01;&#xff01; 咱也是…

新版国家标准GB/T 28181—2022将于2023年7月1日正式实施,与GB/T 28181—2016差别有哪些?

新版国家标准GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布&#xff0c;将于2023年7月1日正式实施。与GB/T 28181—2016相比&#xff0c;除结构调整和编辑性改动外&#xff0c;主要技术变化如下。——更改了标准范围&#xf…

排序:堆排序

一、树与二叉树 二、二叉树 1.二叉树&#xff1a;度不超过2的树&#xff08;度&#xff1a;树的分支&#xff09;&#xff0c;每个节点最多有两个孩子节点&#xff0c;两个孩子节点被区分为左孩子节点和右孩子节点。 2.满二叉树&#xff1a;一个二叉树&#xff0c;如果每一个层…

minio查询桶中文件,桶目录中文件

文章目录前言一、文件桶中的文件夹是什么&#xff1f;二、文件查询1.桶中文件查询2.桶中文件夹中的文件查询总结前言 文章再续,书接上文 minio进阶分页查询 说到了文件,可以实现分页查询,然后上次查询的是桶中的文件列表,这次遇到了需要数据隔离的文件,也就是需要在桶中再次建…

I.MX6ULL内核开发3:linux内核设计字符设备原理(简单版)

目录 一、Linux哲学 二、如何把字符设备抽象成文件 三、硬件层原理 四、驱动层原理 五、文件系统原理 一、Linux哲学 一切皆文件 二、如何把字符设备抽象成文件 open函数&#xff0c;在文件系统中找到指定文件的操作接口&#xff0c;绑定到进程task_struct->file_str…

2023-02-10 - 4 丰富的搜索功能

ES为用户提供了丰富的搜索功能&#xff1a;既有基本的搜索功能&#xff0c;又有搜索建议功能&#xff1b;既有常用的普通类型的匹配功能&#xff0c;又有基于地理位置的搜索功能&#xff1b;既提供了分页搜索功能&#xff0c;又提供了搜索的调试分析功能。 1 搜索辅助功能 俗…

人大金仓数据库的归档日志

归档日志 归档日志是非活动的WAL日志备份。通过使用归档日志&#xff0c;可以保留所有WAL日志的历史记录&#xff0c;当数据库处于ARCHIVELOG模式并进行日志切换时&#xff0c;后台进程archiver process会将WAL日志的内容保存到归档日志中&#xff0c;当数据库出现介质失败时&…

2017-PMLR-Neural Message Passing for Quantum Chemistry

2017-PMLR-Neural Message Passing for Quantum Chemistry Paper: https://arxiv.org/pdf/1704.01212.pdf Code: https://github.com/brain-research/mpnn 量子化学的神经信息传递 这篇文献作者主要是总结了先前神经网络模型的共性&#xff0c;提出了一种消息传递神经网络&am…

掌握了这项技能的性能测试师,90%都升职加薪了

初入职场的新人该怎么做才能让自己快速成长&#xff1f;在公司一直做着手工测试&#xff0c;如何才能提升自己&#xff0c;避免陷入“只涨年龄不涨经验”的尴尬&#xff1f;做为一名软件测试工程师&#xff0c;我们不得不去面对这些问题&#xff0c;有的人找到了答案&#xff0…

你不会还不知道如何监测用户的网络是否在线吧?

我最近遇到一个需求&#xff0c;要给网站添加一个用户网络离线提醒。要求我们要实时监测用户的网络状态&#xff0c;当用户断网了&#xff0c;我们要立马给用户弹出一个断网提醒。 那你可能会问&#xff0c;为什么要做这么一个需求呢&#xff1f;用户断网了&#xff0c;网页不…

华为、南卡和漫步者蓝牙耳机怎么选?国产高性价比蓝牙耳机推荐

随着蓝牙耳机的快速发展&#xff0c;现如今使用蓝牙耳机的人也越来越多。其中&#xff0c;日益增多的国产蓝牙耳机品牌也逐渐被大众认识、认可。目前一些热销的国产蓝牙耳机&#xff0c;如华为、南卡和漫步者等都是大家比较熟知的品牌。那么&#xff0c;这三个品牌哪个性价比高…

已解决SqlServer报错Arithmetic overflow error converting expression to data type int

本文记录(pymssql.OperationalError) (8115, b’Arithmetic overflow error converting expression to data type int.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n’)报错解决方法&#xff0c;亲测有效&#x…

教师教学短视频录制有好用工具分享:

别再为制作微课发愁了啦&#xff0c;掌握这7款微课制作神器软件&#xff0c;让你的工作效率超级加倍&#xff01; 话不多说&#xff0c;一起来看看有哪些宝藏软件吧~ canvas 平台&#xff1a;电脑、网页、手机 定位&#xff1a;超多模板的制图软件 制作PPT、手抄报、奖状都…

手把手带你体验ChatGPT

1、ChatGPT介绍 ChatGPT&#xff0c;美国OpenAI 研发的聊天机器人程序 &#xff0c;于2022年11月30日发布 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人…

修复 KubeSphere 内置 Jenkins 的 Apache Log4j2 漏洞

作者&#xff1a;老Z&#xff0c;中电信数智科技有限公司山东分公司运维架构师&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 简介 生产环境 KubeSphere 3.3.0 部署的…

【网络~】

网络一级目录二、socket套接字三、UDP数据报套接字四、TCP流套接字一级目录 1.局域网、广域网 2.IP地址是什么&#xff1f; IP地址是标识主机在网络上的地址 IP地址是如何组成的&#xff1f; 点分十进制&#xff0c;将32位分为四个部分&#xff0c;每个部分一个字节&#xff…

He3 更新:中文

系统级更新 焕然一新的主界面 这一次对整体 UI 界面做了一个大的调整&#xff0c;整体更加扁平美观&#xff0c;布局更加紧凑协调&#xff0c;视觉层面更加集中聚焦。 旧版 新版 工具内容居中 上下文工具以及关联工具放置在右侧&#xff0c;工具内容居中&#xff0c;在使…

ASP.NET Core3.1实战教程---基于Jquery单文件上传

这个必须记录一下费劲啊&#xff01;废了我2天的时间&#xff0c;昔日的net快速已经没落....就文件上传都这么费劲。 先说下要求&#xff08;在线apk文件上传实现手机端整包更新&#xff09;&#xff1a; 1、为了简化需求文件上传和数据提交分开执行 2、选完文件后按钮变成上…

web前端——HTML+CSS

整体框架 HTML CSS CSS进阶 CSS盒子模型 定位装饰 CSS精灵图 目录 基础认识 HTML 一、HTML概念 二、HTML页面固定结构 三、HTML标签的结构 四、标签学习 1、排版标签 1&#xff09;标题标签 2&#xff09;段落标签 3&#xff09;换行标签 4&#xff09;水平线…

【LeetCode】1223. 掷骰子模拟

1223. 掷骰子模拟 题目描述 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数。 不过我们在使用它时有个约束&#xff0c;就是使得投掷骰子时&#xff0c;连续 掷出数字 i 的次数不能超过 rollMax[i]&#xff08;i 从 1 开始编号&#xff09;。 现在&#xff0c;…