当前位置: 首页 > news >正文

【损失函数】SmoothL1Loss 平滑L1损失函数

1、介绍

torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数,通常用于回归问题。它是 L1 损失和 L2 损失的结合,旨在减少对异常值的敏感性。

loss_function = nn.SmoothL1Loss(reduction='mean', beta=1.0)

2、参数

  1. size_average (已弃用): 以前用于确定是否应该对损失的每个元素取平均。如果设置为 False,则对损失进行求和。现在此选项已被弃用,应使用 reduction 参数代替。

  2. reduce (已弃用): 这也是一个旧参数,用于指定是否应用缩减。现在也被 reduction 参数替代。

  3. reduction: 指定应用于输出的缩减方法。可选值为:

    • 'none': 不应用缩减。
    • 'mean': 计算损失的平均值。
    • 'sum': 计算损失的总和。
  4. 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博客

http://www.lryc.cn/news/270377.html

相关文章:

  • Go语言中的HTTP重定向
  • ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享
  • 鸿蒙开发ArkTS基础学习-开发准备工具配置
  • WEB 3D技术 three.js 雾 基础使用讲解
  • Python中的网络编程
  • uni-app js语法
  • 【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain
  • Mysql(5日志备份恢复)
  • MR实战:实现数据去重
  • JVM 常用知识和面试题
  • 【教3妹学编程-算法题】一年中的第几天
  • ramdump 中的memory统计
  • Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题
  • 基于NASM搭建一个能编译汇编语言的汇编软件工具环境(利用NotePad++)
  • 使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用
  • 计算机组成原理-总线概述
  • 三角函数两角和差公式推导
  • HarmonyOS page生命周期函数讲解
  • 3D视觉-结构光测量-线结构光测量
  • ssm基于web的马病管理系统设计与实现+jsp论文
  • SaaS版Java基层健康卫生云HIS信息管理平台源码(springboot)
  • redis,memcached,nginx网络组件,网络编程——reactor的应用
  • 【机电、机器人方向会议征稿|不限专业|见刊快】2024年机械、 图像与机器人国际会议(IACMIR 2024)
  • uniapp学习之路
  • 移动开发新的风口?Harmony4.0鸿蒙应用开发基础+实践案例
  • QT上位机开发(倒计时软件)
  • 2023 楚慧杯 --- Crypto wp
  • Python+OpenCV 零基础学习笔记(1-3):anaconda+vscode+jupyter环境配置
  • Spring Cloud Gateway 常见过滤器的基本使用
  • maven依赖无法传递问题排查