机器学习笔记——常用损失函数
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。
热门专栏
机器学习
机器学习笔记合集
深度学习
深度学习笔记合集
文章目录
- 热门专栏
- 机器学习
- 深度学习
- 损失函数
- 一、回归问题中的损失函数
- 1. 均方误差(Mean Squared Error, MSE)
- 2. 平均绝对误差(Mean Absolute Error, MAE)
- 3. 对数余弦损失(Log-Cosh Loss)
- 4. Huber 损失(Huber Loss)
- 5. 平均平方对数误差(Mean Squared Logarithmic Error, MSLE)
- 总结
- 二、分类问题中的损失函数
- 1. 0-1 损失(0-1 Loss)
- 2. 对数损失(Log Loss)或交叉熵损失(Cross-Entropy Loss)
- 二分类问题
- 多分类问题
- 3. Focal 损失(Focal Loss)
- 4. Hinge 损失(合页损失)
- 5. Kullback-Leibler 散度(KL Divergence)
- 总结
损失函数
一、回归问题中的损失函数
1. 均方误差(Mean Squared Error, MSE)
定义:
MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1∑n(yi−y^i)2
- 描述:MSE 衡量的是预测值和真实值之间的平方误差的平均值。对较大的误差会进行更大的惩罚,因此它对异常值(outliers)非常敏感。
- 应用场景:线性回归、岭回归等模型的损失函数。
- 优点:简单易于理解,容易求导和计算。
- 缺点:对异常值敏感,可能导致模型被少数异常样本主导。
2. 平均绝对误差(Mean Absolute Error, MAE)
定义:
MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
- 描述:MAE 衡量的是预测值和真实值之间的绝对误差的平均值。它对每个误差的惩罚是线性的,因此对异常值的惩罚不如 MSE 严重。
- 应用场景:在对异常值不敏感的回归任务中使用。
- 优点:对异常值不敏感,能够更加稳定地反映模型性能。
- 缺点:在优化过程中,绝对值函数不可导,求解困难。
3. 对数余弦损失(Log-Cosh Loss)
定义:
Log-Cosh Loss = 1 n ∑ i = 1 n log ( cosh ( y i − y ^ i ) ) \text{Log-Cosh Loss} = \frac{1}{n} \sum_{i=1}^{n} \log\left(\cosh\left(y_i - \hat{y}_i\right)\right) Log-Cosh Loss=n1i=1∑nlog(cosh(yi−y^i))
说明: cosh ( x ) \cosh(x) cosh(x): 双曲余弦函数,公式为 cosh ( x ) = e x + e − x 2 \cosh(x) = \frac{e^x + e^{-x}}{2} cosh(x)=2ex+e−x。
- 描述:对数余弦损失是Huber 损失的变体,它的行为类似于 MAE,同时对大误差有更小的增长率。
- 应用场景:适用于异常值影响较大的回归任务。
- 优点:具有平滑性,易于求导,对小误差敏感而对大误差鲁棒。
- 缺点:相比其他损失函数计算复杂度较高。
4. Huber 损失(Huber Loss)
定义:
L ( y i , y ^ i ) = { 1 2 ( y i − y ^ i ) 2 if ∣ y i − y ^ i ∣ ≤ δ , δ ⋅ ∣ y i − y ^ i ∣ − 1 2 δ 2 if ∣ y i − y ^ i ∣ > δ . L(y_i, \hat{y}_i) = \begin{cases} \frac{1}{2} (y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta, \\ \delta \cdot |y_i - \hat{y}_i| - \frac{1}{2} \delta^2 & \text{if } |y_i - \hat{y}_i| > \delta. \end{cases} L(yi,y^i)={21(yi−y^i)2δ⋅∣yi−y^i∣−21δ2if ∣yi−y^i∣≤δ,if ∣yi−y^i∣>δ.
- δ \delta δ: 超参数,定义切换 MSE 和 MAE 的阈值。
- ∣ y i − y ^ i ∣ |y_i - \hat{y}_i| ∣yi−y^i∣: 误差的绝对值。
- 描述:Huber 损失是MSE 和 MAE 的折中。对于小误差,使用 MSE;对于大误差,使用 MAE,从而对异常值有一定的鲁棒性。
- 应用场景:回归问题中存在异常值,但又不希望过于忽略异常值的场景。
- 优点:对小误差敏感,同时对大误差具有一定的抗干扰性。
- 缺点:参数 ( δ \delta δ) 需要手动调节,不同数据集效果不同。
5. 平均平方对数误差(Mean Squared Logarithmic Error, MSLE)
定义:
MSLE = 1 n ∑ i = 1 n ( log ( 1 + y i ) − log ( 1 + y ^ i ) ) 2 \text{MSLE} = \frac{1}{n} \sum_{i=1}^{n} \left( \log(1 + y_i) - \log(1 + \hat{y}_i) \right)^2 MSLE=n1i=1∑n(log(1+yi)−log(1+y^i))2
- n n n: 数据点的总数。
- y i y_i yi: 第 i i i 个真实值(必须为非负数)。
- y ^ i \hat{y}_i y^i: 第 i i i 个预测值(必须为非负数)。
- log ( 1 + x ) \log(1 + x) log(1+x): 对 x x x 加 1 后取自然对数,用于平滑较小的值和避免对 0 的对数操作。
- 描述:MSLE 用于处理目标值差异较大且有显著指数增长趋势的情况。它更关注相对误差,而非绝对误差。
- 应用场景:如人口增长预测、市场销量预测等场景。
- 优点:对大数值的预测更稳定,对目标值的比例关系有更好的衡量。
- 缺点:当目标值非常小时,惩罚效果不明显。
总结
损失函数 | 描述 | 应用场景 | 优点 | 缺点 |
---|---|---|---|---|
均方误差 (MSE) | 衡量预测值和真实值之间平方误差的平均值,对较大误差进行更大惩罚。 | 线性回归、岭回归等 | 简单易于理解,容易求导。 | 对异常值敏感。 |
平均绝对误差 (MAE) | 衡量预测值和真实值之间绝对误差的平均值。 | 对异常值不敏感的回归任务 | 对异常值不敏感,反映模型性能更稳定。 | 优化困难,绝对值函数不可导。 |
对数余弦损失 (Log-Cosh) | Huber 损失的变体,既能捕捉小误差,也对大误差有更小的增长率。 | 异常值影响较大的回归任务 | 平滑性好,易于求导,适应大误差和小误差。 | 计算复杂度高。 |
Huber 损失 (Huber Loss) | 结合MSE和MAE,小误差时使用 MSE,大误差时使用 MAE,平衡异常值的影响。 | 存在异常值但不希望完全忽略的场景 | 对小误差敏感,对大误差有抗干扰性。 | 需调节参数 (delta)。 |
平均平方对数误差 (MSLE) | 衡量目标值差异大且有指数增长趋势的情况,关注相对误差而非绝对误差。 | 人口增长预测、市场销量预测等 | 对大数值预测更稳定,适应有比例关系的数据。 | 对极小值目标效果不佳。 |
二、分类问题中的损失函数
1. 0-1 损失(0-1 Loss)
定义:
L ( y , y ^ ) = { 0 , if y = y ^ , 1 , if y ≠ y ^ . L_(y, \hat{y}) = \begin{cases} 0, & \text{if } y = \hat{y}, \\ 1, & \text{if } y \neq \hat{y}. \end{cases} L(y,y^)={0,1,if y=y^,if y=y^.
- 描述:0-1 损失表示分类是否正确,0 为正确分类,1 为错误分类。它无法直接用于模型优化,只能用于评价模型性能。
- 应用场景:模型性能的评估,如准确率(Accuracy)的计算。
- 优点:简单直观,能够清晰判断分类是否正确。
- 缺点:不可导,无法用于梯度优化。
2. 对数损失(Log Loss)或交叉熵损失(Cross-Entropy Loss)
- 描述:交叉熵损失衡量的是预测分布和真实分布之间的距离。在二分类与 Sigmoid 函数结合;在多分类与 Softmax 函数结合。
- 应用场景:广泛用于逻辑回归、神经网络等分类任务。
- 优点:能够很好地度量概率分布之间的差异,梯度计算简单。
- 缺点:对数据不平衡较为敏感。
二分类问题
在二分类问题中,交叉熵损失衡量真实标签 ( y y y ) 和预测概率 ( y ^ \hat{y} y^ ) 之间的差异。公式为:
L ( y , y ^ ) = − [ y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ] L(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]
符号说明
- y ∈ { 0 , 1 } y \in \{0, 1\} y∈{0,1}:真实标签(0 表示负类,1 表示正类)。
- y ^ ∈ [ 0 , 1 ] \hat{y} \in [0, 1] y^∈[0,1]:预测为正类的概率。
多分类问题
对于 k k k 个类别的多分类问题,交叉熵损失扩展为多个输出类的加权损失,公式为:
L ( y , y ^ ) = − ∑ i = 1 k y i log ( y ^ i ) L(y, \hat{y}) = - \sum_{i=1}^{k} y_i \log(\hat{y}_i) L(y,y^)=−i=1∑kyilog(y^i)
符号说明
- k k k:类别数量。
- y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi∈{0,1}:第 i i i 类的真实标签,使用独热编码表示(只有一个值为 1,其余为 0)。
- y ^ i ∈ [ 0 , 1 ] \hat{y}_i \in [0, 1] y^i∈[0,1]:模型预测的第 i i i 类的概率,通常通过 softmax 函数获得。
Sigmoid 函数:
- 公式:
σ ( z ) = 1 1 + e − z \sigma(z)=\frac1{1+e^{-z}} σ(z)=1+e−z1- 其中, z z z 是模型的线性输出,即预测值。
- Sigmoid 函数将模型的线性输出 z z z转化为一个介于 0 和 1 之间的值,表示属于类别 1 的概率。
交叉熵损失:
- 在二分类任务中,真实标签 y y y通常取 0(负类)或1(正类)。
- 交叉熵损失的公式为: L o s s = − [ y ⋅ log ( p ) + ( 1 − y ) ⋅ log ( 1 − p ) ] \mathrm{Loss}=-\left[y\cdot\log(p)+(1-y)\cdot\log(1-p)\right] Loss=−[y⋅log(p)+(1−y)⋅log(1−p)]
- 其中, p = σ ( z ) p=\sigma(z) p=σ(z)是经过 Sigmoid 函数后模型预测属于类别 1 的概率。
Softmax 函数:
- 公式: S o f t m a x ( z i ) = e z i ∑ j e z j \mathrm{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} Softmax(zi)=∑jezjezi
- 其中, z i z_i zi 是第 i i i 个类别的得分, ∑ j e z j \sum_j e^{z_j} ∑jezj 是所有类别的得分的指数和。
- Softmax 函数将每个类别的得分 z i z_i zi 转化为一个概率 p i p_i pi,即样本属于第 i i i 个类别的概率。
交叉熵损失:
- 在多分类任务中,真实标签 y y y 是一个 one-hot 编码向量,即样本的真实类别的概率是 1,其他类别的概率是 0。
- 交叉熵损失的公式: Loss = − ∑ i y i ⋅ log ( p i ) \text{Loss} = -\sum_i y_i \cdot \log(p_i) Loss=−i∑yi⋅log(pi)
- 其中, p i p_i pi 是 Softmax 函数输出的属于类别 i i i 的概率, y i y_i yi 是真实的类别标签,通常为 0 或 1。
3. Focal 损失(Focal Loss)
定义:
Focal Loss = − α t ( 1 − p ^ t ) γ log ( p ^ t ) \text{Focal Loss} = -\alpha_t (1 - \hat{p}_t)^\gamma \log(\hat{p}_t) Focal Loss=−αt(1−p^t)γlog(p^t)
- 其中:
- p ^ t \hat{p}_t p^t 是模型对正确类别的预测概率。
- α t \alpha_t αt 是类别平衡权重,用来调整类别不平衡问题, α t ∈ [ 0 , 1 ] \alpha_t \in [0, 1] αt∈[0,1],通常用于为不同类别分配不同的权重。
- γ \gamma γ 是调节因子,控制模型对难分类样本的关注程度,常取值为 0 到 5 之间,通常选取 γ = 2 \gamma = 2 γ=2 效果较好。
注:t 是该样本的真实类别标签
- p ^ t \hat{p}_{t} p^t: 这是模型对样本真实类别 t t t 的预测概率。假设样本属于类别 t t t,则 p ^ t \hat{p}_{t} p^t 就是模型对类别 t t t 的预测概率。如果是二分类任务, t t t 为 1 代表正类,为 0 代表负类;如果是多分类任务, t t t 是类别的索引。
- α t \alpha_{t} αt: 这是类别 t t t 的权重系数。通过 t t t,可以为当前样本所属类别 t t t 分配一个权重 α t \alpha_{t} αt。对于不平衡数据集来说, α t \alpha_{t} αt 通常设置为少数类的权重大,主要用来调整损失函数对不同类别样本的关注程度。
- 描述:Focal 损失是对交叉熵损失的改进,用于解决类别不平衡问题。通过调节参数 ( γ \gamma γ ) 和 ( α \alpha α ),它增加了对困难样本的关注,降低了对易分类样本的影响。
- 应用场景:目标检测中的单阶段检测器(如 RetinaNet),以及其他类别不平衡的分类问题。
- 优点:有效解决类别不平衡问题,增强模型对困难样本的关注。
- 缺点:参数选择复杂,训练时间较长。
4. Hinge 损失(合页损失)
定义:对于二分类问题:
L ( y , y ^ ) = max ( 0 , 1 − y ⋅ y ^ ) L(y, \hat{y}) = \max(0, 1 - y \cdot \hat{y}) L(y,y^)=max(0,1−y⋅y^)
其中, y ∈ { − 1 , 1 } y \in \{ -1, 1 \} y∈{−1,1}, y ^ \hat{y} y^是模型的预测输出。
- 描述:Hinge 损失用于支持向量机(SVM)中。它在样本被正确分类且间隔大于 1 时,损失为 0;否则损失为 1。旨在最大化样本的分类间隔。
- 应用场景:线性支持向量机、核支持向量机等。
- 优点:有助于最大化分类间隔,提高模型的泛化能力。
- 缺点:对于误差大的样本损失增长过快。
5. Kullback-Leibler 散度(KL Divergence)
定义:
K L ( p ∥ q ) = ∑ i p ( x i ) log p ( x i ) q ( x i ) KL(p \parallel q) = \sum_i p(x_i) \log \frac{p(x_i)}{q(x_i)} KL(p∥q)=i∑p(xi)logq(xi)p(xi)
- 描述:KL 散度衡量两个概率分布之间的差异,常用于无监督学习中的聚类分析。
- 应用场景:概率模型的优化,如变分自编码器(VAE)、生成对抗网络(GAN)中的判别模型。
- 优点:对概率分布之间的微小差异非常敏感。
- 缺点:对稀疏分布的概率模型不稳定。
总结
损失函数 | 描述 | 应用场景 | 优点 | 缺点 |
---|---|---|---|---|
0-1 损失 (0-1 Loss) | 分类正确为 0,错误为 1,用于衡量分类是否正确。 | 准确率等分类性能评估 | 简单直观。 | 不可导,无法用于优化。 |
交叉熵损失 (Cross-Entropy) | 衡量预测分布和真实分布之间的距离,二分类结合 Sigmoid,多分类结合 Softmax。 | 逻辑回归、神经网络等分类任务 | 很好地衡量概率分布差异,梯度计算简单。 | 对数据不平衡敏感。 |
Focal 损失 (Focal Loss) | 交叉熵的改进,通过调节 ( gamma ) 和 ( alpha ),增加对困难样本的关注,减少易分类样本影响,解决类别不平衡问题。 | 类别不平衡问题,如目标检测 (RetinaNet) | 增强对困难样本的关注,解决类别不平衡。 | 参数选择复杂,训练时间较长。 |
Hinge 损失 (合页损失) | 用于 SVM,正确分类且间隔大于 1 时损失为 0,旨在最大化分类间隔。 | 线性 SVM、核 SVM | 提高泛化能力,有助于最大化分类间隔。 | 对误差大的样本损失增长快。 |
KL 散度 (KL Divergence) | 衡量两个概率分布的差异,常用于无监督学习中的聚类分析。 | 概率模型优化,如 VAE、GAN | 对概率分布的差异敏感。 | 对稀疏分布不稳定。 |
相关文章:
机器学习笔记——常用损失函数
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。 热门专栏 机器学习 机器学习笔记合集 深度学习 深度学习笔记合集 文章目录 热门…...
谷粒商城学习笔记-13-配置git-ssh-配置代码免密提交
安装配置 git 1 、下载 git : https://git-scm.com 下载git客户端,右键桌面Git GUI/bash Here。进入bash 2 、配置 git ,进入 git bash # 配置用户名 git config --global user.name "username" //(名字,随意写)# …...
51单片机学习——静态数码管显示
1. 数码管介绍 LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“8”字型的器件。 2. 数码管引脚定义 LED的阴极连接到一个端口上是共阴极连接,称为共阴极数码管。LED的阳极连接到一个端口上是共阳极连接&…...
Qt5 C++ TcpSocket 如何判断是服务主动断开tcp socket连接?
文章目录 实现思路示例代码代码解释主要功能和用法注意事项 在 Qt 5.9.9 的 C 开发中,使用 QTcpSocket 时,要判断是服务端主动断开 TCP Socket 连接,可以通过处理 QTcpSocket 的 disconnected 信号,结合 QTcpSocket 的状态以及…...
UEFI Spec 学习笔记---9 - Protocols — EFI Loaded Image
本节定义EFI_LOADED_IMAGE_PROTOCOL和 EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL。这些协议分别描述了已加载到内存中的映像,并指定了PE/COFF映像通过EFI引导服务LoadImage()加载 时使用的设备路径。这些描述包括 load image 的源、映像在内存中的当前位置、为image分…...
Deepseek 与 ChatGPT:AI 浪潮中的双子星较量
引言 在人工智能飞速发展的当下,AI 语言模型成为了人们关注的焦点。Deepseek 与 ChatGPT 作为其中的佼佼者,各自展现出独特的魅力,引领着 AI 技术的发展潮流。今天,就让我们深入探讨这两款模型,看看它们在 AI 领域中是…...
open-webui安装
docker安装openwebui 拉取镜像 docker pull ghcr.io/open-webui/open-webui:maindocker images启动 docker run -d -p 8346:8080 --name open-webui ghcr.io/open-webui/open-webui:maindocker ps查看端口占用 lsof -i:8346访问地址 http://ip:port http://127.0.0.1:8346...
docker 安装jenkins
使用docker 容器安装jenkins比较方便,但是细节比较重要,这里实战安装了一遍,可用: 拉取最新的jenkins镜像 docker pull jenkins/jenkins 如果没有翻墙的话,可以会有下面的报错: Error response from dae…...
前端利器:DateUtils 日期时间工具深度剖析
序言 在前端开发中,日期和时间的处理是一个常见且重要的任务。从格式化日期展示到复杂的日期计算,每一个环节都需要精确和高效的代码支持。今天,我们就来深入探讨一个精心打造的前端日期时间工具类 DateUtils,它涵盖了从基础的日…...
Denoising Diffusion Restoration Models论文解读
论文要点 恢复的线性逆问题可以使用预训练的DDPM完成:1. 将降质矩阵使用SVD,得到分解矩阵;2. 使用分解矩阵将图像投影到降质类型间共享的谱空间;3. 谱空间中执行DDPM。 评价 同Track的方法同样很多,比如后续的DDNM、…...
【Windows API】SetFilePointerEx函数用法介绍
目录 一、函数概述 二、函数原型与参数解析 1. hFile(文件句柄) 2. liDistanceToMove(移动距离) 3. lpNewFilePointer(新指针位置) 4. dwMoveMethod(移动基准点) 三、返回值与…...
uniapp uni.request重复请求处理
类似这种切换tab时,如果操作很快并且网络不太好,就出现数据错乱,在网上查了一圈,有一个使用uview拦截处理的,但是原生uni.requse没有找到详细的解决办法,就查到使用 abort 方法,我自己封装了一个…...
unity学习47:寻路和导航,unity2022后版本如何使用 Navmesh 和 bake
目录 1 寻路和导航对移动的不同 1.1 基础的移动功能 1.1.1 基础移动 1.1.2 智能导航寻路 1.1.3 智能导航寻路还可以 2 如何实现这个效果? 2.1 通过地图网格的形式 2.1.1 警告信息 the static value has been deprecated的对应搜索 2.1.2 新的navigation ba…...
Windows安装node.js详细教程
一、什么是node.js Node.js 是一个基于 Chrome V8 引擎的javascript运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。 Node 是一个让 JavaScript 运行在服务端的开发平台,它让javascript成为与PHP、Python等服务端语言平起平坐的脚步语言。 由 Rya…...
大模型领域常见的专业术语和关键词及简要解释
现在大语言模型非常火热,特别是deepseek,想要了解、学习、应用、设计开发大模型,则我们需要先知道大模型邻域都包含哪些方面,以及在大模型领域的各个方面,都有哪些常见的专业术语和关键词。 以下我们从大模型领域的模型架构、训练方法到优化技术、应用和伦理问题等多个方…...
单细胞转录组画小提琴VlnPlot只显示需要类型细胞
探序基因肿瘤研究院 整理 在R语言中,单细胞转录组数据画小提琴图中,我们如果想只展示出需要的特定细胞类型,可以把这需要展示的细胞类型单独构建成一个Seurat对象,再画图。 例如我们在Seurat对象中的meta.data表格中,…...
UE 播放视频
一.UI播放视频 1.导入视频文件至工程文件夹 2.文件夹内右健选择Media -> File Meida Source创建testFileMeidaSource文件。 编辑FilePath为当前视频 3.右键->Media->Media Player 创建testMediaPlayer文件 4.右键创建testMediaTexture。编辑MediaPlayer设置testMedia…...
当pcie设备变化时centos是否会修改网络设备的名称(AI回答)
当pcie设备变化时centos是否会修改网络设备的名称 在CentOS(以及其他基于Linux的操作系统)中,网络接口的命名通常遵循特定的规则,尤其是在使用PCIe设备(如网络适配器)时。网络接口的命名通常基于设备的物理…...
SpringSecurity基于配置方法控制访问权限:MVC匹配器、Ant匹配器
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。在 Spring Security 中,可以通过配置方法来控制访问权限。认证是实现授权的前提和基础,在执行授权操作前需要明确目标用户,只有明确目标用户才能明确它所具备的角色和权…...
《养生》(二)
一、基础生活调整 1.作息规律 固定每天7-8小时睡眠,尽量22:30前入睡,晨起后拉开窗帘晒太阳5分钟,调节生物钟 2.饮食优化 三餐定时,每餐细嚼慢咽20次以上,优先吃蔬菜和蛋白质(如鸡蛋、豆腐&#x…...
本地部署MindSearch(开源 AI 搜索引擎框架),然后上传到 hugging face的Spaces——L2G6
部署MindSearch到 hugging face Spaces上——L2G6 任务1 在 官方的MindSearch页面 复制Spaces应用到自己的Spaces下,Space 名称中需要包含 MindSearch 关键词,请在必要的步骤以及成功的对话测试结果当中 实现过程如下: 2.1 MindSearch 简…...
STM32 看门狗
目录 背景 独立看门狗(IWDG) 寄存器访问保护 窗口看门狗(WWDG) 程序 独立看门狗 设置独立看门狗程序 第一步、使能对独立看门狗寄存器的写操作 第二步、设置预分频和重装载值 第三步、喂狗 第四步、使能独立看门狗 喂狗…...
Ansys Motor-CAD:热分析
您好,汽车迷: 在这篇博客中,我将讨论如何使用 Ansys Motor-CAD 中的热物理模型对 IPM 电机进行热分析。我展示了可以应用的各种冷却系统,并演示了一些计算方法,包括稳态、简单瞬态和占空比。 热物理和设置 选择热物理…...
Swagger 转 Word 技术方案
项目概述 本项目旨在提供一种便捷的工具,将 Swagger API 文档转换为 Word 文档,方便开发人员和团队进行文档管理和分享。通过简单的配置和操作,用户可以快速生成包含 API 接口信息、请求参数、返回参数等内容的 Word 文档。 技术架构 本项目基于 Java 开发,采用 Spring …...
对CSS了解哪些?
CSS(Cascading Style Sheets,层叠样式表)是用来描述HTML文档外观和布局的语言。以下是对CSS的常见了解范围: 1. CSS 基础 选择器:如通用选择器 (*)、类型选择器、类选择器 (.class)、ID选择器 (#id)、后代选择器、伪类…...
使用 Docker-compose 部署 MySQL
使用 Docker Compose 部署 MySQL 本文将详细指导如何使用 docker-compose 部署 MySQL,包括基本配置、启动步骤、数据持久化以及一些高级选项。通过容器化部署 MySQL,你可以快速搭建一个隔离的数据库环境,适用于开发、测试或小型生产场景。 关…...
【C语言】指针(5)
前言:上篇文章的末尾我们使用了转移表来解决代码冗余的问题,那我们还有没有什么办法解决代码冗余呢?有的这就是接下来要说的回调函数。 往期文章: 指针1 指针2 指针3 指针4 文章目录 一,回调函数二,qsort实现快速排序1…...
go~为什么会有json.Number这种类型存在
解决 JSON 数值类型的不确定性 在 JSON 格式里,数值类型没有明确区分整数和浮点数,一个数值可能是整数(如 123),也可能是浮点数(如 123.45)。而在 Go 语言中,整数(如 in…...
Jmeter连接数据库、逻辑控制器、定时器
Jmeter直连数据库 直接数据库的使用场景 直连数据库的关键配置 添加MYSQL驱动Jar包 方式一:在测试计划面板点击“浏览”按钮,将你的JDBC驱动添加进来 方式二:将MySQL驱动jar包放入到lib/ext目录下,重启JMeter 配置数据库连接信…...
DeepSeek智能测试助手:分类+推理+导出一站式工具
前言 测试开发工程师在日常工作中需要处理大量测试文档,并且这些文档需要被高效分类、清洗和管理,同时结合强大的 AI 推理能力(如 DeepSeek 模型)进行智能化处理和分析。为此,我们开发了一款基于 PyQt5 的 GUI 工具&a…...
20250220找回Ubuntu22.04中丢失的文件管理器
20250220找回Ubuntu22.04中丢失的文件管理器 2025/2/20 18:05 在Ubuntu20.04.6中 生产服务器上 强制安装deb安装包的时候,把 桌面显示搞丢了。 Ubuntu的桌面用得少,但是没有还是挺不方便的,一通操作,桌面回来了。还是有很多/不少功…...
IMX6ULL的公板的以太网控制器(MAC)与物理层(PHY)芯片(KSZ8081RNB)连接的原理图分析(包含各引脚说明以及工作原理)
目录 什么叫以太网?它与因特网有何区别?公板实现以太网的原理介绍(MII/RMII协议介绍)公板的原理图下载地址公板中IMX6ULL处理器与MAC(以太网控制器)有关的原理图IMX6ULL处理器的MAC引脚说明1. **ENET1_TX_DATA0**2. **ENET1_TX_DATA1**3. **ENET1_TX_EN*…...
一周学会Flask3 Python Web开发-request请求对象与url传参
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili request请求对象封装了从客户端发来的请求报文信息,我们可以从中获取所有数据。 request对象包含的常用属性&…...
2024年国赛高教杯数学建模C题农作物的种植策略解题全过程文档及程序
2024年国赛高教杯数学建模 C题 农作物的种植策略 原题再现 根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略&…...
WEB前端将指定DOM生成图片并下载最佳实践(html2canvas)
前言: html2canvas 是一个 JavaScript 库,其主要作用是将 HTML 元素或其部分内容渲染为 Canvas 图像。通过它,开发者可以将网页中的任意 DOM 元素(包括文本、图片、样式等)转换为图片格式(如 PNG 或 JPEG&…...
C# 十六进制字符串转换为十进制
在 C# 中,将十六进制(Hexadecimal)字符串转换为十进制(Decimal)整数非常简单。以下是几种常见的方法: 方法 1: 使用 Convert.ToInt32 Convert.ToInt32 方法可以直接将十六进制字符串转换为十进制整数。 示…...
第4章 信息系统架构(三)
4.3 应用架构 应用架构的主要内容是规划出目标应用分层分域架构,根据业务架构规划目标应用域、应用组和目标应用组件,形成目标应用架构逻辑视图和系统视图。从功能视角出发,阐述应用组件各自及应用架构整体上,如何实现组织的高阶…...
Qt 保留小数点 固定长度 QString 格式化
QString的arg()函数格式化输出double类型数值,包括fieldWidth、fmt、prec和fillChar参数的作用。示例代码展示了如何设置精度和填充字符,以及字段宽度的影响。文中提到,当fieldWidth小于实际长度时,前面的填充不会被截断。此外&am…...
亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!
作者:程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案,但是很多人表示还是用的不够爽,比如用CodeChat的方案,只支持V3版本,不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么,今天,给…...
AI训练中的常用指令
以下是一些常用于深度学习训练的 Linux 指令,可以帮助你高效管理和执行训练任务: 文件管理 查看当前目录内容:ls进入目录:cd 路径/到/目录创建新目录:mkdir 新目录名称删除文件或目录: 删除文件ÿ…...
汽车同轴供电(PoC)电感器市场报告:未来几年年复合增长率CAGR为14.3%
汽车同轴供电(PoC)系统旨在通过同轴电缆传输电力和数据。 该技术适用于各种汽车应用,如摄像头系统、传感器和其他需要通过单根电缆传输电力和数据的车载设备。 汽车 PoC 系统中的电感器有多种用途,包括能量存储:电感器…...
C++中间件DDS介绍
C DDS 库简介 DDS(Data Distribution Service) 是一种用于实时分布式系统通信的中间件标准,由 OMG(Object Management Group) 提出。它是一种发布/订阅(Publish/Subscribe)模式的数据通信框架&…...
强化学习笔记
强化学习的总体目标:寻找最优策略。 关键名词 智能体(Agent) 状态(State):智能体相对于环境的状态 s ∈ S s∈S s∈S 状态空间(State space):把所有状态放在一起&…...
【个人记录】openEuler安装K3S并配置为GPU节点
前言 国内网络环境特殊,在线安装比较麻烦,K3S采用离线安装方式进行部署。 安装整体思路是: 安装GPU驱动安装CUDA工具安装nvidia容器运行时安装K3S设置K3S使用GPU 基础环境 采用All In One方式(其实只有一张GPU卡)部…...
SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)
目录 一、引言二、集成ToolContext示例步骤1: 在`@Tool`标注的工具方法中集成`ToolConext`参数步骤2:`ChatClient`运行时动态设置`ToolContext`参数三、填坑一、引言 在使用AI大模型的工具调用机制时,工具参数都是由大模型解析用户输入上下文获取的,由大模型提供参数给本地…...
Linux系统中常见的词GNU是什么意思?
GNU 是 “GNU’s Not Unix” 的递归缩写,它是一个自由软件项目,旨在创建一个完全自由的操作系统。这个名字反映了GNU项目的核心理念:它试图创建一个类Unix的系统,但不是Unix本身。 GNU 项目由 理查德斯托曼(Richard S…...
Revit API:对元素过滤的三点思考
一、为什么要对元素进行过滤? 提高效率:Revit模型可能包含成千上万的元素,直接对所有元素进行操作会非常耗时。通过过滤,可以只选择需要处理的元素,从而提高代码的执行效率。 精准控制:通过过滤࿰…...
计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
计算机网络之TCP的可靠传输
上一篇内容可能比较多,显得比较杂乱,这一篇简单总结一下TCP是靠什么实现可靠传输的吧。 校验和 TCP是端到端的传输,由发送方计算校验和,接收方进行验证,目的是为了验证TCP首部和数据在发送过程中没有任何改动&#x…...
linux 驱动编程配置(minis3c2440)
1.介绍 1. 启动过程:启动u-boot------>>启动linux内核----->>挂载根文件系统 2. uboot是一个裸机程序,是一个bootloader,用于启动linux系统以及系统初始化 ubootloader主要完成了哪些任务:1. 初始化异常向量表&a…...