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

PyTorch中的各种损失函数的详细解析与通俗理解!

目录

1. 前言

2. 回归任务中的损失函数

2.1 L1损失(Mean Absolute Error, MAE)

2.2 平方损失(Mean Squared Error, MSE)

2.3 平滑L1损失(Smooth L1 Loss)

3. 分类任务中的损失函数

3.1 交叉熵损失(CrossEntropyLoss)

3.2 二元交叉熵损失(Binary Cross Entropy, BCELoss)

3.3 负对数似然损失(Negative Log-Likelihood Loss, NLLLoss)

4. 排序任务中的损失函数

4.1 三元组损失(Triplet Margin Loss)

5. 总结


1. 前言

在学习神经网络过程中,损失函数太多又太杂,这里集中学习一次以便后续写代码。

在深度学习中,损失函数是衡量模型预测结果与真实值之间差异的重要工具。它不仅指导模型的训练过程,还直接影响模型的性能和泛化能力。PyTorch作为一个强大的深度学习框架,提供了多种预定义的损失函数,涵盖了回归、分类和排序等多种任务场景。本文将详细介绍PyTorch中常用的损失函数,结合数学公式和代码示例,帮助读者全面理解这些损失函数的应用场景和使用方法。

2. 回归任务中的损失函数

2.1 L1损失(Mean Absolute Error, MAE)

L1损失计算预测值与真实值之间的绝对误差的平均值。其公式如下:

其中,yi​ 是真实值,y^​i​ 是预测值,N 是样本数量。

应用场景

  • 回归任务,尤其是目标变量包含异常值时。

  • 对噪声和异常值具有鲁棒性。

代码示例

import torch
import torch.nn as nninput = torch.randn(4, 5, requires_grad=True)
target = torch.randn(4, 5)
loss_fn = nn.L1Loss(reduction='mean')
output = loss_fn(input, target)
print(output)

reduction参数决定了如何对计算出的损失值进行聚合。它有以下几种可能的取值:

  1. 'none':不对损失值进行聚合,直接返回每个样本的损失值。

  2. 'mean':对所有样本的损失值取平均,返回一个标量值。

  3. 'sum':对所有样本的损失值求和,返回一个标量值。

requires_grad 是一个布尔参数,用于指定该张量是否需要计算梯度。默认情况下,requires_grad 的值为 False,表示该张量不需要计算梯度。当设置为 True 时,PyTorch 会在计算图中跟踪该张量的所有操作,以便在反向传播时计算梯度。在深度学习中,通常将模型的参数设置为 requires_grad=True,以便在训练过程中更新这些参数。而输入数据(如 input)通常不需要计算梯度,因此默认情况下 requires_gradFalse

2.2 平方损失(Mean Squared Error, MSE)

MSE损失计算预测值与真实值之间平方误差的平均值。其公式如下:

MSE对较大的误差惩罚更严重,因此对异常值敏感。

应用场景

  • 回归任务,尤其是特征值较小且数据维度不高时。

代码示例

loss_fn = nn.MSELoss(reduction='mean')
output = loss_fn(input, target)
print(output)

2.3 平滑L1损失(Smooth L1 Loss)

Smooth L1损失结合了L1和L2损失的优点,当误差小于阈值时使用平方项,否则使用绝对项。其公式如下:

其中,β 是控制阈值的参数。

应用场景

  • 回归任务,尤其是特征值较大时。

  • 对异常值的鲁棒性较好。

代码示例

loss_fn = nn.SmoothL1Loss(beta=1.0)
output = loss_fn(input, target)
print(output)

3. 分类任务中的损失函数

3.1 交叉熵损失(CrossEntropyLoss)

交叉熵损失结合了log-softmax和负对数似然损失,适用于多分类任务。其公式如下:

其中,C 是类别数。

应用场景

  • 多分类任务,尤其是需要模型对预测结果有较高置信度时。

代码示例

input = torch.randn(4, 5, requires_grad=True)
target = torch.empty(4, dtype=torch.long).random_(5)
loss_fn = nn.CrossEntropyLoss()
output = loss_fn(input, target)
print(output)

torch.empty 是 PyTorch 中的一个函数,用于创建一个未初始化的张量。参数 4 指定了张量的大小(即张量包含 4 个元素)。dtype=torch.long 指定了张量的数据类型为 torch.long,即 64 位整数。

.random_ 是一个张量方法,用于将张量中的元素填充为随机整数。参数 5 表示随机整数的范围是从 0 到 4(包括 0 和 4)。也就是说,每个元素都是从 [0, 1, 2, 3, 4] 中随机选择的。

input 的第一个维度(4)与 target 的第一个维度(4)一致,表示样本数量。

input 的第二个维度(5)表示类别数量,而 target 中的每个元素是一个整数,取值范围是 [0, 4],表示类别索引。

nn.CrossEntropyLoss 在内部会先对 input 应用 log_softmax 函数,将 logits 转换为对数概率分布。

3.2 二元交叉熵损失(Binary Cross Entropy, BCELoss)

BCELoss适用于二分类任务,计算预测值与真实值之间的二元交叉熵。其公式如下:

应用场景

  • 二分类任务。

代码示例

input = torch.tensor([0.7])
target = torch.tensor([1.0])
loss_fn = nn.BCELoss()
output = loss_fn(input, target)
print(output)

计算过程如下:

3.3 负对数似然损失(Negative Log-Likelihood Loss, NLLLoss)

NLLLoss适用于分类任务,直接计算对数似然的负值。其公式如下:

应用场景

  • 分类任务,尤其是简单任务或训练速度较快时。

代码示例

import torch
import torch.nn as nn
import torch.nn.functional as F# 创建一个 3x5 的张量,表示 3 个样本,每个样本有 5 个特征
input = torch.randn(3, 5, requires_grad=True)# 创建一个大小为 3 的张量,表示每个样本的类别索引(0 到 4)
target = torch.tensor([1, 0, 4])# 定义负对数似然损失函数
loss_fn = nn.NLLLoss()# 应用 LogSoftmax 函数到输入张量
log_softmax_output = F.log_softmax(input, dim=1)# 计算损失
output = loss_fn(log_softmax_output, target)print(output)

其实这和交叉熵是一样的:

loss_CEL=nn.CrossEntropyLoss()
output=loss_CEL(input,target)

4. 排序任务中的损失函数

4.1 三元组损失(Triplet Margin Loss)

三元组损失用于嵌入学习,通过最小化锚点和正样本之间的距离,同时最大化锚点和负样本之间的距离。其公式如下:

其中,dap​ 是锚点和正样本之间的距离,dan​ 是锚点和负样本之间的距离。

应用场景: 

  • 排序任务,如人脸验证和搜索检索。

嵌入学习(Embedding Learning)是一种将复杂、高维数据(如文本、图像或声音)转换为低维、稠密向量表示的技术。这些向量能够捕捉数据之间的内在联系,如相似性,使得相似的数据点在向量空间中彼此接近。嵌入学习通常涉及无监督或半监督的学习过程,模型在大量未标记的数据上进行预训练,以学习数据的基本特征和结构。预训练的嵌入可以被进一步微调,以适应特定的下游任务,如分类、聚类或推荐系统。 

排序任务(Learning to Rank,LTR)是机器学习中的一个重要任务,尤其在信息检索、推荐系统和广告排序等领域有着广泛的应用。排序任务的目标是将数据按照一定的标准进行排序,以满足特定的需求,如将最相关的文档排在搜索结果的前面,或者将最符合用户兴趣的商品推荐给用户。

TripletMarginLoss 是一种用于嵌入学习和排序任务的损失函数。它通过优化锚点和正样本之间的距离与锚点和负样本之间的距离的差值,使得相似样本的嵌入更接近,不相似样本的嵌入更远离。这种损失函数在人脸识别、图像检索、推荐系统等任务中被广泛应用,能够有效提高模型的嵌入质量,使得模型在处理相似性匹配和排序问题时表现更优。

代码示例

anchor = torch.randn(200, 128, requires_grad=True)
positive = torch.randn(200, 128, requires_grad=True)
negative = torch.randn(200, 128, requires_grad=True)
loss_fn = nn.TripletMarginLoss(margin=1.0)
output = loss_fn(anchor, positive, negative)
print(output)

5. 总结

PyTorch提供了多种损失函数,涵盖了回归、分类和排序等多种任务场景。选择合适的损失函数对模型的性能至关重要。L1和MSE损失适用于回归任务,而交叉熵损失和BCE损失则广泛应用于分类任务。对于嵌入学习和排序任务,三元组损失是一个强大的工具。在实际应用中,应根据具体任务和数据特点选择合适的损失函数,以达到最佳的模型性能。我是橙色小博,关注我,一起在人工智能领域学习进步。

相关文章:

PyTorch中的各种损失函数的详细解析与通俗理解!

目录 1. 前言 2. 回归任务中的损失函数 2.1 L1损失(Mean Absolute Error, MAE) 2.2 平方损失(Mean Squared Error, MSE) 2.3 平滑L1损失(Smooth L1 Loss) 3. 分类任务中的损失函数 3.1 交叉熵损失&a…...

leetcode53-最大子数组和

leetcode 53 思路 本题使用贪心算法,核心在于对每一个元素进行遍历,在遍历过程里,持续更新当前的子数组和以及最大子数组和 假设 sum 是当前的子数组和,max 是到目前为止最大的子数组和遍历数组时,计算每个位置的当…...

解决Long类型前端精度丢失和正常传回后端问题

在 Java 后端开发中,可能会遇到前后端交互过程中 Long 类型精度丢失的问题。尤其是在 JavaScript 中,由于其 Number 类型是双精度浮点数,超过 16 位的 Long 类型值就会发生精度丢失。 问题背景 假设有如下实体类: public class…...

Green Coding规范:从循环语句到数据库查询的节能写法

本文系统化阐述绿色编码的工程实践方案,通过重构循环控制结构、优化集合操作范式、改进数据库访问模式三大技术路径,实现典型业务系统降低28.6%的CPU指令周期消耗。基于对JVM和SQL解释器的指令级分析,提出循环展开的黄金分割法则、位图索引加…...

Spring Boot整合Elasticsearch

摘要:本文手把手教你如何在Spring Boot项目中整合Elasticsearch(ES),并实现基本的CRUD与搜索操作。包含版本选择、配置、代码示例及常见问题解决。 一、环境准备 1.1 软件版本 Spring Boot: 3.xElasticsearch: 8.x(推…...

2025年渗透测试面试题总结- 某四字大厂面试复盘扩展 一面(题目+回答)

网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 某四字大厂面试复盘扩展 一面 一、Java内存马原理与查杀 二、冰蝎与哥斯拉原理对比(技术演…...

java基础自用笔记:文件、递归、常见的字符集、IO流

文件 递归 递归文件夹寻找某个文件,要先判断是否有权限进入文件夹(若无权限返回null)然后再判断文件数量是否不为0 常见的字符集 IO流 字节流 文件字节输入流 当读取到最后一个字节的时候,装在buffer[0]中,如果后面没…...

关于计算机网络的一些疑问

目录 1. HTTP/1.x 中的“队头阻塞”(Head-of-Line Blocking)问题解释什么是队头阻塞?其他相关概念: 2. HPACK 算法是什么?HPACK 的作用:HPACK 的特点:HPACK 提升性能的原因: 3. 如何…...

超大规模数据场景(思路)——面试高频算法题目

目录 用4KB内存寻找重复元素 从40个亿中产生不存在的整数【位】 如果只让用10MB空间存储? 初次遍历 二次遍历 用2GB内存在20亿个整数中查找出现次数最多的数【分块】 从亿万个URL中查找问题【分块 堆】 40亿个非负整数中找出现两次的数【位 不过多个位哈】 …...

高级:性能优化面试题深度剖析

一、引言 在Java应用开发中,性能优化是确保系统高效运行的关键。面试官通过相关问题,考察候选人对性能优化的理解和实践经验。本文将深入探讨Java应用性能优化的方法,包括JVM调优、数据库优化等,结合实际开发场景,帮助…...

【软件】在 macOS 上安装和配置 Apache HTTP 服务器

在 macOS 上安装 Apache HTTP 服务器的步骤: 1.安装 Apache HTTP 服务器 macOS 系统可能已经预装了 Apache HTTP 服务器。你可以通过终端检查它是否已经安装: httpd -v如果系统提示command not found,说明 Apache 未安装。你可以通过 Home…...

数据结构之链表

定义:在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素存储上并不连续。 链表分类:单向链表(每个元素知道下一个元素是谁)、双向链表(每个元素知道其上一…...

基于Python的懂车帝汽车数据爬虫分析与可视化系统

【Python】基于Python的懂车帝汽车数据爬虫分析与可视化系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 🚗🔥【视频简介】🔥🚗 大家好&…...

setInterval问题以及前端如何实现精确的倒计时

一、为什么setInterval不能实现 原因有两:1、js是单线程,基于事件循环执行其他任务(这里建议读者可以多去了解一下浏览器线程与事件循环相关知识) 2、setinterval是每隔delay时间,把逻辑放到任务队列中,而…...

Python爬虫教程010:使用scrapy爬取当当网数据并保存

文章目录 3.6 爬取当当网数据3.6.1 创建项目3.6.2 查找要爬取的数据对象3.6.3 保存数据3.6 爬取当当网数据 3.6.1 创建项目 【1、创建项目】: scrapy startproject scrapy_dangdang_095【2、创建爬虫文件】 cd scrapy_dangdang_095\scrapy_dangdang_095\spiders scrapy ge…...

达芬奇预设:复古16mm胶片质感老式电影放映机转场过渡+音效

达芬奇预设:复古16mm胶片质感老式电影放映机转场过渡音效 特征: DaVinci Resolve 宏 8 过渡 幻灯片投影仪效果 可在任何帧速率和分辨率下工作 教程包括 系统要求: 达芬奇 Resolve 18.0...

Spring MVC 的请求处理流程是怎样的?

Spring MVC 请求处理流程的大致可分为以下几个步骤: 1. 请求到达 DispatcherServlet: 所有请求首先到达 DispatcherServlet(前端控制器)。DispatcherServlet 是 Spring MVC 的核心,它负责接收请求,并将请求委派给其他…...

PyTorch 实现图像版多头注意力(Multi-Head Attention)和自注意力(Self-Attention)

本文提供一个适用于图像输入的多头注意力机制(Multi-Head Attention)PyTorch 实现,适用于 ViT、MAE 等视觉 Transformer 中的注意力计算。 模块说明 输入支持图像格式 (B, C, H, W)内部转换为序列 (B, N, C),其中 N H * W多头注…...

STM32单片机入门学习——第17节: [6-5] TIM输入捕获

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.06 STM32开发板学习——第17节: [6-5] TIM输入捕获 前言开发板说明引用解答和科普一…...

P8819 [CSP-S 2022] 星战 Solution

Preface 不可以,总司令 的来源. Description 给定一张 n n n 点 m m m 边的有向图 G G G,有 q q q 次操作分四种: 1 u v:使边 u → v u\to v u→v 失活.2 u:使点 u u u 的所有入边失活.3 u v:使边…...

【spring02】Spring 管理 Bean-IOC,基于 XML 配置 bean

文章目录 🌍一. bean 创建顺序🌍二. bean 对象的单例和多例❄️1. 机制❄️2. 使用细节 🌍三. bean 的生命周期🌍四. 配置 bean 的后置处理器 【这个比较难】🌍五. 通过属性文件给 bean 注入值🌍六. 基于 X…...

Llama 4架构解析与本地部署指南:MoE模型在170亿参数下的效率突破

Meta最新发布的Llama 4系列标志着开源大语言模型(LLM)的重大演进,其采用的混合专家(MoE)架构尤为引人注目。 两大核心模型——Llama 4 Scout(170亿参数含16专家)和Llama 4 Maverick(170亿参数含128专家)——展现了Meta向高效能AI模型的战略转型,这些模型在挑战传统扩…...

`docker run --restart no,always,on-failure,unless-stopped`笔记250406

docker run --restart no,always,on-failure,unless-stopped 笔记250406 docker run --restart 用于配置容器的自动重启策略&#xff0c;当容器意外退出时&#xff0c;Docker 会根据策略自动重新启动容器。这是确保服务高可用的重要参数。 语法 docker run --restart <策略…...

stl的VS的string的内部实现,引用计数的写实拷贝,编码

本章目标 1.stl的vs的string的内部实现 2.引用计数的写实拷贝 3.编码 1.stl的string的内部实现 我们先来看一个例子 string s1; cout<<sizeof(s1)<<endl;我们知道类的内存管理也是遵循内存对齐的规则的. 我们假设当前机器的环境是32位的.string类的内部有三个成…...

Docker 从入门到进阶 (Win 环境) + Docker 常用命令

目录 引言 一、准备工作 1.1 系统要求 1.2 启用虚拟化 二、安装Docker 2.1 安装WSL 2 2.2 安装Docker Desktop 2.3检查是否安装成功 三、配置Docker 3.1 打开Docker配置中心 四、下载和管理Docker镜像 4.1 拉取镜像 4.2 查看已下载的镜像 4.3 运行容器 4.4 查看正…...

C# Winform 入门(12)之制作简单的倒计时

倒计时效果展示 控件展示 以下均是使用label来形成的 label 的 BorderStyle&#xff1a;Fixed3D ForeColor&#xff1a;Red Blackground&#xff1a;Black label 的属性 Name&#xff1a; txtyear txtmonth txtday txttime txtweek txtDays txtHour txtM…...

基于springboot+vue的漫画天堂网

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…...

leetcode每日一题:最大整除子集

题目 368. 最大整除子集 给你一个由 无重复 正整数组成的集合 nums &#xff0c;请你找出并返回其中最大的整除子集 answer &#xff0c;子集中每一元素对 (answer[i], answer[j]) 都应当满足&#xff1a; answer[i] % answer[j] 0 &#xff0c;或 answer[j] % answer[i] …...

【Unity】animator检测某state动画播放完毕方法

博主对动画系统很不熟&#xff0c;可能使用的方法比较曲折&#xff0c;但是我确实没找到更有效的方法了。 unity的这个animator在我看来简直有毛病啊&#xff0c;为什么那么难以获取某状态动画的信息呢&#xff1f;&#xff1f;&#xff1f; 想要知道动画播完没有只有用norma…...

玄机-应急响应-webshell查杀

题目要求&#xff1a; 要求获取四个flag webshell查杀&#xff1a; 常见的webshell&#xff1a; PHP: eval(), system(), exec(), shell_exec(), passthru(), assert(), base64_decode() ASP: Execute(), Eval(), CreateObject() JSP: Runtime.getRuntime().exec() websh…...

小菜Go:Ubuntu下Go语言开发环境搭建

前置要求Ubuntu环境搭建 文章推荐 此处推荐一个比较好的文章&#xff0c;基本按部就班就欧克~ 安装虚拟机&#xff08;VMware&#xff09;保姆级教程&#xff08;附安装包&#xff09;_vmware虚拟机-CSDN博客 安装可能遇到的问题 虚拟机安装遇到的问题如&#xff1a;Exception…...

多功能指示牌是否支持多语言交互?

嘿&#xff0c;朋友们&#xff01;你们知道吗&#xff1f;叁仟多功能指示牌在多语言交互方面可太厉害了&#xff0c;下面就为大家热情介绍一些常见的实现方式和相关说明哦&#xff01; 显示多语言文字&#xff1a;哇哦&#xff0c;在众多国际化的超棒场所&#xff0c;像那充满…...

2025ArkTS语言开发入门之前言

2025ArkTS语言开发入门之前言&#xff08;一&#xff09; 引言 要想学好一门语言&#xff0c;必先会下载对应的编辑器/集成开发环境&#xff0c;ArkTS也是如此&#xff0c;下面我带着大家去下载并安装ArkTS语言的集成开发环境——Dev Eco Studio。 下载 来到华为开发者联盟…...

Python高级爬虫+安卓逆向1.1-搭建Python开发环境

目录 引言&#xff1a; 1.1.1 为什么要安装Python? 1.1.2 下载Python解释器 1.1.3 安装Python解释器 1.1.4 测试是否安装成功 1.1.5 跟大神学高级爬虫安卓逆向 引言&#xff1a; 大神薯条老师的高级爬虫安卓逆向教程&#xff1a; 这套爬虫教程会系统讲解爬虫的初级&…...

深入理解MySQL:核心特性、优化与实践指南

MySQL是一个开源的关系型数据库管理系统(RDBMS)&#xff0c;由瑞典MySQL AB公司开发&#xff0c;目前属于Oracle公司。它是目前世界上最流行的开源数据库之一&#xff0c;广泛应用于各种规模的Web应用和企业系统中。 目录 一、核心特点 关系型数据库&#xff1a; 开源免费&am…...

38常用控件_QWidget的enable属性(2)

实现用另一个按钮切换之前按钮的“可用”状态 在同一个界面中,要求不同的控件的 objectName 也是必须不同的.(不能重复&#xff09; 后续就可以通过 ui->objectName 方式来获取到对应的控件对象了 ui->pushButton // 得到了第一个按钮对应的对象 ui->pushButton 2 //…...

如何单独指定 Android SDK tools 的 monitor.bat 使用特定 JDK 版本

核心概念与背景介绍 在 Android 开发过程中&#xff0c;Android SDK Tools 提供了许多实用工具&#xff0c;其中 monitor.bat 是 Windows 下用于启动 Android Device Monitor 的批处理文件。Device Monitor 可以帮助我们查看日志、内存、线程等运行信息。 JDK 与 monitor.bat …...

【代码随想录 字符串1】 344.反转字符串

自己的 class Solution {public void reverseString(char[] s) {int mid s.length /2;int j1;for (int i 0; i < mid; i) {char tem s[i];s[i] s[s.length -j];s[s.length -j] tem;j;}s.toString();} }双指针 class Solution {public void reverseString(char[] s) {…...

gogs私服对应SSH 协议配置

一、使用非特权端口&#xff08;推荐&#xff09; 1. 修改 Gogs 配置文件 sudo nano /home/git/gogs/custom/conf/app.ini 找到 [server] 部分&#xff0c;修改为&#xff1a; [server] START_SSH_SERVER true SSH_PORT 2222 # 改为1024以上的端口 2. 重启 Gogs sud…...

蓝桥与力扣刷题(74 搜索二维矩阵)

题目&#xff1a;给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff…...

多元高斯分布函数

1、 n n n元向量 假设 n n n元随机变量 X X X X [ X 1 , X 2 , ⋯ , X i , ⋯ , X n ] T μ [ μ 1 , μ 2 , ⋯ , μ i , ⋯ , μ n ] T σ [ σ 1 , σ 2 , ⋯ , σ i , ⋯ , σ n ] T X i ∼ N ( μ i , σ i 2 ) \begin{split} X&[X_1,X_2,\cdots,X_i,\cdots ,X_n…...

【PySpark大数据分析概述】02 Spark大数据技术框架

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PySpark大数据分析与应用 ⌋ ⌋ ⌋ PySpark作为Apache Spark的Python API&#xff0c;融合Python易用性与Spark分布式计算能力&#xff0c;专为大规模数据处理设计。支持批处理、流计算、机器学习 (MLlib) 和图计算 (GraphX)&am…...

JVM 参数调优指南_优化 Java 应用性能

1. 引言 1.1 什么是 JVM 参数调优 JVM 参数调优是指通过调整 Java 虚拟机的各种参数,以优化 Java 应用程序的性能和稳定性。 1.2 JVM 参数调优的重要性 提高性能:优化内存使用和垃圾回收,提升应用程序的响应速度。稳定性:减少内存溢出和垃圾回收暂停时间,提高系统的稳定…...

闭包和装饰器

什么是闭包 闭包&#xff08;Closure&#xff09;是 Python 中一个非常重要的概念&#xff0c;它是一种特殊的函数对象&#xff0c;通常用于封装和延迟计算某些值。以下是闭包的详细定义和解释&#xff1a; 1.闭包的定义 闭包是指一个函数对象&#xff0c;它不仅包含函数的代…...

电脑显示器选购

显示器分类 按尺寸大小 一般显示器屏幕有24寸、27寸、32寸等 按技术分类 LCD显示器 使用液晶分子作为主要材料&#xff0c;以液晶为显示/控制模块制造而成的显示设备。液晶显示器中的液晶体在工作时不发光&#xff0c;而是控制外部的光通过量。当外部光线通过液晶分子时&a…...

论伺服电机在轨道式巡检机器人中的优势及应用实践​

一、引言​ 1.1 研究背景与意义​ 在现代工业生产、电力系统、轨道交通等诸多领域&#xff0c;保障设施设备的安全稳定运行至关重要。轨道式巡检机器人作为一种高效、智能的巡检工具&#xff0c;正逐渐在这些领域崭露头角。它能够沿着预设轨道&#xff0c;对目标区域进行全方位…...

室内指路机器人是否支持与第三方软件对接?

嘿&#xff0c;你知道吗&#xff1f;叁仟室内指路机器人可有个超厉害的技能&#xff0c;那就是能和第三方软件 “手牵手” 哦&#xff0c;接下来就带你一探究竟&#xff01; 从技术魔法角度看哈&#xff1a;好多室内指路机器人都像拥有超能力的小魔法师&#xff0c;采用开放式…...

Docker 命令大全:从入门到精通

一、容器生命周期管理 1. 容器操作基础 # 运行容器 docker run -d --name my_nginx -p 8080:80 nginx:latest# 启动/停止容器 docker start my_nginx docker stop my_nginx# 重启容器 docker restart my_nginx# 删除容器 docker rm my_nginx 2. 容器状态管理 # 查看运行中的…...

【HarmonyOS Next之旅】DevEco Studio使用指南(十一)

目录 1 -> 代码实时检查 2 -> 代码快速修复 3 -> C快速修复使用演示 3.1 -> 填充switch语句 3.2 -> 使用auto替换类型 3.3 -> 用&#xff1f;&#xff1a;三元操作符替换if-else 3.4 -> 从使用处生成构造函数 3.5 -> 将变量拆分为声明和赋值 1…...

【中间件】使用ElasticSearch提供的RestClientAPI操作ES

一、简介 ElasticSearch提供了RestClient来操作ES&#xff0c;包括对数据的增删改查&#xff0c;可参照官方文档&#xff1a;Java High Level REST Client 二、使用步骤&#xff1a; 可参照官方文档操作 导包 <dependency><groupId>org.elasticsearch.client<…...