【深度学习】03-神经网络2-1损失函数

在神经网络中,不同任务类型(如多分类、二分类、回归)需要使用不同的损失函数来衡量模型预测和真实值之间的差异。选择合适的损失函数对于模型的性能至关重要。

这里的是API 的注意⚠️,但是在真实的公式中,目标值一定是热编码之后的,但是在API中可以是热编码之前的。

热编码指的是:假设一个目标值是【0,1,2,3,4】

热编码是,默认会找你的最大值去,确定有多少个0,因为0也算一个位置,所以如果最大值为5,那么就一共有6位(0,1,2,3,4,5

# 多分类的损失,热编码之前import torch
import torch.nn as nn
# 真实值
y_true = torch.tensor([2,3],dtype=torch.int64)
y_predict = torch.tensor([[10,20,35,20,23],[23,22,22,26,12]],dtype=torch.float32)# 损失计算
loss = nn.CrossEntropyLoss()
print(loss(y_predict,y_true))

tensor(0.0414)

#多分类损失,热编码之后
import torch
import torch.nn as nn
# 真实值
# y_true = torch.tensor([2,3],dtype=torch.int64)
y_true= torch.tensor([[0,0,1,0],[0,0,0,1]],dtype=torch.float32)
y_predict = torch.tensor([[10,20,35,20],[23,22,22,26]],dtype=torch.float32)# 损失计算
loss = nn.CrossEntropyLoss()
print(loss(y_predict,y_true))

tensor(0.0414)

# 二分类的损失import torch
import torch.nn as nn
# 真实值
y_true = torch.tensor([0,0,1],dtype=torch.float32)# 预测值
y_predict= torch.tensor([0.2,0.1,0.8],dtype=torch.float32)# 损失计算
loss = nn.BCELoss()
print(loss(y_predict,y_true))

tensor(0.1839)

 L1 这个损失函数最大的特点是: 零点不平滑,导致不可导,跳过极小值,所以不会用来做损失函数,而是做正则化用来缓解过拟合。

L2 的特点是,当初始值的给的不好,导致预测值和目标值差异大的时候,会产生梯度爆炸,所以我们也不用这个损失函数,而是做正则化来缓解过拟合。
把L1 和 L2 损失函数,联合起来。就是我们的 smooth L1 损失函数
import torch
import torch.nn as nn# 真实值
y_true = torch.tensor([1.0,2.0,3.0])# 预测值
y_predict= torch.tensor([2.0,2.5,5.0])# 损失计算
l1 = nn.L1Loss()
l2 = nn.MSELoss()
sml1 = nn.SmoothL1Loss()
print(l1(y_predict,y_true))
print(l2(y_predict,y_true))
print(sml1(y_predict,y_true))

对于回归任务建议使用的 SmoothL1 损失。

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

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

相关文章

STM32 的 SDIO 接口(基于STM32F429HAL库)

目录 一、引言 二、SDIO 控制器组成 1.时钟管理模块 2.命令通道模块 3.数据通道模块 4.中断管理模块 三、STM32F429 的 SDIO 特性 1.高速数据传输 2.兼容性强 3.灵活的配置选项 4.可靠性和稳定性 四、HAL 库中的 SDIO 相关结构和函数 1.SD_HandleTypeDef结构体…

基于SpringBoot+Vue的在线问诊管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

OpenCV特征检测(12)检测图像中的潜在角点函数preCornerDetect()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算用于角点检测的特征图。 该函数计算源图像的基于复杂空间导数的函数 dst ( D x src ) 2 ⋅ D y y src ( D y src ) 2 ⋅ D x x src − 2 …

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本,最近换了一个4.6.82的版本,在本地上浏览文件运行的好好的,但是发布到服务器(IIS)上打不开文件,控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…

自动换行且带下划线的居中长标题的论文封面一种绘图实现

自动换行且带下划线的居中长标题的论文封面一种绘图实现 引言 在一些学位论文的封面上要求标题带有下划线,但长标题的情况下标题自动换行后下划线就会面临一些问题。 因此,往往需要一些特殊的处理。 在《如何制作自动换行且有定长下划线的论文封面模板…

第九节 Opencv自带颜色表操作

知识点:Look Up lTable(LUT)查找表 了解LUT查找表的作用与用法,代码实现与API介绍 -applyColorMap(src,dst,COLORMAP) -src表示输入图像 -dst表示输出图像 匹配到的颜色LUT,Opencv支持13种…

17.2 ksm源码讲解

本节重点介绍 : k8s资源对象的 buildStores构造函数注入MetricFamiliesk8s client-go 之 Reflector listAndWatch 方法watchHandler 监听更新,调用add等action 架构图总结 项目地址 地址 go get go get -v -d k8s.io/kube-state-metrics/v2v2.1.1源码分析 m…

【Godot4.3】自定义数列类NumList

概述 数列是一种特殊数组。之前写过等比、等差数列、斐波那契等数列的求取函数。今天就汇总到一起,并添加其他的一些数列,比如平方数、立方数、三角形数等。 这里我首先采用以前比较喜欢的静态函数库的写法,然后在其基础上改进为基于类继承…

大数据毕业设计选题推荐-国潮男装微博评论数据分析系统-Hive-Hadoop-Spark

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、PHP、.NET、Node.js、GO、微信小程序、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇…

[vulnhub] Jarbas-Jenkins

靶机链接 https://www.vulnhub.com/entry/jarbas-1,232/ 主机发现端口扫描 扫描网段存活主机,因为主机是我最后添加的,所以靶机地址是135的 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-21 14:03 CST Nmap scan…

Android中高级面试题笔记题理论知识大全(PDF免费下载)

Android中高级面试题笔记题理论知识大全(PDF免费下载) 基本上全覆盖了市面上中大厂的面试题,笔试题。而且持续更新。 而且现在市场行情非常不好,所以多学点,背点面试题,笔记题目总没有坏处,只有好处。想获取更多资料: …

手机上轻松解压并处理 JSON 文件

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在手机上有着广泛的应用场景。 首先,在数据传输方面,许多移动应用程序通过网络请求与后端服务器进行交互,而服务器端的 API 接口通常使用 JS…

[Redis][持久化][上][RDB]详细讲解

目录 0.前言1.RDB0.是什么?1.触发机制2.流程说明3.RDB文件的处理4.RDB的优缺点 0.前言 Redis ⽀持 RDB 和 AOF 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题,当下次重启时利⽤之前持久化的⽂件即可实现数据恢复 RDB ->…

Qt/C++ 了解NTFS文件系统,解析MFT主文件表中的常驻属性与非常驻属性

系列文章目录 整个专栏系列是根据GitHub开源项目NTFS-File-Search获取分区所有文件/目录列表的思路。 具体的如下: Qt/C 了解NTFS文件系统,了解MFT(Master File Table)主文件表(一) 介绍NTFS文件系统,对比通过MFT(Master File Tab…

16、斑马设备的ppocer-4进行文字识别,和opencv-mobile中文显示

基本思想:手上有个斑马设备,是客户的,简单记录一下开发过程和工程项目,同时记录跟着android小哥学习了很多anroid的知识,转ppocr-4参考之前的ppocr-3转换即可,整个框架仍然使用c++ ncnn jni框架推理和现实,图像库使用opencv-mobile 一、首先转paddle-cor-4 到ncnn的框架…

Pointnet++改进59:全网首发MogaBlock(2024最新模块)|用于在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入MogaBlock,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.…

pdf怎么删除空白页?分享5个删除pdf页面的方法(批量删除法)

pdf文件因其跨平台、格式稳定的特性,已成为我们工作、学习中不可或缺的一部分。那么在编辑pdf格式文档中,总会遇到一些难题,比如说pdf怎么删除空白页 pdf与word一样,具备了多种编辑功能,只不过是word倾向于编辑&#x…

gitlab集成CI/CD,shell方式部署

目录 1.首先安装好gitlab和gitlab-runner,这两个,看我以往的教程 2.注册新的 Runner 3. 步骤 3.1 Enter the GitLab instance URL (for example, https://gitlab.com/): 3.2 Enter the registration token: 3.3 Enter a description for the runner: 3…

Python模块和包:自定义模块和包③

文章目录 一、模块1.1 什么是模块1.2 创建模块1.3 导入模块1.4 模块的命名空间 二、包2.1 什么是包2.2 创建包2.3 导入包2.4 包的命名空间 三、综合详细例子3.1 项目结构3.2 模块代码student.pycourse.pymanager.py 3.3 主程序代码main.py 3.4 运行结果 四、总结 Python模块和包…

Java 中的运算符重载

在这篇文章中,我们将深入探讨 Java 中 Operator 重载的迷人世界。尽管 Java 本身不支持运算符重载,但我们将发现 Manifold 如何使用该功能扩展 Java。我们将探讨它的好处、局限性和用例,尤其是在科学和数学代码方面。 我们还将探索 Manifold …