CV与NLP经典大模型解读

news2025/1/18 14:38:05

一。llm与lora微调策略解读

(1)文本大模型

llama:meta开源语言模型(咱们能负担得起下游任务了)。

lora:绘你模型你也得能训练的动才行(咱们也能微调下游任务)。lora+diffusion。

self-instruct:下游任务得规矩些,输入与输出都得有一个标准格式。

peft:将上面三个整合到huggingface中了

(2)llm落地微调分析

思路:把一个大模型冻住,下游任务做一个小模型,然后把大模型与小模型加起来就变成大模型功能更强大。只需训练下游任务的小模型就行。

(3)llama与lora介绍

1)llama

<1>让nlp走进千万家,目前llama的模型参数数量是7b到65b,7亿参数量的随便都可以跑起来了。

<2>13b模型效果超越gpt3(130亿吊打1750亿参数的故事)。

<3>完全开源,提供预训练模型(都可以来玩了)。

2)lora

只需训练lora的参数一点点参数就行了,例总共1000亿参数,做下游任务就只训练1亿就行了,就类似大部分的财富被少数人拥有,所以把少数人的财富(特征)掌握就行了。

(4)lora模型实现细节

1)一个输入进到冻住的大模型,然后进入下模型,小模型中做了大矩阵拆分为二个小矩阵相乘的矩阵(类似租客,中介,房东,中介就是拥有绝大多数财富的人),最后这二个相加一起。

大模型与小模型中用到的q,k,v都分别用二个小矩阵(类似中介那种),然后进行特征提取。也许q更重要(秩高一点)。

二。llm下游任务训练自己模型实战

(1)提示工程的作用

指令,输入,输出这三个组成提示模板。

(2)基本api调用

1)本例是langchain,开包即用。它可与openai,hugging face,浏览器,b站连接的。

2)angchain的chat message有几个类型:<1>system:指挥人家要做什么,完成一件什么事?<2>human:我的描述与问题是什么?<3>ai:人家llm回答我的问题

(3)数据文档切分操作

1)text  embedding  model

向量化编码很重要,查与匹配都会用到。即把文本等都转成向量,一切都是向量。

2)提示模板

3)文档切块

(4)样本索引与向量构建

1)匹配查找。利用Faiss是可以输入一个向量到向量库中快速匹配结果,速度快。OpenAiEmbedding是用来向量化的(需收费)。

例如:

loader=TextLoader("指定某个text文件")

documents=loader.load()

textSplitter=RecursiveCharacterTextSplitter(chunk_size=1000,chunk_overlap=50)

texts=textSplitter.split_documents(documents)

embeddings=OpenAiEmbedding()

db=FAISS.from_document(texts,embeddings)

retriever=db.as_retriever()

docs=retriever.get_relevant_documents("六大派围攻光明顶")

print("\n\n".join([x.page_content[:200]  for x in  docs[:2]])

(5)数据切块方法(类似mapreduce)

1)为了对提示(prompt)进行简化,利用langchain下面的包生成chain实例,先说个一次性加载进去的,这样也许会报错,因为token超长了,例如:

chain=load_summarize_chain(llm,chain_type='stuff' verbose=True)

chain.run(documents)

改变一个参数(chain_type='map_reduce')达到分块效果,这样会按内容生成摘要出来,例如:

chain=load_summarize_chain(llm,chain_type='map_reduce' verbose=True)

chain.run(texts[200:205])

2)agents(代理)

这个例子是用到langchain,可在github上下载下来玩,agents

是在langchain下面的,它的工具很多(一个好汉三个帮的感觉),这要先到网站https://serpapi.com/免费注册个帐号先,然后把注册好的信息写到代码中。这个是要能连到google服务器才能用。

例如:

三。视觉大模型sam(segment  anything model)

(1)demo效果演示

1)sam是分割任务的通用模型。这个模型中也是需通过提示(例如鼠标点中某样东西或框中某个区域),再分割出来(其实它已经是把全部物体都已分割出来的了,提示就类似是查询),所以说这里是可做交互的。以前的分割任务是不能做交互的。

2)大模型其实就是特征提取很强,学习能力强,可学到世界万物,可学到任何东西,只要给我提示,就会给你想要的结果。2023年开始很多大厂都在做大模型。

(2)论文解读分析

它是自监督的,主要是sam大模型自己去学习,去标注。在设计与训练过程中给出提示,无需给例子(zero shot)方式(chatgtp也是用这方式)就可以做所有下游任务(在新的分布式数据与未做过的任务上)了。这就与以前那种数据发生变化时,模型重新去学习时效果就可能直线下降的情况完全不同了,因为sam对新数据与任务都一样能去预测,所以说大模型与以前的机器学习,深度学习有点不同了。

(3)完成的任务分析

clip也是自监督学习,但是数据集是变化的是难点。而sam就加入提示应用到新数据中。

1)提示如何做?

足够经典提示,不管什么方式来提示都能识别出来(例打点或打框框)

2)数据引擎如何构建?

有一小部分标注出来,结合牛生小牛,小牛又生小小牛,小小牛又生小小小牛出来的道理,它就会也会一点点地把绝大多数的数据标注出来(弱模型经训练生成弱数据,然后按这数据再训练模型,模型变强一点了,这时又生成稍强一点的数据,再用这强一点的数据训练模式,这时模型就变的更强了,这时再生成出更强的数据出来),这里可以看出输入数据都在变化的,与以前是不同,这也是很重要的地方,它可以无限地造数据出来。网络结构与算法都是用的通用的。

(4)数据闭环方法

1)它包括图像编码器(image encoder)与快速提示编码器(prompt encoder),因为这里是人机要进行交互的(例浏览器上),所以要快速。把点像素,文本都可转成向量(embedding),只要转成向量就可做成提示编码器。可给它点或框等等作为提示。

2)数据引擎(data engine)。

包括助手阶段(例用现成的数据集标注,人工帮助),半监督阶段(现在模型有点能力了,但还是要人工来做做标注,这时数据量就比第一阶段多了点了),全自动阶段(自动标会错的,错也没关系,继续训练,继续自动标),经过三阶段后数据集就很大了。

(5)预训练模型的作用

1)受nlp大模型的提示启示,图像大模型也需各种提示(例如点,框,坐标,文本),输出会多个结果。

2)图像与提示都是要转成向量来的,这是encoder阶段。例如图像转成向量用到的预训练模型是vit中的mae(cvpr 2022),又例如文本转成向量(可做提示用)就用的预训练模型是clip。sam是用人家做好的预训练模型来用的(mae,clip)

3)zero shot:不用给例子,自己训练。

(6)decoder的作用与项目源码

1)mask decoder。原来decoder只是去原始图像中取特征就行,而这里是双向的(即图像与提示之间相互学习与更新)

(7)分割任务模块设计

1)encoder阶段

运用预训练模型(vit,clip)提image encoder与prompt encoder这二大特征,双向提取与更新特征。

2)mask decoder阶段

初始化出一些token,然后先用cross attention去遍历decoder(有些打酱油,有少量的真正做事),然后self attention相互之间告诉对方我去做什么事等。可参考mask2former或detr那块源码。

(8)实现细节分析

四.视觉QA算法与论文解读(from images to textual prompt:zero-shot visual question answering with frozen large language models)

(1)视觉QA要解决的问题

1)图像转为文本,文本交给nlp领域的大模型(llm)。语音转为文本,文本也交给nlp领域的大模型(llm)。大模型时代2023年开始是nlp为ai核心,图像等都是打辅助作用了。

2)large language models(llm)有很强的zero-shot能力了,但是visual question answering这块做得还不是很好的(给张图片与问题,要回答问题)。

(2)论文概述分析

多模态是指集成和处理两种或以上的不同类型数据或信息的方法与技术。这些数据主要包括文本,图像,视频,音频,传感器数据等。

但现在就是碰到图像与文本训练任务不同(差异大),模态数据不同造成做得不是很好。img2llm让llm给出提示让它能处理视觉问答的任务(给llm提供一些图像的问题与回答对),而且不需要端到端的训练和zero-shot的感觉。

五.扩散模型diffusion架构算法解读

(1)扩散模型diffusion架构与gan碰到的问题

对抗生成网络(gan)差不多过时了,差不多被扩散模型代替了,diffusion在2021年比较火。扩散模型diffusion模型应用例子有把模糊等图像还原成清晰图像(去噪声的过程),或输入文本生成图像(没有用gan<它是要训练生成器与判别器二个网络,训练难度与效果不好>)。

(2)要完成的任务分析

openai-dalle2的出现带火了扩散模型diffusion。

1)加噪声(目的把原始分布变成纯噪声分布,例原始清晰图像一步步做马赛克变得越来越模糊,噪声可以想像成随机生成的正态分布),这是前向过程(扩散过程)。每一时刻往输入数据中增加高斯噪声,这过程就是不断构建标签(噪声)的过程,经过多时刻(越后面时刻增加的噪音越多)后最后数据就会变成纯噪声了。为什么要这样做呢?因为我们最终要去噪声,所以这里要知道噪声是怎么生成才行。这一过程要定义好噪声(即标签),这样才好还原。

2)把噪声还原成原始图像,这是后向过程(复原,这就是扩散过程的核心部分)。

(3)公式原理推导解读

1)前向过程:如何得到Xt时刻的分布。

设At=1-Bt,B随时刻往后要越来越大,所以A会越来越小,At与Bt是自己定义的衰减函数得出来的,是先验条件,已知的。

公式有:Xt=(At开根)*X(t-1)+((1-At)开根)*Z1,其中Z1表示加的噪声(服从高斯分布的),X(t-1)表示前一时刻的数据,而(A开根)与((1-At)开根)分别当作前一时刻与噪声的权重。由权重值分析当时刻越后时噪声越多,A越小,(1-At)开根就越大(也就是噪声<Z1>的权重越大)。

因为高斯分布前面乘以某个系数就相当于对分布的方差做了改变,做加减就相当于对均值做了改变,所以说在噪声前乘上一个数后还是高斯分布来的。高斯分布就是关于均值与方差的分布。

同样的道理代入公式Xt分别可用X(t-1)或者X(t-2)或者X(t-3)等表示.......也最后可用原始的X0表示,公式为(At*A(t-1)*A(t-2)....A的累乘)开根*X0+(1-(At*A(t-1)*A(t-2)....A的累乘))开根*Zt。这公式告诉我们只要知道X0与多少时刻(次)就可用X0表示当前Xt时刻分布,这里用到了递归算法(有点像串联的rnn)。

(4)逆(反)向过程:最终目的是去噪还原成原始图像。

现在已知条件是加噪后某一时刻的分布Xt与时刻t,要求的是算出X0,直接算感觉不大可能,那就一步步反推来算了(例如先得出X(t-1),X(t-2)....最后得出X0),但只知道Xt与t感觉也不好算吧,但这就有点条件概率类似(已知某个条件算出前一情况),这个不好算那我们可换种思路把这个条件概率转变成贝叶斯公式来(因为我们知道了前向工程中X0到Xt的求解了)。

即有q(X(t-1)|Xt,X0)=q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0)),等号右边三项是正向过程,但第一个不是累乘(即q(Xt|X(t-1),X0)=(At开根)*X(t-1)+((1-At)开根)*Z,其实这里就是当作X(t-1)前提下求Xt,不用看X0)。

(5)公式推导结果分析

上面公式q(X(t-1)|Xt,X0)=q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0))右边三项展示后都还是与噪声Z一样的高斯分布(因为与Z做乘法与加法后还是正态分,只是改变了均值与方差),展开q(Xt|X(t-1),X0)=(At开根)*X(t-1)+((1-At)开根)*Z,服从正态分布N((At开根)*X(t-1),1-At)。

同理q(X(t-1)|X0)=(A(t-1)累乘后开根)*X0+((1-A(t-1))累乘)开根)*Z,服从正态分布N((A(t-1)累乘后开根),(1-A(t-1))累乘)开根后的平方),也服从N((A(t-1)累乘后开根),(1-A(t-1))累乘)),

同理q(X(t-1)|X0)=(A(t-1)累乘后开根)*X0+((1-A(t-1))累乘)开根)*Z,服从正态分布N((A(t-1)累乘后开根),(1-A(t-1))累乘)开根后的平方),也服从N((A(t-1)累乘后开根),(1-A(t-1))累乘))。

上面三个展开的式子中服从正态分布N(u,q的平方),其中u是均值,q是标准差,q的平方就是标准差了。

我们知道正态分布后半部分的公式是e的(负的((x-u)的平方)/2(q的平方))次方。这时q(Xt|X(t-1),X0)*(q(X(t-1)|X0)/q(Xt|X0))都可转成正态分布公式时就是先进行乘法与后做除法,我们只看后半部分e次方内容,乘法就是指数相加,除法就是相减,e底不变。然后把它们的(x-u)的平方项展开进行约分化简,有点复杂。最终结果是U(t)的累乘=(1/At开根)*(Xt-(Bt/(1-At的累乘)开根)Zt),其中Zt是服从高斯分布的噪声,它可通过模型学习得到。

(6)论文流程图解读

(7)案例流程分析

打断点跑代码

(8)基本建模训练效果

打断点跑代码

六.openai-dall2论文解读

dall2是openai的东西,不开源的,但可用民间大神做的。它比openai-dall1生成出来的图像更清晰,openai-dall1类似功能免费版本代码是VQGAN-CLIP,可从github上下载玩玩,但效果肯定比不上dall1。

(1)论文基本思想和核心模块分析

这论文是2022年的,论文标题意思是用clip提取文本,图像特征,把文本内容生成图像数据(体现多模态)。整体思想是用clip把文本特征转成图像特征,然后把图像特征传给解码器(decoder)生成出图像。在解码过程中没有用gan与自回归模型(AR),而是用扩散模型diffusion。其实它主要就用到clip与diffusion这二个模型把文本生成图像。

(2)不同模型对比学习

1)运用clip对文本与图像进行特征提取,进行对比学习,若配对的说明相似度高,否则是负例,相似度越低,这里的clip是预训练模型(不用学习更新参数等)。通过对比学习后就有图像与文本编码器(encode),当来了一个文本时,经过文本编码器后就提取出文本特征向量了。

2)有了文本特征向量后,经过prior先验模型(这里用扩散模型diffusion)把它转变成图像特征向量,最后图像特征经过decoder还原生成图像出来,这过程就是dall2的核心过程,到时就是主要训练prior与encoder二个模型

(3)算法核心流程解读

1)扩散模型中没有encoder阶段,因为它由clip去做了。原始扩散模型是由t时刻加了噪声后的东西还原回原始的t0时刻的图像,输入是加了噪声后的东西与时刻t,而dall2这里不但有这二个输入特征向量,还要有文本特征向量(由clip得到),然后通过transformer  类似cls融合这三个特征(服从高斯分布的噪声,时刻t,文本特征)得到一个输入特征,由输入特征经过扩散模型后生成二个图像特征,最后还要选出更好的一个出来,最后这个最优图像特征经过decoder后生成图像出来。

七.openai-dall2源码解读

晚点更新

八.斯坦福AI小镇架构与项目解读

九.CVPR2024:EfficientSam

十.CVPR2024:yolo-world

十一.llama3应用

llama3为什么2024年比较火,主要因为它是开源的,虽然效果没gpt4好,但gpt4不开源。

(1)llama3下载与安装到本地

十二.time-llm大模型多模态预测任务

(1)time-llm论文解读

通常说的大模型是指对文本进行处理,而多模型就是有文本,视觉方面的内容进行处理了,人们的思路就是先把视觉转为文本先。即把其它领域的时序信息学成大模型能识别的文本信息(主要是跨域处理,即把某些领域(例时序领域)的特征指标转成nlp能理解的特征)。国产基础大模型做得也不错了,例如LLMS与千问通义。大模型应不止是文本,把它做到跨域领域中,它也能去理解。现在是怎样才能做到跨域呢?如何高效的模态对齐(时序与nlp),对齐时我们是不更新大模型参数的。

其他模态运用到这个大模型中,这个大模型主要是提取特征,然后连全连接层,最后输出预测结果。其实就是如何把时序数据做token映射成词,它加入了提示词与多模态对齐后做出预测输出。

怎么对时序提特征呢?首先与卷积类似对时序进行切分,在这边要做归一化,patching,embedding,把这些块映射对应到文本特征能理解的东西,这样就可用这个大模型进行提取特征了,输出预测结果。

在映射到大模型文本特征时会先对大模型语料库进行全连接学习,映射匹配成与时间序列相关特征出来(类似下采样),这样高效点。谁需要特征就谁提供q,这里是时序需要把它映射成文本特征(即时序需提特征),那么压缩后的语料库就提供k,v。通过这种attention后就得到学习后的特征了(时序的映射成nlp文本特征),这一步就是关键的patch操作过程。

下一步是输入提示词到大模型中,得到token特征,而上一步patch后得到的也是映射到文本的token,这时把这二个特征连接在一起,一并输入到大模型中,得到输出的序列特征,然后做投映映射。对映射后的结果(序列特征)先拉长成向量后接全连接做预测。

十三.llama3微调,量化,布署过程

十四.ragflow和大模型函数调用(function calling)

(1)安装布署ragflow与本地化的大模型

知识库无需大模型训练的,只需把知识内容做成可被检索向量。

1)首先上传各种不同类型不同格式的资料(例如pdf,word,q&a对(支持excel格式,excel中第一列为q,第二列为a)等),对里面的内容做一些处理(不同文档的内容是不同的),所以这一步很重要,要尽量保证上传不同格式内容能准确抓取好(所以工貝中有提供这种先选择某种格式(例论文还是教材格式呢)更好);然后把这些内容(例每个段落或每个句子或几个段落做成向量)向量化(embedding),这种做向量化的可本地布署起开源的模型来做,也可调人家的api(收费);再然后做索引,排序,数状结构后传给大模型。

2)ragflow调开源本地布署好的大模型(一般是chat类型(对话方式)与embedding类型(对问题,知识库等进行编码)),把大模型中返回的向量结果保存到本地开源的向量库中

3)github中下载ragflow进行安装(时间18:50),它是要先安装好docker的(它默认会安装到c盘的,占空间有50gb左右)。安装与执行命令安装好docker与ragflow(向量库也会自动安装好的)后就在docker把所有服务启动下。

4)浏览器上打开服务,然后选模型提供商,到时候选ollama这个来用。先到ollama官网上下载与安装ollama,安装好后就在命令窗口中输入ollama  list就到时候看到你安装有的大模型(例假设你安装了llama3,qwen2等大模型,你就可看到)。那现在在ollama网站上就下载一个阿里云的qwen2(7b或72b)的大模型下来安装(直接在下载页面上复制ollama run相关命令,然后在窗口中执行,没下载安装就会自动先下载,否则就启动运行)。因为要做知识库,所以现在还要下载一个向量化的模型,例如在ollama官网上下载(也是直接复制命令并窗口中执行)一个下载量较高且支持中文的shaw/dmeta-embedding-zh(其实免费的效果都不会太好,能用就行)。

5)回到浏览器上打开ragflow服务,然后选模型提供商,选ollama,添加刚才安装好的qwen2与shaw/dmeta-embedding-zh,注意添加页面中模型名称一定要与ollama list列出的左边模型名称一样;添加页面中的基础Url一定要写http://ip:11434地址,不能写http://localhost:11434,这里11434是ollama的默认端口,可结合实际修改这端口。

注意:ollama与ragflow也是要先在环境变量中备好的,例按这样配置:名称是OLLAMA_HOST,值是0.0.0.0:11434

当然你也可用在线的大模型(注册key并可能要交费),也许效果会更好,不用免费的。

(2)使用ragflow中的知识库

1)浏览器上打开ragflow服务,创建知识库。其中嵌入模型就选刚才安装好的shaw/dmeta-embedding-zh,其中解释方式这里可按类型来选择要上传什么类型的文件(当然可打开ragflow源码看人家怎么实现的)。然后就选貝体的文件上去,上传后就点解释操作(自动ocr,分段(切分块),embedding,存入数据库)中。

2)ragflow服务中创建一个聊天,在新建助理中选刚才创建的知识库,模型设置就选刚才安装的阿里云的qwen2

这时就可在聊天框中输入问题来测试了,那我不想在聊天框中输入,这是就先在刚才创建的聊天中生成聊天api------>后端api----->api键生成出来,到时写入到程序代码(API_KEY值)中去。生成聊天api里也可以直接点嵌入,会生成把key嵌入到前端的测试代码。

开发代码过程中,可打开ragflow/docs/references/api.md文档可参考。

同时代码中要把BASE_URL与API_KEY改成自己的。

(2)模型函数调用(function calling)

本例是用大模型来发送邮件,首先在语聚AI中配置好发送邮件的相关api 。

大模型(本例用llama3)做代理,大模型提示词,分析,最后进行函数调用。

十五.agent工作流搭建

现在流行大模型结合智能体(agent)帮我们做事情。agent是个代理,它是由很大的东西组成(如工作流,图像流,知识库,大模型,数据库消息,问答,变量,长期记忆等等),让它帮我们做事情(大模型不做)。现在用扣子来搭建agent工作流,基础版的扣子(国内可用)是免费的,但专业版是要收费的。

(1)agent

1)角色:例如你是个发票处理与写文案专家,能处理各种发票数据和编写文案

2)技能:<1>处理用户上传的发票,调用配置好的发票处理的工作流程,返回工作流处理后的结果;使用ocr技术精准识别发票信息整理成清晰的结构。<2>查询特定类型的发票数据,当用户想查询特定类型的发票数据时就直接调用工作流返回结果。<3>小红书文案写作,当用户想要写文案时,也是直接调用工作流

(2)配置不同功能的工作流(包括创建插件,创建大模型,创建数据库)

1)打开扣子,点工作流后进行配置,例第一步配置上传图像;然后识别图像(本例是发票),识别发票可调用外部插件(本例是用ocr)或api,每一步都可点测试,看这步输出的格式;对每一步的数据的下一步就可插入一个大模型来解释数据,大模型的输入参数就直接引用上一步的结果,大模型的提示词就结合实际场景叫大模型做什么描述清楚(由输入参数去做什么,输出什么<最好输出格式写好,并有例子>,例输出json格式到时候方便保存到数据库);创建数据库表是点创建bot,然后把json格式数据通过sql语句插入到这个表,最后连一个结束来输出大模型的结果看看;点测试并发布就创建了一个关于发票的工作流,到时候就可调用这工作流了。

2)按用户输入条件去刚才存到数据库中的值,这里可调大模型去执行数据库表查询

3)发布后的内容也可以按web api方式发布到网站上。

扣子中除了搭建工作流,还可以搭建知识库等。上面内容是低代码版扣子完成的。

下面说说本地布署代码来搭建的:

(3)autogen:从gitbub中下载微软的autogen,布署启动服务。

(4)phidata:从gitbub中下载微软的phidata,布署启动服务。

(5)metaGPT:这个是国产的多智能体框架,也可从gitbub中下载微软的metaGPT,布署启动服务。多个角色下进行交互(例项目经理,程序员,测试员间不断交互)

十六.sam2视频分割

(1)sam2介绍.

sam2是能分割图像与视频,一帧视频就是一张图像,多帧就是构成视频了。它主要用在图像与视频分割任务中做带提示的视觉分割(带时序性)。它是和sam一样都是有闭环数据集(数据训练模型,模型生成数据),还运用了一个很重要的memory模块。memory主要是存物体本身特征,也会存前一帧与前多帧的提示信息,预测信息等,这样可存下全部序列数据下来,并且可对这些数据进行校正更新(例如前一帧或前多帧提示错了,它可做更新),memory运用到两种attention机制(self与cross)。memory的编码时是把当前帧原图像特征直接加上当前帧预测后的特征作为当前帧的预测出来的结果,把这个结果存到memory bank中。decoder时就从memory bank中取出前几帧结果与提示,当前特征一起预测的。

(2)整体流程

首先提取出多层级的当前图像特征向量(类似mask2former),然后取出memory bank中存的前几帧的预测结果与提示信息(上下文特征),当前提示信息一起进行解码(decoder)。

(3)sam2源码

1)下载segment-anything-2源码后布署到本机,安装所需环境

2)下载安装ffmpeg工具并配置好环境变量,到时用它来切割视频为一张张图片(不用opencv,因为不用写代码)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

相关文章

C#读写ini配置文件保存设置参数

本示例使用设备&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b5P5rkA&ftt&id22173428704 [DllImport("kernel32", CharSet CharSet.Unicode)] public static extern uint GetPrivateProfileString(string lpAppName, stri…

C# .NetCore 使用 Flurl.Http 与 HttpClient 请求处理流式响应

AI对话接口采用流式返回&#xff1a; 1、使用Flurl处理返回的数据流 using Flurl; using Flurl.Http; [HttpPost] public async Task<string> GetLiushiChatLaw() { //1、请求参数&#xff0c;根据实际情况 YourModel request new YourModel();string allStr …

ResNet (Residual Network) - 残差网络:深度卷积神经网络的突破

一、引言 在计算机视觉领域&#xff0c;图像识别一直是一个核心且具有挑战性的任务。随着深度学习的发展&#xff0c;卷积神经网络&#xff08;CNN&#xff09;在图像识别方面取得了显著的成果。然而&#xff0c;随着网络深度的增加&#xff0c;出现了梯度消失或梯度爆炸等问题…

C#--在多线程中使用任务并行库(TPL)--15

目录 一.任务并行库的概念以及定义 二.主要特性 三.代码使用示例 1.最基础的Parallel.For使用方式 2.使用 ParallelOptions 来控制并行执行 3.Parallel.ForEach的使用(用于处理集合) 4.带有本地变量的并行循环(用于需要累加或统计的场景) 5.结合Task和Parallel的高级示…

python 寻找数据拐点

import numpy as np import cv2 from scipy.signal import find_peaks# 示例数据 y_data [365.63258786, 318.34824281, 258.28434505, 228.8913738, 190.87220447, 158.28434505, 129.53035144, 111.95846645, 111.95846645, 120.26517572, 140.71246006, 161.79872204, 180.…

论文笔记-arXiv2025-A survey about Cold Start Recommendation

论文笔记-arXiv2025-Cold-Start Recommendation towards the Era of Large Language Models: A Comprehensive Survey and Roadmap 面向大语言模型&#xff08;LLMs&#xff09;时代的冷启动推荐&#xff1a;全面调研与路线图1.引言2.前言3.内容特征3.1数据不完整学习3.1.1鲁棒…

设计模式03:行为型设计模式之策略模式的使用情景及其基础Demo

1.策略模式 好处&#xff1a;动态切换算法或行为场景&#xff1a;实现同一功能用到不同的算法时和简单工厂对比&#xff1a;简单工厂是通过参数创建对象&#xff0c;调用同一个方法&#xff08;实现细节不同&#xff09;&#xff1b;策略模式是上下文切换对象&#xff0c;调用…

飞机电气系统技术分析:数字样机技术引领创新

现代飞机正向着更安全、环保和经济的方向发展&#xff0c;飞机系统的设计日益复杂&#xff0c;对各子系统的性能和可靠性也提出了更高要求。作为飞机的重要组成部分&#xff0c;电气系统&#xff08;Electrical System&#xff0c;ES&#xff09;不仅负责为各类机载设备提供稳定…

(01)FreeRTOS移植到STM32

一、以STM32的裸机工程模板 任意模板即可 二、去官网上下载FreeRTOS V9.0.0 源码 在移植之前&#xff0c;我们首先要获取到 FreeRTOS 的官方的源码包。这里我们提供两个下载 链 接 &#xff0c; 一 个 是 官 网 &#xff1a; http://www.freertos.org/ &#xff0c; 另…

【Unity-Game4Automation PRO 插件】

Game4Automation PRO 插件 是一个用于 Unity 引擎 的工业自动化仿真工具&#xff0c;它提供了对工业自动化领域的仿真和虚拟调试支持&#xff0c;特别是在与工业机器人、生产线、PLC 系统的集成方面。该插件旨在将工业自动化的实时仿真与游戏开发的高质量 3D 可视化能力结合起来…

element select 绑定一个对象{}

背景&#xff1a; select组件的使用&#xff0c;适用广泛的基础单选 v-model 的值为当前被选中的 el-option 的 value 属性值。但是我们这里想绑定一个对象&#xff0c;一个el-option对应的对象。 <el-select v-model"state.form.modelA" …

mybatis延迟加载、缓存

目录 一、所需表 二、延迟加载 1.延迟加载概念 2.立即加载和延迟加载的应用场景 3.多对一延迟加载查询演示 (1)实体类 User Account (2)AccountMapper接口 (3)AccountMapper.xml (4)UserMapper接口 (5)UserMapper.xml (6)在总配置文件(mybatis-config.xml)中开启延…

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤

VIVADO FIFO (同步和异步) IP 核详细使用配置步骤 目录 前言 一、同步FIFO的使用 1、配置 2、仿真 二、异步FIFO的使用 1、配置 2、仿真 前言 在系统设计中&#xff0c;利用FIFO&#xff08;first in first out&#xff09;进行数据处理是再普遍不过的应用了&#xff0c…

一、1-2 5G-A通感融合基站产品及开通

1、通感融合定义和场景&#xff08;阅读&#xff09; 1.1通感融合定义 1.2通感融合应用场景 2、通感融合架构和原理&#xff08;较难&#xff0c;理解即可&#xff09; 2.1 感知方式 2.2 通感融合架构 SF&#xff08;Sensing Function&#xff09;&#xff1a;核心网感知控制…

某政务行业基于 SeaTunnel 探索数据集成平台的架构实践

分享嘉宾&#xff1a;某政务公司大数据技术经理 孟小鹏 编辑整理&#xff1a;白鲸开源 曾辉 导读&#xff1a;本篇文章将从数据集成的基础概念入手&#xff0c;解析数据割裂给企业带来的挑战&#xff0c;阐述数据集成的重要性&#xff0c;并对常见的集成场景与工具进行阐述&…

【MySQL】使用C语言链接

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;MySQL 目录 一&#xff1a;&#x1f525; MySQL connect &#x1f98b; Connector / C 使用&#x1f98b; mysql 接口介绍&#x1f98b; 完整代码样例 二&#xff1a;&#x1f525; 共勉 一&#…

《Java核心技术II》并行流

并行流 从集合中获取并行流&#xff1a;Stream paralleWords words.parallelStream(); parallel方法将任意顺序流转换为并行流&#xff1a;Stream paralleWords Stream.of(wordArray).parallel(); 以下是不好的示范&#xff0c;假设对字符串的所有短单词计数&#xff1a; …

【Rust自学】13.2. 闭包 Pt.2:闭包的类型推断和标注

13.2.0. 写在正文之前 Rust语言在设计过程中收到了很多语言的启发&#xff0c;而函数式编程对Rust产生了非常显著的影响。函数式编程通常包括通过将函数作为值传递给参数、从其他函数返回它们、将它们分配给变量以供以后执行等等。 在本章中&#xff0c;我们会讨论 Rust 的一…

ETW HOOK[InfinityHook]技术解析

文章目录 概述分析过程参考资料 概述 ETW是操作系统为了对系统调用、异常等信息做了一个日志操作&#xff0c;本质就是在进行调用这些中断、异常、系统调用时会走向这个代码函数区域日志保存的功能。而ETW HOOK就是在驱动层微软的PatchGuard并未对其做到很好的检测&#xff0c…

码编译安装httpd 2.4,测试

下载链接&#xff1a;https://dlcdn.apache.org/httpd/httpd-2.4.62.tar.gz [rootopenEuler-1 ~]# yum install gcc gcc-c make -y [rootopenEuler-1 ~]# ll /root total 9648 -rw-------. 1 root root 920 Jan 10 17:15 anaconda-ks.cfg -rw-r--r-- 1 root root 9872432…