PyTorch损失函数

一、损失函数是什么

损失函数:衡量模型输出与真实标签的差异
在这里插入图片描述

在这里插入图片描述

class _Loss(Module):
    def __init__(self, size_average=None, reduce=None, reduction='mean'):
        """
        Loss函数的基类,定义了一些通用的属性和方法。
        参数:
        - size_average (bool, optional): 是否对损失值进行平均,默认为None。
        - reduce (bool, optional): 是否对损失值进行降维,默认为None。
        - reduction (str, optional): 损失值的降维方式,默认为'mean'。
        """
        super(_Loss, self).__init__()
        if size_average is not None or reduce is not None:
            self.reduction = _Reduction.legacy_get_string(size_average, reduce)
        else:
            self.reduction = reduction

这段代码定义了一个Loss函数的基类 _Loss,用于定义其他具体的损失函数。在初始化方法 __init__ 中,该基类接受三个可选参数:size_averagereducereductionsize_averagereduce 用于确定是否对损失值进行平均和降维操作,reduction 则用于指定损失值的降维方式,默认为均值 'mean'

基类 _Loss 的作用是提供了一些通用的属性和方法,其他具体的损失函数可以继承该基类,并根据自己的需求重写或添加特定的属性和方法。

1、nn.CrossEntropyLoss

功能: nn.LogSoftmax ()与nn.NLLLoss ()结合,进行交叉熵计算

nn.CrossEntropyLoss 是 PyTorch 中用于计算交叉熵损失的函数。它是将 nn.LogSoftmaxnn.NLLLoss 结合在一起使用的。

主要参数如下:

  • weight:各类别的损失权重,默认为 None。
  • ignore_index:忽略某个类别的索引,默认为 None。
  • reduction:计算模式,可选值为 'none''sum''mean'
    • 'none':逐个元素计算损失。
    • 'sum':所有元素的损失值求和,返回一个标量。
    • 'mean':所有元素的损失值求平均,返回一个标量。

nn.CrossEntropyLoss 适用于多分类问题,输入的预测值是经过 nn.LogSoftmax 处理后的,目标值是类别的索引。它将预测值与目标值进行比较,计算交叉熵损失,并返回损失值。可以通过设置参数来调整损失的计算方式和权重,以满足实际需求。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


2、nn.NLLLoss

nn.NLLLoss 是 PyTorch 中用于计算负对数似然损失的函数。下面是该函数的主要参数说明:

  • weight:各类别的损失权重,默认为 None。可以使用一个 1D 张量来为每个类别指定不同的权重。如果设置为 None,则所有类别的权重都相等。
  • size_average:已弃用参数,不再使用。
  • ignore_index:忽略某个类别的索引,默认为 -100。在计算损失时,会忽略目标值中等于 ignore_index 的类别。
  • reduce:已弃用参数,不再使用。
  • reduction:计算模式,可选值为 'none''sum''mean'
    • 'none':逐个元素计算损失。
    • 'sum':所有元素的损失值求和,返回一个标量。
    • 'mean':所有元素的损失值求平均,返回一个标量。

nn.NLLLoss 的作用是实现负对数似然函数中的负号功能。它将预测值作为输入,目标值作为目标,计算负对数似然损失,并返回损失值。

在这里插入图片描述


3、nn.BCELoss

nn.BCELoss 是 PyTorch 中用于计算二分类交叉熵损失的函数。下面是该函数的主要参数说明:

  • weight:各类别的损失权重,默认为 None。可以使用一个 1D 张量来为每个类别指定不同的权重。如果设置为 None,则所有类别的权重都相等。
  • ignore_index:忽略某个类别的索引,默认为 None。在计算损失时,会忽略目标值中等于 ignore_index 的类别。
  • reduction:计算模式,可选值为 'none''sum''mean'
    • 'none':逐个元素计算损失。
    • 'sum':所有元素的损失值求和,返回一个标量。
    • 'mean':所有元素的损失值求平均,返回一个标量。

需要注意的是,nn.BCELoss 的输入值应该在 [0, 1] 的范围内,表示二分类任务中的概率值。该函数将预测值和目标值进行比较,计算二分类交叉熵损失,并返回损失值。可以通过设置参数来调整损失的计算方式、权重和忽略的类别,以满足实际需求。

在这里插入图片描述


4、 nn.BCEWithLogitsLoss

nn.BCEWithLogitsLoss 是结合了 Sigmoid 函数和二分类交叉熵损失的函数,并且在计算损失时,输入的网络输出值不需要经过 Sigmoid 函数。

下面是 nn.BCEWithLogitsLoss 的主要参数说明:

  • pos_weight:正样本的权重,默认为 None。可以使用一个标量或与目标张量形状相同的张量来为正样本指定不同的权重。如果设置为 None,则所有样本的权重都相等。
  • weight:各类别的损失权重,默认为 None。可以使用一个 1D 张量来为每个类别指定不同的权重。如果设置为 None,则所有类别的权重都相等。
  • ignore_index:忽略某个类别的索引,默认为 None。在计算损失时,会忽略目标值中等于 ignore_index 的类别。
  • reduction:计算模式,可选值为 'none''sum''mean'
    • 'none':逐个元素计算损失。
    • 'sum':所有元素的损失值求和,返回一个标量。
    • 'mean':所有元素的损失值求平均,返回一个标量。

需要注意的是,在使用 nn.BCEWithLogitsLoss 时,网络的最后一层不需要加上 Sigmoid 函数,因为该函数内部会自动将输入通过 Sigmoid 函数进行处理。nn.BCEWithLogitsLoss 将结合 Sigmoid 函数和二分类交叉熵损失来计算损失值,并返回结果。可以通过设置参数来调整损失的计算方式、权重和忽略的类别,以满足实际需求。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux相关操作

1:掌握虚拟机快照的制作和还原 然后转到就欧克了,相当于游戏存档。 2:linux基础命令 1:掌握linux系统的目录结构 linux没有盘符概念,只有一个根目录/,所有文件都在它之下 路径的描述方式: 在l…

canvas设置图形图案、文字图案

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

人声处理用什么软件好 FL Studio 怎么修人声 人声处理软件 人声处理步骤

一、人声处理用什么软件好 现在人声处理软件还是非常多的,有专门的人声处理软件,也有具备人声处理功能的编曲软件。专门人声处理的软件操作比较简单,但是处理后的人声在使用的时候可能还需要进行再处理,这会比较麻烦。具备人声处…

瑞幸黑金鹿王者霸屏尊享权益的技术实现方式探讨

上周六,公司加班举办技术专场招聘活动,在忙碌的下午茶歇时间,我尊敬的伟大的韩百万老师提议带着我去瑞幸装了个 BI,扫码领取咖啡的那一个瞬间,瑞幸店内的电视大屏上赫然显示了:韩百万。回来的路上我虚心请教…

基于Go框架,Cloudreve个人免费开源网盘系统源码,支持云存储(七牛、阿里云OSS、腾讯云COS、又拍云、OneDrive)

源码介绍 在数字化时代,我们经常需要存储、分享大量的文件,如照片、视频、文档等。然而,许多商业网盘服务却存在限速、收费等问题,给用户带来诸多不便。现在,我们为您推荐一款免费开源的网盘系统——Cloudreve。 Clo…

多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测

多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现GRO-CNN-BiLSTM-Attention淘金算法优化卷积神经网络-双向长短期记忆网络结合注意力机制多变量时间序列预测效果一览基…

《GreenPlum系列》GreenPlum初级教程-02GreenPlum单节点安装

文章目录 第二章 GreenPlum安装1.Docker创建centos容器1.1 拉取centos7镜像1.2 创建容器1.3 进入容器1.4 容器和服务器免密操作1.4.1 生成密钥1.4.2 拷贝密钥 1.5 安装ssh服务和网络必须应用1.6 容器设置root密码1.6.1 安装passwd应用1.6.2 容器本机root设置密码 1.7 容器本机免…

用模方软件进行模型的透明贴图,为什么翻出来透明部分是黑的?

答:透贴需要用PNG格式。 模方是一款针对实景三维模型的冗余碎片、水面残缺、道路不平、标牌破损、纹理拉伸模糊等共性问题研发的实景三维模型修复编辑软件。模方4.1新增自动单体化建模功能,支持一键自动提取房屋结构,平均1栋复杂建筑物只需3…

Next.js 集成 Auth0 登入和自定义登入页面

Next.js 集成 Auth0 和自定义登入页面 注册账号和基本配置进入 auth0 官网注册账号并登入进入控制台后访问 Applications/Applications进入程序配置页面添加配置 在 Next.js 使用在项目中集成 通过 Auth0Lock 配置方式自定义登入页面效果展示实现过程 注册账号和基本配置 进入…

NeRF 其二:Mip-NeRF

NeRF 其二:Mip-NeRF 1. 混叠图像中的混叠现象 2. 如何抗混叠3. NeRF 中的解决方案4. 圆锥台近似计算与集成位置编码4.1 圆锥台采样4.2 三维高斯逼近圆锥台4.3 集成位置编码 5. Mip-NeRF 与 NeRF 的比较5.1 位置编码与集成位置编码5.2 采样差异5.3 网络数量 Referenc…

力扣2182.构造限制重复的字符串

思路:先记录每个字符的出现次数,构建一个新字符串,从尾取字符,每取一个该字符个数-1,若该字符已经取到有repeatLimit个,则递归取次大的字符,并对应字符个数-1,若没有次大字符了&…

漏洞复现-nginxWebUI runCmd前台远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

TDA4VM,SBL启动

文章目录 参考make BOARD=j721e_evm CORE=mcu1_0 BUILD_PROFILE=release pdk_libs -sj参考:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1201734/tda4vm-error-while-loading-shared-libraries-libtinfo-so-5-for-building-sdl-in-sdk-0805

【Flutter 开发实战】Dart 基础篇:List 详解

嗨,各位朋友们,欢迎来到这篇博客!今天我们将一起踏入 Dart 语言的神奇世界,深入了解 Dart 中的 List 类型。不用担心,我会尽可能用最通俗易懂的语言,让你对 List 有一个更深刻的理解。 Dart 中的 List Li…

机器学习算法理论:线性回归

线性回归 回归的理论解释:回归分析是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法。按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。 如果在回归分析中,只包括一个自变量和一个因变量,…

跟着cherno手搓游戏引擎【5】layer(层)、Glad

编写基类层: Layer.h:提供Attach链接、Detach解绑、Update刷新、Event事件、GetName方法 #pragma once #include"YOTO/Core.h" #include"YOTO/Event/Event.h" namespace YOTO {class YOTO_API Layer{public:Layer(const std::string& nam…

【软件测试】学习笔记-不同视角的软件性能与性能指标

本篇文章探讨新的测试主题:性能测试,因为性能测试的专业性很强,所以我会以从0到1的入门者视角,系统性地阐述性能测试的方法以及应用领域,用实例去诠释各种性能指标。 本篇文章站在全局的视角,帮你梳理软件性…

【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】

前言 大家好吖,欢迎来到 YY 滴C考前速过系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《…

统计学-R语言-4.2

文章目录 前言单变量数据的描述分析分类型数据频数表条形图饼图 数值型数据数值型数据数据的集中趋势--均值数据的集中趋势--众数 离散程度离散程度--极差离散程度--四分位数极差离散程度--方差离散程度--加权方差离散程度--标准差离散程度--变异系数 数据的形状数据的形状--偏…

RAG(检索增强生成 )

📑前言 本文主要是【RAG】——RAG(检索增强生成 )的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句…