神经网络基础[损失函数,bp算法,梯度下降算法 ]
关于神经网络的基础的概念可以看我前面的文章
损失函数
在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异
作用:指导模型的训练过程,通过反向传播算法计算梯度,从而更新网络的参数,最终使得模型的预测结果尽可能接近真实值。损失函数的选择对模型训练的收敛速度、效果和稳定性具有重要影响。
分类
-
回归问题
1.均方误差损失(Mean Square Error,MSE)
-
公式:
M S E = 1 N Σ i = 1 N ( y i − y ^ i ) 2 MSE = \frac{1}{N} Σ_{i=1}^N (y_{i} - ŷ_{i})^2 MSE=N1Σi=1N(yi−y^i)2 -
优点:
- 计算简单
- 对较大的误差惩罚较大,因此鼓励模型尽量减少较大的偏差。
-
缺点:
- 对离群点非常敏感,使得离群点的损失值会大大增加
2.平均绝对误差(Mean Absolute Error,MAE)
-
公式:
M S E = 1 N Σ i = 1 N ∣ y i − y ^ i ∣ MSE = \frac{1}{N} Σ_{i=1}^N |y_{i} - ŷ_{i}| MSE=N1Σi=1N∣yi−y^i∣ -
优点:
-
对离群点不那么敏感
-
缺点:
- 收敛速度慢
3.SmoothL1损失函数
SmoothL1 损失函数是一种结合了均方误差(MSE)和绝对误差(MAE)的损失函数。它在误差较小时表现得像 MSE,在误差较大时表现得像 MAE。
-
公式:
S m o o t h L 1 = { 0.5 ∗ x 2 , ∣ x ∣ < 1 ∣ x ∣ − 0.5 ∣ x ∣ ≥ 1 Smooth_{L1} = \begin {cases} 0.5*x^2 & {,|x| < 1} \\ |x| - 0.5 & {|x| \geq 1} \end{cases} SmoothL1={0.5∗x2∣x∣−0.5,∣x∣<1∣x∣≥1 -
优点:
- 解决了L2损失(MSE)的梯度爆炸的问题
- 解决L1损失的不光滑问题
-
-
分类问题
1.交叉熵损失(Cross-Entropy Loss)
-
二分类问题
- 公式:
L = 1 N Σ i = 1 N [ y i l o g ( y ^ i ) + ( 1 − y i ) l o g ( 1 − y ^ i ) ] L = \frac{1}{N} Σ_{i=1}^N [y_{i}log(ŷ_{i}) +(1 - y_{i})log(1-ŷ_{i})] L=N1Σi=1N[yilog(y^i)+(1−yi)log(1−y^i)]
-
多分类问题
- 公式:
L = − 1 N Σ i = 1 N y i l o g ( S o f t m a x ( f ɵ ( x i ) ) ) L = -\frac{1}{N} Σ_{i=1}^N y_ilog(Softmax(f_ɵ(x_i))) L=−N1Σi=1Nyilog(Softmax(fɵ(xi)))
y_i: 经过one-hot encoder后,属于x中某一类别的概率
f_ɵ(x_i):样本属于某一类的预测分数
-
梯度下降算法
梯度下降法是一种寻找使损失函数最小化的方法。从数学上的角度来看,梯度的方向是函数增长速度最快的方向,那么梯度的反方向就是函数减少最快的方向
通式
W i j = W i j ′ − l r ∗ ∂ E r r o r ∂ W i j W_{ij} = W^{'}_{ij} - lr * \frac{∂Error}{∂W_{ij}} Wij=Wij′−lr∗∂Wij∂Error
lr:学习率
反向传播算法(Back Propagation)
原理
利用损失函数Error,从后往前,结合梯度下降算法,依次对各个参数求偏导,并进行参数更新
反向传播算法举例
反向传播对神经网络中的各个节点的权重进行更新。以一个简单的神经网络用来举例:激活函数为sigmoid
net xx: 神经元的输入值,[net xx = w.T * x +b]
out xx:神经元的输出值,[out xx = sigmoid(net xx)]
Error:E = MSE
网络前向传播过程如下:
如何进行反向传播?
使用链式求导法则,以更新参数w5为例:
由
E t o t a l = E o 1 + E o 2 E_{total} = E_{o1} + E_{o2} Etotal=Eo1+Eo2
得
∂ E t o t a l ∂ o u t o 1 = − ( t a r g e t o 1 − o u t o 1 ) \frac{∂E_{total}}{∂out_{o1}}= -(target_{o1} - out_{o1}) ∂outo1∂Etotal=−(targeto1−outo1)
又
o u t o 1 = s i g m o i d ( n e t o 1 ) = s i g m o i d ( w 5 ∗ o u t h 1 + w 6 ∗ o u t h 2 ) out_{o1} = sigmoid(net_{o1})=sigmoid(w_5*out_{h1} + w_6*out_{h2}) outo1=sigmoid(neto1)=sigmoid(w5∗outh1+w6∗outh2)
则
∂ o u t o 1 ∂ w 5 = ∂ o u t o 1 ∂ n e t o 1 ∗ ∂ n e t o 1 ∂ w 5 = o u t o 1 ∗ ( 1 − o u t o 1 ) ∗ o u t h 1 \begin{aligned}\frac{∂out_{o1}}{∂w_5}&= \frac{∂out_{o1}}{∂net_{o1}}*\frac{∂net_{o1}}{∂w_5}\\&=out_{o1}*(1-out_{o1})*out_{h1}\end{aligned} ∂w5∂outo1=∂neto1∂outo1∗∂w5∂neto1=outo1∗(1−outo1)∗outh1
综上
∂ E t o t a l ∂ w 5 = ∂ E t o t a l ∂ o u t o 1 ∗ ∂ o u t o 1 ∂ n e t o 1 ∗ ∂ n e t o 1 ∂ w 5 \frac{∂E_{total}}{∂w_{5}}=\frac{∂E_{total}}{∂out_{o1}}*\frac{∂out_{o1}}{∂net_{o1}}*\frac{∂net_{o1}}{∂w_5} ∂w5∂Etotal=∂outo1∂Etotal∗∂neto1∂outo1∗∂w5∂neto1
pytorch中反向传播的过程
1.optimizer.zero_grad()进行梯度清零
2.根据loss.backward()进行反向传播
3.使用optimizer.step()进行参数更新
梯度下降的优化方法
梯度下降优化算法中,可能会碰到以下情况:
1.碰到平缓区域,梯度值较小,参数优化变慢
2.碰到 “鞍点” ,梯度为 0,参数无法优化
3.碰到局部最小值,参数不是最优
针对这些问题,出现了一些 通过优化权重系数w和学习率lr的两种主流思路 的算法
1.Momentum 动量法
思想:使用指数加权平均法优化权重w
梯度更新公式:
D t = β ∗ S t − 1 + ( 1 − β ) ∗ W t D_t = β*S_{t-1} + (1-β)*W_t Dt=β∗St−1+(1−β)∗Wt
1.Dt代表当前时刻的指数加权平均梯度值
2.St-1 表示历史梯度移动加权平均值
3.β为权重系数
4.Wt表示当前时刻的梯度值
2.AdaGrad
思想:根据历史梯度信息为每个参数动态调整学习率
AdaGrad 通过对不同的参数分量使用不同的学习率,AdaGrad 的学习率总体会逐渐减小。
其计算步骤如下:
1.初始化学习率 α、初始化参数 θ、小常数 σ = 1e-6
2.初始化梯度累积变量 s = 0
3.从训练集中采样 m 个样本的小批量,计算梯度 g
4.累积平方梯度 s = s + g ⊙ g,⊙ 表示各个分量相乘
学习率的计算公式如下:
α = α s + σ \alpha = \frac{\alpha}{\sqrt{s} + \sigma} α=s+σα
参数更新公式如下:
θ = θ − α s + σ ⋅ g \theta= \theta - \frac{\alpha}{\sqrt{s} + \sigma}\cdot{g} θ=θ−s+σα⋅g
3.RMSprop
思想:RMSProp 并不对所有历史梯度平方进行简单累加,而是采用了指数加权移动平均的方法
RMSProp优化算法是对AdaGrad的优化. 最主要的不同是,其使用指数移动加权平均梯度替换历史梯度的平方和。其计算过程如下:
1.初始化学习率 α、初始化参数 θ、小常数 σ = 1e-6
2.初始化参数 θ
3.初始化梯度累计变量 s
4.从训练集中采样 m 个样本的小批量,计算梯度 g
5.使用指数移动平均累积历史梯度,公式如下:
s = β ⋅ s + ( 1 − β ) ⋅ g ⊙ g s = \beta \cdot s + (1-\beta)\cdot g ⊙ g s=β⋅s+(1−β)⋅g⊙g
学习率 α 的计算公式如下:
α = α s + σ \alpha = \frac{\alpha}{\sqrt{s} + \sigma} α=s+σα
参数更新公式如下:
θ = θ − α s + σ ⋅ g \theta= \theta - \frac{\alpha}{\sqrt{s} + \sigma}\cdot{g} θ=θ−s+σα⋅g
4.Adam
Adam(Adaptive Moment Estimation)算法 是一种广泛使用的自适应学习率优化算法,它结合了动量(Momentum)和 RMSProp 的思想,用于加速梯度下降过程,特别适用于深度学习等大规模参数优化问题。
核心思想
Adam 算法通过为每个参数维护两个估计量:
- 一阶矩估计(梯度的均值):捕捉梯度的方向信息,相当于动量机制。
- 二阶矩估计(梯度平方的均值):捕捉梯度的幅度信息,用于对学习率进行自适应调整。
这两个估计量帮助算法根据历史梯度的信息自动调整每个参数的更新步长,从而既能利用梯度的方向(动量)加速收敛,又能根据梯度的大小(自适应学习率)防止参数更新过大或过小。
算法步骤
设定目标函数为 J(θ) 需要优化的参数为 θ,在每次迭代中计算梯度 gt=∇θ*J(θt)
Adam 算法的具体更新步骤如下:
-
初始化
设置初始参数 θ,并初始化:
m 0 = 0 , v 0 = 0 , t = 0 m_0=0,v_0=0,t=0 m0=0,v0=0,t=0
同时设定超参数:- 学习率 η(通常如 0.001)
- 一阶矩衰减率 β1(常取值为 0.9)
- 二阶矩衰减率 β2(常取值为 0.999)
- 防止除零的小常数 ϵ(例如 10^−8)
-
梯度与矩估计更新
对于每一次迭代 t=1,2,…,进行以下更新:-
更新一阶矩(梯度均值)的指数加权平均:
m t = β 1 ∗ m t − 1 + ( 1 − β 1 ) ∗ g t m_t = \beta_1*m_{t-1} + (1 - \beta_1)*g_t mt=β1∗mt−1+(1−β1)∗gt
-
更新二阶矩(梯度平方均值)的指数加权平均:
v t = β 2 ∗ v t − 1 + ( 1 − β 2 ) ∗ g t 2 v_t = \beta_2*v_{t-1} + (1 - \beta_2)*g_t^2 vt=β2∗vt−1+(1−β2)∗gt2
-
-
偏差修正
由于 m0 和 v0 初始化为零,在初期估计会存在偏差。为了校正这一偏差,进行以下计算:
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1−β1tmt,v^t=1−β2tvt -
参数更新
最后使用修正后的矩估计更新参数:
θ t + 1 = θ t − η m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−ηv^t+ϵm^t
0,v_0=0,t=0
$$
同时设定超参数:
- 学习率 η(通常如 0.001)
- 一阶矩衰减率 β1(常取值为 0.9)
- 二阶矩衰减率 β2(常取值为 0.999)
- 防止除零的小常数 ϵ(例如 10^−8)
-
梯度与矩估计更新
对于每一次迭代 t=1,2,…,进行以下更新:-
更新一阶矩(梯度均值)的指数加权平均:
m t = β 1 ∗ m t − 1 + ( 1 − β 1 ) ∗ g t m_t = \beta_1*m_{t-1} + (1 - \beta_1)*g_t mt=β1∗mt−1+(1−β1)∗gt
-
更新二阶矩(梯度平方均值)的指数加权平均:
v t = β 2 ∗ v t − 1 + ( 1 − β 2 ) ∗ g t 2 v_t = \beta_2*v_{t-1} + (1 - \beta_2)*g_t^2 vt=β2∗vt−1+(1−β2)∗gt2
-
-
偏差修正
由于 m0 和 v0 初始化为零,在初期估计会存在偏差。为了校正这一偏差,进行以下计算:
m ^ t = m t 1 − β 1 t , v ^ t = v t 1 − β 2 t \hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t} m^t=1−β1tmt,v^t=1−β2tvt -
参数更新
最后使用修正后的矩估计更新参数:
θ t + 1 = θ t − η m ^ t v ^ t + ϵ \theta_{t+1} = \theta_t - \eta \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} θt+1=θt−ηv^t+ϵm^t
相关文章:
神经网络基础[损失函数,bp算法,梯度下降算法 ]
关于神经网络的基础的概念可以看我前面的文章 损失函数 在深度学习中, 损失函数是用来衡量模型参数的质量的函数, 衡量的方式是比较网络输出和真实输出的差异 作用:指导模型的训练过程,通过反向传播算法计算梯度,从而更新网络的参数,最终使…...
python打印颜色(python颜色、python print颜色、python打印彩色文字、python print彩色、python彩色文字)
文章目录 python怎么打印彩色文字1. 使用ANSI转义码:2. 使用colorama库(更好的跨平台支持):3. 使用termcolor库: python怎么打印彩色文字 在Python中打印彩色文字有几种方法: 1. 使用ANSI转义码ÿ…...
数字域残留频偏的补偿原理
模拟域的频谱搬移一般通过混频器实现。一般情况下模拟域调整完频偏后数字域还会存在一部分残留频偏这部分就需要在数字域补偿。原理比较简单本文进行下粗略总结。首先我们需要了解下采样具体可参考下信号与系统笔记(六):采样 - 知乎。 采样前和采样后,角…...
Linux文件管理2
Linux 文件管理是系统操作的核心内容之一,涉及文件和目录的创建、删除、移动、查看、权限管理等操作。以下是 Linux 文件管理的核心知识点和常用操作总结: 一、文件系统结构 Linux 文件系统采用 树形结构,以 /(根目录࿰…...
C++----模拟实现string
模拟实现string,首先我们要知道成员变量有哪些: class _string{private:char* _str;size_t capacity;//空间有多大size_t size;//有效字符多少const static size_t npos;};const size_t _string::npos-1;//static在外面定义不需要带static,np…...
Python torch.optim.lr_scheduler 常用学习率调度器使用方法
在看学习率调度器之前,我们先看一下学习率的相关知识: 学习率 学习率的定义 学习率(Learning Rate)是深度学习中一个关键的超参数,它决定了在优化算法(如梯度下降法)更新模型参数时࿰…...
从零开始学Python游戏编程39-碰撞处理1
在《从零开始学Python游戏编程38-精灵5》代码的基础上,添加两个敌人的防御塔,玩家的坦克无法移动到防御塔所在的空格中,如图1所示。 图1 游戏中的碰撞处理 1 游戏中空格的坐标 在《从零开始学Python游戏编程36-精灵3》中提到,可…...
同步定时器的用户数要和线程组保持一致,否则jmeter会出现接口不执行’stop‘和‘×’的情况
调试压测时发现了一个问题就是线程计划总是出现‘stop’的按钮无法执行完毕 发现时同步定时器导致的,就是有接口使用了同步定时器,但是这个同步定时器的用户数量设置的<线程组用户数量时,会出现执行无法结束的情况,如下…...
如何在Linux用libevent写一个聊天服务器
废话少说,先看看思路 因为libevent的回调机制,我们可以借助这个机制来创建bufferevent来实现用户和用户进行通信 如果成功连接后我们可以直接在listener回调函数里创建一个bufferevent缓冲区,并为每个缓冲区设置相应的读回调和事件回调&…...
Virtuoso ADE采用Spectre仿真中出现MOS管最小长宽比满足要求依然报错的情况解决方法
在ADE仿真中错误问题如下: ERROR (CMI-2440): "xxx.scs" 46338: I2.M1: The length, width, or area of the instance does not fit the given lmax-lmin, wmax-wmin, or areamax-areamin range for any model in the I2.M3.nch_hvt group. The channel w…...
防火墙原理与应用总结
防火墙介绍: 防火墙(Firewall)是一种网络安全设备,其核心目标是通过分析数据包的源地址、端口、协议等内容,保护一个网络区域免受来自另一个网络区域的网络攻击和网络入侵行为,同时允许合法流量自由通行。…...
Graph Database Self-Managed Neo4j 知识图谱存储实践2:通过官方新手例子入门(未完成)
官方入门例子:neo4j-graph-examples/get-started: An introduction to graph databases and Neo4j for new users 官方例子仓库:https://github.com/neo4j-graph-examples 下载数据 git clone https://github.com/neo4j-graph-examples/get-started …...
GIT下载步骤
git官方链接: 添加链接描述...
C++中的vector和list的区别与适用场景
区别 特性vectorlist底层实现动态数组双向链表内存分配连续内存块非连续内存块随机访问支持,通过索引访问,时间复杂度O(1)不支持,需遍历,时间复杂度O(n)插入/删除末尾操作效率高,时间复杂度O(1)任意位置操作效率高&am…...
软件测试入门学习笔记
今天学习新知识,软件测试。 什么是软件测试? 使用人工和自动手段来运行或测试某个系统的过程,目的在于检验它是否满足规定的需求或弄清实际结果与预期结果之间的差别。 软件测试的目的? 1)为了发现程序࿰…...
2025年深度学习模型发展全景透视(基于前沿技术突破与开源生态演进的交叉分析)
2025年深度学习模型发展全景透视 (基于前沿技术突破与开源生态演进的交叉分析) 一、技术突破与能力边界拓展 智能水平跃升 2025年开源模型如Meta Llama-4、阿里Qwen2.5-VL参数规模突破1300亿,在常识推理能力测试中首次超越人类基准线7.2%谷歌…...
时间复杂度分析
复杂度分析的必要性: 当给我们一段代码时,我们是以什么准则来判断代码效率的高低呢?每一段代码都会消耗一段时间,或占据一段数据空间,那么自然是在实现相同功能的情况下,代码所耗时间最少,所占…...
BGE-m3 和 BCE-Embedding 模型对比分析
以下是对 BGE-m3 和 BCE-Embedding 模型在 embedding 领域的多维度对比分析,基于公开的技术文档和实验数据: 1. 基础信息对比 维度BGE-m3 (智源研究院)BCE-Embedding (网易)发布时间2024 年 1 月2023 年 9 月模型架构Transformer-basedTransformer-base…...
题目 3320: 蓝桥杯2025年第十六届省赛真题-产值调整
题目 3320: 蓝桥杯2025年第十六届省赛真题-产值调整 时间限制: 2s 内存限制: 192MB 提交: 549 解决: 122 题目描述 偏远的小镇上,三兄弟共同经营着一家小型矿业公司 “兄弟矿业”。公司旗下有三座矿山:金矿、银矿和铜矿,它们的初始产值分别用…...
计算机组成原理第二章 数据的表示和运算——2.1数制与编码
计算机组成原理第二章 数据的表示和运算——数制与编码 一、基本概念与核心知识点 1.1 数制系统基础 1.1.1 进位计数制 定义:以固定基数(如2、8、10、16)表示数值的系统核心要素: 基数(R):允…...
基于归纳共形预测的大型视觉-语言模型中预测集的**数据驱动校准**
摘要 本研究通过分离共形预测(SCP)框架,解决了大型视觉语言模型(LVLMs)在视觉问答(VQA)任务中幻觉缓解的关键挑战。虽然LVLMs在多模态推理方面表现出色,但它们的输出常常表现出具有…...
Golang | 自行实现并发安全的Map
核心思路,读写map之前加锁!哈希思路,大map化分为很多个小map...
【Python数据库编程实战】从SQL到ORM的完整指南
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:SQLite基础操作案例2:MySQL连接池案例3:SQLAlchemy ORM …...
深入剖析扣子智能体的工作流与实战案例
前面我们已经初步带大家体验过扣子工作流,工作流程是 Coze 最为强大的功能之一,它如同扣子中蕴含的奇妙魔法工具,赋予我们的机器人处理极其复杂问题逻辑的能力。 这篇文章会带你更加深入地去理解并运用工作流解决实际问题 目录 一、工作流…...
【计算机网络】IP地址
IPv4 五类地址 1.0.0.0 ~ 126.255.255.255A类子网8位,主机24位128.0.0.0 ~ 191.255.255.255B类子网16位,主机16位192.0.0.0 ~ 223.255.255.255C类子网24位,主机8位224.0.0.0 ~ 239.255.255.255D类不分网络地址和主机地址,作为组播…...
基于CATIA参数化管道建模的自动化插件开发实践——NX建模之管道命令的参考与移植
引言 在机械设计领域,CATIA作为行业领先的CAD软件,其强大的参数化建模能力备受青睐。本文介绍如何利用Python的PySide6框架与CATIA二次开发技术,开发一款智能管状体生成工具。该工具借鉴了同类工业软件NX的建模的管道命令,通过Py…...
运维之SSD硬盘(SSD hard Drive for Operation and Maintenance)
背景 SSD的产生背景是计算技术发展和市场需求驱动的结果。早期计算机使用磁芯存储器,后来被半导体存储器取代,提高了速度和可靠性。随着电子设备小型化,对轻便、低功耗存储器的需求增长,SSD因无机械部件、速度快、耗电少而受到关…...
基于javaweb的SSM+Maven红酒朔源管理系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
HTML 地理定位(Geolocation)教程
HTML 地理定位(Geolocation)教程 简介 HTML5 的 Geolocation API 允许网页应用获取用户的地理位置信息。这个功能可用于提供基于位置的服务,如导航、本地搜索、天气预报等。本教程将详细介绍如何在网页中实现地理定位功能。 工作原理 浏览器可以通过多种方式确定…...
RHEL与CentOS:从同源到分流的开源操作系统演进
RHEL与CentOS:从同源到分流的开源操作系统演进 一、核心关系:源代码的重构与社区化 RHEL(Red Hat Enterprise Linux)与CentOS(Community ENTerprise Operating System)的关系可以概括为“同源异构”。RHE…...
架构师面试(三十六):广播消息
题目 在像 IM、短视频、游戏等实时在线类的业务系统中,一般会有【广播消息】业务,这类业务具有瞬时高流量的特点。 在对【广播消息】业务实现时通常需要同时写 “系统消息库” 和更新用户的 “联系人库” 的操作,用户的联系人表中会有未读数…...
Spine 动画教程:皮肤制作
一、前言 搁了很久的抖音直播小玩法开发,最近又让我想起来了。由于是初次尝试,所以我将开发费用的预算降到为零。不但不买服务器采用 UnitySDK 的指令直推,而且游戏的资产也用 AI 生成,主打省时又省钱。 但是图片有了࿰…...
Rust 学习笔记:函数和控制流
Rust 学习笔记:函数和控制流 Rust 学习笔记:函数和控制流函数(Function)语句和表达式带返回值的函数注释控制流if 表达式使用 else if 处理多个条件在 let 语句中使用 if循环loop从循环中返回值循环标签消除多个循环之间的歧义带 …...
探秘LLM推理模型:hidden states中藏着的self verification的“钥匙”
推理模型在数学和逻辑推理等任务中表现出色,但常出现过度推理的情况。本文研究发现,推理模型的隐藏状态编码了答案正确性信息,利用这一信息可提升推理效率。想知道具体如何实现吗?快来一起来了解吧! 论文标题 Reasoni…...
《Learning Langchain》阅读笔记8-RAG(4)在vector store中存储embbdings
什么是 vector store? 与专门用于存储结构化数据(如 JSON 文档或符合关系型数据库模式的数据)的传统数据库不同,vector stores处理的是非结构化数据,包括文本和图像。像传统数据库一样,vector stores也能执…...
【C/C++】深入理解指针(五)
文章目录 深入理解指针(五)1.回调函数是什么?2.qsort使用举例2.1 使用qsort函数排序整型数据强调 2.2 使用qsort排序结构数据 3.qsort函数的模拟实现 深入理解指针(五) 1.回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指…...
【vue】【element-plus】 el-date-picker使用cell-class-name进行标记,type=year不生效解决方法
typedete,自定义cell-class-name打标记效果如下: 相关代码: <el-date-pickerv-model"date":clearable"false":editable"false":cell-class-name"cellClassName"type"date"format&quo…...
RocketMQ 主题与队列的协同作用解析(既然队列存储在不同的集群中,那要主题有什么用呢?)---管理命令、配置安装
学习之前呢需要会使用linux的基础命令 一.RocketMQ 主题与队列的协同作用解析 在 RocketMQ 中,主题(Topic)与队列(Queue)的协同设计实现了消息系统的逻辑抽象与物理存储分离。虽然队列实际存储在不同集群的 B…...
解决视频处理中的 HEVC 解码错误:Could not find ref with POC xxx【已解决】
问题描述 今天在使用 Python 处理视频时遇到了以下错误: [hevc 0x7f8a1d02b7c0] Could not find ref with POC 33之前没接触过视频处理,查了一下,这个错误通常发生在处理 HEVC(H.265)编码 的视频时,原因…...
NEGATIVE LABEL GUIDED OOD DETECTION WITH PRETRAINED VISION-LANGUAGE MODELS
1. 介绍: 这篇论文也是基于CLIP通过后处理的方法实现的OOD的检测,但是设计点在于,之前的方法是使用的ID的类别,这篇工作是通过添加一些在语义上非常不同于ID的类别的外分布类来做的OOD检测。 CLIP做OOD检测的这个系列里面我看的以及记录的第一篇就是MCM的方法,这也是确实是…...
Appium自动化 -- 环境安装
1.安装Appium-Python-Clientpip install Appium-Python-Client 2.AndroidSdk安装和环境配置 AndroidSdk下载地址:https://www.androiddevtools.cn/# 下载后解压 SDK Manager.exe 安装sdk tools、sdk plaform-tools、sdk build-tools AndroidSDK 环境变量配…...
Zeppelin在spark环境导出dataframe
1.Zeppelin无法直接访问本地路径 如果zeppelin无法直接访问本地路径,可先将dataframe写到s3,在通过读取s3路径下载文件 %pyspark # 示例:用 PySpark 处理数据 df spark.createDataFrame([(1, "Alice"), (2, "Bob")], …...
Vue3 上传后的文件智能预览(实战体会)
目录 前言1. Demo12. Demo2 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 爬虫神器,无代码爬取,就来:bright.cn 此处的基本知识涉及较少,主要以Demo的形式供大…...
面试常问问题:Java基础篇
一、面向对象编程(OOP) 四大特性 封装、继承、多态、抽象的具体实现与区别? 抽象类与接口的区别?何时选择抽象类或接口? 重写(Override)和重载(Overload)的规则与区别&…...
测试流程?
需求分析 组织需求评审会议,邀请开发团队和测试团队参与。产品经理详细讲解需求,确保开发和测试人员对需求理解一致。 测试计划 分配测试人员:根据项目需求和测试人员的技能,分配测试任务和范围。确定测试策略:包括测…...
Python命名参数的使用
Python脚本传递参数的方式有: 使用sys.argv按照先后的顺序传入对应的参数使用argparse包加载和解析传递的命名参数 下面代码是第2中使用的实例: parser argparse.ArgumentParser(description参数使用说明) parser.add_argument(--time, -t, typestr,…...
赛灵思 XCKU115-2FLVB2104I Xilinx Kintex UltraScale FPGA
XCKU115-2FLVB2104I 是 AMD Xilinx Kintex UltraScale FPGA,基于 20 nm 先进工艺,提供高达 1 451 100 个逻辑单元(Logic Cells),77 721 600 bit 的片上 RAM 资源,以及 5 520 个 DSP 切片(DSP48E…...
使用 Python 项目管理工具 uv 快速创建 MCP 服务(Cherry Studio、Trae 添加 MCP 服务)
文章目录 下载Traeuv 工具教程参考我的这篇文章创建 uv 项目main.pyCherry Studio 添加 MCP 服务DeepSeek API配置 DeepSeek API调用 MCP 服务 Trae 添加 MCP 服务添加 MCP创建智能体 使用智能体调用 MCP 创建 demo 表查询 demo 表结构信息demo 表插入 2 条测试数据查询 demo 表…...
Docker容器持久化
引言 Docker 容器作为一种轻量级、可移植的虚拟化技术,广泛应用于开发、测试和生产环境中。然而,容器天生是短暂的,意味着它们在生命周期结束后会被销毁,而其中的数据也会随之丢失。为了确保容器中的数据能够持久化,我…...
【信息系统项目管理师】高分论文:论成本管理与采购管理(信用管理系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划成本管理2、成本估算3、成本预算4、成本控制论文 2019年1月,我作为项目经理参与了 XX基金管理有限公司信用管理系统项目。该项目成 本1000万,建设期为1年。通过该项目,XX基金管理有限公司在信用…...