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

深度学习 —— 损失函数

目录损失函数一、多分类交叉熵函数 —— nn.CrossEntropyLoss()二、二分类交叉熵函数 —— nn.BCELoss()三、回归任务1. MAE 损失函数2. MSE损失函数3. Smooth L1 Loss 也称为 Huber Loss4. 如何选择回归任务的损失函数5. 代码损失函数是什么 评估模型的预测值和真实值差距的函数从而评估模型的好坏损失值越小越好。损失函数、代价函数、目标函数、误差函数同一个意思。一、多分类交叉熵函数 —— nn.CrossEntropyLoss()自带了SoftMax模型的输出输出层不需要再softmax例如带入公式正确类别的预测概率 曲线总结其中y_logits是模型的原始输出/预测分数softmax(y_logits)是模型输出的概率分布也就是每个类别的预测概率最大概率对应预测类别注意多分类交叉熵CrossEntropLoss里面有softmax运算所以模型的输出层不需要softmax。但是如果要获取预测概率则需要在模型输出的原始预测分数后面经过softmax应用多分类问题如10个类别预测图片属于哪一类API:nn.CrossEntropyLoss()代码import torch import torch.nn as nn# 1.创建 样本的真实值假设是一个三分类任务, 真实类别为[1,0,2,0]. 4个样本 y_true torch.tensor([1,0,2,0], dtypetorch.long) # 2.创建 模型的预测分数y_logits y_logits torch.tensor([ [0.1,2.0,1.0], [0.2,0.5,0.3], [0.3,0.2,0.5], [0.5,0.2,0.3] ]) # 3.创建 多分类交叉熵损失函数对象 loss_fn nn.CrossEntropyLoss() # 4.计算损失 # y_logits: 2D(batch_size, 3), y_true: 1D(batch_size) # 为什么是 3 ---- 三分类 loss loss_fn(y_logits,y_true) print(f多分类交叉熵损失函数: {loss})二、二分类交叉熵函数 —— nn.BCELoss()二分类中使用总结二分类交叉熵损失公式BCELoss -y*log(y_hat)-(1-y)*log(1-y_hat)其中y_hat是模型的预测值也就是经过sigmoid之后的预测概率对应正类y 是真实值0或1负类标签编码0one-hot编码[1,0],正类标签编码1one-hot[0,1]注意二分类交叉熵损失BCELoss里面没有sigmoid所以模型输出层最后需要添加sigmoidAPI:nn.BCELoss()代码# 1.创建 样本的真实值假设是一个二分类任务, 真实类别为[0,1,0,1] y_true torch.tensor([0,1,0,1], dtypetorch.float) # 2. 创建 预测分数 1D (batch_size,) y_logits torch.tensor([10, -10, -50, 2.5], dtypetorch.float) # 预测类别 [1,0,0,1] # 经过sigmoid转换为概率这里才是模型输出的预测值 y_preds torch.sigmoid(y_logits) # 3. 创建 二分类交叉熵损失函数 loss_fn nn.BCELoss() # 4. 计算损失 # y_pred: 1D (4,). y_true:1D(4,) loss loss_fn(y_preds,y_true) print(f二分类交叉熵损失: {loss})二分类任务可以用 多分类交叉熵损失。三、回归任务1. MAE 损失函数公式特点① 损失 - 误差呈线性关系② MAE损失函数本身不具有稀梳性不会让权重衰减为0③ 最大问题是梯度在零点不平滑会跳过极小值④ 适用于回归问题中存在异常值或噪声数据时可以减少对离群点的敏感性2. MSE损失函数Mean Squared Loss / Quadratic Loss (MSE loss) 也被称为L2 loss或欧氏距离。计算误差平方的平均值. 均差平方之和 / 样本总数公式特点① 损失-误差呈二次曲线关系② 处处可导、梯度平滑是最常用的回归损失函数③ 误差大时候容易梯度过大 无法有效训练模型④ 适用于大多数标准回归问题如房价、温度预测等3. Smooth L1 Loss 也称为 Huber Loss简单来说就是MAE 和 MSE的结合尤其是在面对异常值时它能平滑过渡避免大误差的影响公式可以转换看做 1是 MSE. ≥ 1 是MAE解决L1MAE在0点不平滑、以及L2MSE的梯度爆炸问题4. 如何选择回归任务的损失函数MSE Smooth L1 MAEAPI:nn.L1Loss()nn.MSELoss()nn.SoothL1Loss()5. 代码# 1.创建 样本的真实值 # 4个样本 y_true torch.tensor([20.0,21.0,22.0,23.0],dtypetorch.float32) # 2.创建 模型的预测值 y_pred torch.tensor([21.0,22.0,23.0,24.0],dtypetorch.float32,requires_gradTrue) # 3.定义损失函数对象 loss_fn1 nn.L1Loss() loss_fn2 nn.MSELoss() loss_fn3 nn.SmoothL1Loss() # 4.计算损失值 loss1 loss_fn1(y_pred,y_true) loss2 loss_fn2(y_pred,y_true) loss3 loss_fn3(y_pred,y_true) # 5.打印损失值 print(f损失值 MAE{loss1}) # 1 print(f损失值 MSE{loss2}) # 2 print(f损失值 Smooth{loss3}) # 3

相关文章:

深度学习 —— 损失函数

目录 损失函数 一、多分类交叉熵函数 —— nn.CrossEntropyLoss() 二、二分类交叉熵函数 —— nn.BCELoss() 三、回归任务 1. MAE 损失函数 2. MSE损失函数 3. Smooth L1 Loss (也称为 Huber Loss) 4. 如何选择回归任务的损失函数 5. 代码 损失…...

Qianfan-OCR入门实战:Python requests调用OCR API并解析JSON响应

Qianfan-OCR入门实战:Python requests调用OCR API并解析JSON响应 1. 项目概述 Qianfan-OCR是百度千帆推出的开源文档智能多模态模型,基于4B参数的Qwen3-4B语言模型构建。这个端到端解决方案将传统OCR流水线简化为单一模型处理,支持文字识别…...

【从零开始学Java | 第四十一篇】深入多线程

目录 前言 一、线程的生命周期 二、线程的安全问题 1.什么是线程的安全问题 2.问题举例 三、解决线程的安全问题 1.同步代码块 前言 在上一篇博客中,已经掌握了如何创建和启动一个 Java 线程。但是,当成百上千个线程同时在系统中,如果不…...

避坑指南:用STM32CubeMX生成的工程,为什么在QEMU上跑不起来?

STM32CubeMX工程在QEMU仿真环境中的关键调试技巧 当你第一次将STM32CubeMX生成的工程移植到QEMU仿真环境时,可能会遇到程序无法启动、串口无输出等令人困惑的现象。这并非你的代码有问题,而是CubeMX默认配置与QEMU仿真特性之间存在一些需要特别注意的适配…...

FPGA上实现96.58%精度:三阶流水线CNN加速器Verilog设计避坑指南

FPGA上实现96.58%精度的三阶流水线CNN加速器设计实战 在边缘计算和实时图像处理领域,FPGA因其并行计算能力和低延迟特性成为CNN加速的理想平台。但将软件层面的神经网络模型高效映射到硬件电路,始终是工程师面临的核心挑战。本文将深入解析一种通过三阶流…...

容器启动慢?磁盘爆满?Docker 27存储驱动调优全解析,深度解读inode泄漏、layer膨胀与GC失效三大隐性故障

第一章:Docker 27存储驱动演进与核心架构变革Docker 27 引入了存储驱动的范式级重构,彻底解耦镜像层管理与运行时文件系统操作,将原生 overlay2 的硬依赖升级为可插拔的 Storage Abstraction Layer(SAL)。这一变革使容…...

薄元近似(TEA)与傅里叶模态法(FMM)的光栅建模

摘要薄元近似(TEA)是傅里叶光学中广泛应用的计算光栅衍射效率的方法。然而,我们也知道,对于较小的光栅周期,也就是当其更接近于光的波长时,近似变得不准确。在本例中,选择了两种类型的传输光栅来展示这种效果:正弦光栅…...

倾斜光栅的参数优化及公差分析

摘要 对于背光系统、光内连器和近眼显示器等许多应用来说,将光高效地耦合到引导结构中是一个重要的问题。对于这种应用,倾斜光栅以能够高效地耦合单色光而闻名。在本例中,提出了利用严格傅里叶模态方法(FMM,也称为RCWA…...

告别串口不够用!手把手教你用WK2124芯片在Firefly-RK3399上扩展4个串口(SPI转UART实战)

嵌入式开发实战:RK3399平台SPI转UART扩展方案深度解析 在物联网和工业控制领域,串口通信仍然是设备间最常用的交互方式之一。当主控芯片原生串口资源不足时,工程师们常常面临扩展需求。本文将基于Firefly-RK3399开发板和WK2124芯片&#xff0…...

保姆级教程:用ESP32的gpio_hold_en函数,搞定智能家居传感器的超长待机

保姆级教程:用ESP32的gpio_hold_en函数搞定智能家居传感器的超长待机 清晨6点,你的温湿度传感器第1825次自动唤醒,将卧室环境数据上传到家庭服务器后重新进入休眠。此时距离上次更换纽扣电池已经过去整整两年——这并非科幻场景,而…...

华为eNSP模拟企业网:三层交换机DHCP配置保姆级教程(含VLAN规划与排错)

华为eNSP企业级网络实战:三层交换机DHCP配置与VLAN设计全解析 当企业网络规模扩大到数百台设备时,手动分配IP地址就像用勺子给游泳池注水——理论上可行,但效率低到令人崩溃。这正是DHCP协议和三层交换机大显身手的地方。想象一下&#xff0c…...

保姆级教程:在Deepin/UOS上手动打包最新版QQ的deb安装包(附字体修复方案)

Deepin/UOS系统手动升级QQ客户端全流程指南:从旧版deb到定制化安装包 每次打开QQ都要忍受那个卡顿的旧版本?官方仓库的Deepin-Wine版QQ停留在9.3.2版本已经超过两年,而Windows平台早已迭代到功能更丰富的9.7版本。作为深度系统用户&#xff0…...

从‘删库到跑路’梗说起:聊聊rm -rf的设计哲学与Windows命令的替代方案

从‘删库跑路’到系统设计哲学:命令行删除操作的深层思考 "删库跑路"这个梗在技术圈流传已久,它戏谑地描述了一个极端场景——当管理员执行了rm -rf /这样的危险命令后,数据被彻底删除,只能选择"跑路"。这个玩…...

Docker 27车载部署必须关闭的5个默认守护进程,否则QNX/Hypervisor共存环境下将触发TSN时间同步漂移

第一章:Docker 27车载部署的TSN时间同步风险总览在车载边缘计算场景中,Docker 27(即 Docker v27.x 系列)被广泛用于容器化部署时间敏感网络(TSN)相关的实时通信组件,例如 IEEE 802.1AS-2020 时间…...

Swarm模式已过时?Docker 27原生调度引擎升级指南,3天完成零停机迁移

第一章:Swarm模式的历史定位与Docker 27调度范式跃迁Docker Swarm 曾是 Docker 原生容器编排的基石,自 Docker 1.12 起以内置模式(Swarm Mode)正式取代独立的 Swarm 工具链,标志着轻量级、声明式集群管理的开端。它以去…...

Docker 27原生多平台构建全解析:从buildx配置到QEMU加速,手把手落地生产级镜像交付

第一章:Docker 27跨架构镜像构建全景概览Docker 27(即 Docker Desktop 4.30 及 CLI v27.x)正式将 docker buildx 深度集成至默认构建管道,原生支持多平台交叉编译与统一镜像分发。跨架构构建不再依赖手动配置 QEMU 或独立 BuildKi…...

Dify + C# 14 AOT = 下一代AI边缘客户端?2026 Q2起Windows/Linux/ARM64三平台统一交付方案(附签名证书自动化签发脚本)

第一章:Dify C# 14 AOT 架构演进的范式转移传统 AI 应用后端长期受限于 Python 运行时开销与部署复杂性,而 Dify 作为低代码 AI 编排平台,其插件扩展能力天然需要高性能、可嵌入、强类型的安全宿主。C# 14 引入的原生 AOT(Ahead-…...

Dify车载问答准确率骤降47%?揭秘车规级NPU算力分配冲突与动态Prompt裁剪策略

第一章:Dify车载问答准确率骤降47%的现象复现与归因初判近期车载场景下Dify v0.8.2部署实例在接入高并发语音转写文本流后,问答模块Top-1准确率由82.3%断崖式下跌至43.9%,降幅达47%。为验证该现象非偶发性抖动,我们基于真实车载日…...

用Verilog在FPGA上实现一个带万年历的数字钟:从分频模块到整点报时的完整设计流程

基于FPGA的智能数字钟系统:从Verilog设计到整点报时的工程实践 在数字电路与嵌入式系统教学中,FPGA(现场可编程门阵列)因其灵活性和并行处理能力,成为实现数字逻辑系统的理想平台。本文将详细介绍如何使用Verilog HDL在…...

嵌入式产品量产必看:用LittleFS实现掉电安全的设备启动次数记录

嵌入式设备量产实战:基于LittleFS的掉电安全启动计数方案 在消费电子和IoT设备量产过程中,启动次数统计看似简单却暗藏玄机。想象一个智能电表在雷电天气下频繁断电重启,或工业传感器遭遇突发电压波动——传统存储方案可能导致数据丢失或统计…...

git clone https://github.com/RedisBloom/RedisBloom.git的生命周期的庖丁解牛

它的本质是:这不仅仅是一个“下载”动作,而是一次完整的、基于快照(Snapshot)和对象图(Object Graph)的 分布式数据同步协议执行过程。它涉及 DNS 解析、TCP/TLS 握手、Git 协议协商(Capability…...

redis_version:6.2.21默认自带布隆过滤器吗?

结论:不,Redis 6.2.21 官方原生版本(Open Source)默认【不包含】布隆过滤器(Bloom Filter)。 这是一个非常常见的误区。布隆过滤器是 RedisBloom 模块的功能,而不是 Redis 核心代码的一部分。一…...

2026 AI数字员工合规运营指南:等保2.0、关基保护与数据安全法的落地实践

摘要随着AI数字员工深入关键信息基础设施和核心业务系统,监管机构对AI安全的关注度持续升温。2026年,等保2.0测评已新增AI安全扩展要求,关基保护明确将“智能体”纳入关键资产范围。本文基于悬镜灵境AIDR在金融、政务、能源等行业的合规运营实…...

如何避免在 Map 中使用大对象作为键而导致内存积压

用大对象作Map键会导致内存泄漏,因其强引用使GC无法回收;应改用轻量ID或摘要作键,必要时用WeakHashMap并加强监控。Map 键用大对象会悄悄吃光堆内存直接说结论:用大对象(比如整个 User 实例、JSONObject、或含大量字段…...

“再一次被数学打动”,这是一套被读者追更求动画化的科普书!

“树下站着一个少女,她正抬头仰望着那棵樱花树。我想:她是位新生吧。大概和我一样也是溜出来的。我也抬头望了望那棵樱花树。模模糊糊的花色遮住了天空。刮起一阵风,飘舞着的樱花花瓣将少女裹住。少女也看到了我……"春光明媚&#xff0…...

别再只会apt-get了!手把手教你源码编译ROS Melodic的Navigation包(与Cartographer共存)

从源码构建ROS Melodic Navigation:与Cartographer共存的深度实践指南 在ROS开发者的进阶之路上,源码编译是理解系统底层机制的关键跳板。当你的机器人已经搭载了Cartographer进行精准建图,下一步自然是为它赋予自主导航能力。本文将带你深入…...

告别手动格式化!用VSCode settings.json + ESLint/Prettier打造你的专属自动保存工作流

告别手动格式化!用VSCode settings.json ESLint/Prettier打造你的专属自动保存工作流 在快节奏的前端开发中,代码格式化常常成为打断思路的"必要之恶"。每次保存文件后手动按下格式化快捷键,或是提交代码前批量运行lint命令&#…...

在 HarmonyOS6 中实现 Material Design 3 导航栏

文章目录一、什么是 Material Design 3?二、Elevation 层级系统2.1 层级概念2.2 项目中的枚举定义2.3 Elevation 转换为 shadow 参数三、色彩系统3.1 色彩角色定义3.2 浅色与深色两套配色3.3 应用到标签栏四、主题切换4.1 切换逻辑4.2 Elevation 动态调节五、完整标…...

关键指标自动提取(使用千问)

办公表格中通常包含海量数据,但核心决策仅需聚焦少数关键指标,如毛利率、达成率、增长率。千问可基于业务场景,自动识别并计算核心指标,避免数据冗余导致的决策低效。1.常用关键指标类型业务运营指标:销售额、成交量、…...

如何用3步实现效率突破:开源智能工具重构网盘资源获取体验

如何用3步实现效率突破:开源智能工具重构网盘资源获取体验 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字化信息爆炸的时代,获取网络资源已成为日常工作和学习的必备技能。然而,面对…...