transformer模型学习路线_transformer训练用的模型

Transformer学习路线

完全不懂transformer,最近小白来入门一下,下面就是本菜鸟学习路线。Transformer和CNN是两个分支!!因此要分开学习
Transformer是一个Seq2seq模型,而Seq2seq模型用到了self-attention机制,而self-attention机制又在Encoder、Decode中。
因此学习将从self-Attention->Seq2seq->Encoder-Decode->Transformer

1. 问题背景:

目前我们输入的都是一个向量,最后输出类别或者数值(例如一张图片分类或检测task)
假设现在输入变成一排向量,同时长度会改变,那该怎么解决呢?
在这里插入图片描述

【一一AGI大模型学习 所有资源获取处一一】

①人工智能/大模型学习路线

②AI产品经理入门指南

③大模型方向必读书籍PDF版

④超详细海量大模型实战项目

⑤LLM大模型系统学习教程

⑥640套-AI大模型报告合集

⑦从0-1入门大模型教程视频

⑧AGI大模型技术公开课名额

第一个例子:
词汇序列转换:一个单词对应一个向量,一个句子就是一排长度不一的向量,如何把一个单词表示成一个向量呢?
有两种做法:one-hot Encoding和Word Embeding
one-hot Encoding缺点是每个词汇之间我们看不到任何联系
Word Embedding每个词向量是有语义顺序的,画出来就会是动物在一块(dog,cat,rabbit),植物在一块(tree,flower)等
在这里插入图片描述

第二个例子:
一段声音其实就是一排向量,我们取一段语音信号作为窗口,把其中的信息描述为一个向量(帧),滑动这个窗口就得到这段语音的所有向量,一分钟有6000个声音向量
在这里插入图片描述

第三个例子:
图论、知识图谱也是一排向量,社交网络的每个节点就是一个人,节点之间的关系用线连接。每一个人就是一个向量
在这里插入图片描述

输入可以是一段文字、语音、图,那么输出是什么?

输出分为三种:

  • 一个单词/一小段语音对应一个label (下图第一行)
  • 一整个句子/语音对应一个label (下图第二行)
  • 输出多少由机器自己决定 (下图第三行)
    在这里插入图片描述
第一种:一对一(Sequence Labeling)

在这里插入图片描述

文字处理:序列标注POS tagging,每个输入的单词都输出对应的词性
语音处理:一段声音信号里面有一串向量,每个向量对应一个音标
图像处理:在社交网络中,推荐某个用户商品(可能会买或者不买)

序列标注(Sequence Labeling)问题

每个输入的单词都输出对应的词性,但是!!!当同一个单词有不同词性时,需要考虑前后文的语义(eg:I saw a saw .我看见一把锯子)
解决方法:利用滑动窗口,每个向量查看窗口中相邻的其他向量的性质。(例如红色方框的window)
但是,如果语句一长,这种方法不能解决整条语句的分析问题,即语义分析。
这就引出了 Self-attention 技术。
在这里插入图片描述

类型二:多对一

在这里插入图片描述

语义分析:一整个句子的正面评价、负面评价。
语音识别:一段语音整体识别某人的音色。
图像:给出分子的结构,判断其亲水性。

类型三:由模型自定 (seq2seq)

不知道应该输出多少个标签,机器自行决定。
翻译:语言A到语言B,单词字符数目不同
语音识别等


2.Self-Attention

与滑动窗最大的区别就是,所有单词通过Self-Attention考虑整个句子的语义
在这里插入图片描述

原理:

self-attention最终想要什么?
本质问题就是给一个输入,输出能看到所有输入的样本信息,然后计算相关性(不同权重)选择自己的注意力点。
原理:输入一个矩阵I(I可能包含多个向量a1,a2,a3,a4),分别乘以Wq,Wv,Wk得到三个矩阵QKV,每个向量a1,a2,a3,a4内部对应分别做Q*K计算相关度A,然后经过softmax转为权重A’,A’乘以V计算加权和就得到最终的结果了,最终的结果是一个数字(相关性权重)。

(此处I就相当于一个句子,而a1,a2,a3,a4就相当于句子中的每个单词)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

具体步骤参考:self-attention

如何计算相关性?
两种做法:1.做内积(最常用) 2.Additive
在这里插入图片描述


3. Multi-head Self-Attention

multi-head相当于两个输入ai,aj并行处理,有点类似CNN中的feature map多通道

分完段,各自算,再汇总, head1的qkv算head1的, 头与头之间在计算相似度时互不打扰, 每个段独立算完,再聚合

Multi-head的优点就是多样性:简单讲就是多head 计算中,每个head 可能计算 关注点不一样所看的不一样
在这里插入图片描述

在这里插入图片描述


4. Positional Encoding

对于Self-attention来说,并没有序列中字符位置的信息。例如动词是不太可能出现在句首的,因此可以降低动词在句首的可能性,但是自注意力机制并没有该能力。因此需要加入 Positional Encoding 的技术来标注每个词汇在句子中的位置信息。
原理:只需要加一个ei在输入ai上
在这里插入图片描述

那么Positional Encoding怎么获取?
1.可以通过数据训练学习得到positional encoding,类似于训练学习词向量,goole在之后的bert中的positional encoding便是由训练得到
2.正余弦位置编码。位置编码通过使用不同频率的正弦、余弦函数生成,然后和对应的位置的词向量相加,位置向量维度必须和词向量的维度一致。
在这里插入图片描述

pos表示单词在句子中的绝对位置,pos=0,1,2…,例如:Jerry在"Tom chase Jerry"中的pos=2;dmodel表示词向量的维度,在这里dmodel=512;2i和2i+1表示奇偶性,i表示词向量中的第几维,例如这里dmodel=512,故i=0,1,2…255。


对比之前没有self-attention的应用

  • 语音上
    之前使用Window滑动窗的方式来读取整段语音,要么一段语音对应一个label,要么一整段语音对应一个label,若语音片段很长,则参数量十分巨大滑动窗的方式就不适用,因此引入Self-Attention。
    将每个语音片段放入Self-Attention种来学习前后语音片段的语义38e48eba9154f2af7632f62.png)

- 图像上

CNN中一张图片可看做一个很长的向量。它也可看做一组向量:一张5 ∗ 10的RGB图像可以看做5 ∗ 10的三个(通道)矩阵,把三个通道的相同位置看做一个三维向量。
在这里插入图片描述

在这里插入图片描述

- 图论GNN
在这里插入图片描述

自注意力机制的缺点就是计算量非常大,因此如何优化其计算量是未来研究的重点。

5. Self-Attention VS CNN

Self-Attention在全局中找到相关的pixel,就好像CNN中的窗口(reception field)是自动学出来的一样

例如:1的那个pixel产生query,其他的各个pixel产生key。在做inner-product的时候,考虑的不是一个小的范围,而是一整张图片。
在这里插入图片描述

self-attention是一种复杂化的CNN,在做CNN的时候是只考虑感受野红框里面的资讯,而感受野的范围和大小是由人决定的,但是self-attention由attention找到相关的pixel,就好像是感受野的范围和大小是自动被学出来的
在这里插入图片描述

参考paper: On the Relationship between Self-Attention and Convolution Layers

如果用不同的数据量来训练CNN和self-attention,会出现不同的结果。
数据量少用CNN,数据量多用Self-Attention


6. Self-Attention VS RNN

RNN没有办法平行处理,只能存在Memory里一步步来回传递
而Self-Attention每个向量做QKV,只需要不同向量间相互match就可以,可以平行处理四个输出
在这里插入图片描述

------------------------------------------下面更新Transform--------------------------------------

1.Seq2seq

Transformer 就是一个 Seq2seq (Sequence-to-sequence) 的模型

Seq2seq属于第三种输出类别:Input a seqence,output a sequence(The output length is determined by model) 输入一排向量,输出长度任意由机器自己决定

1.1 背景

第一个例子
语音识别。输入的语音信号就是一串向量,输出就是语音信号对应的文字。但是语音信号的长度和输出的文字个数并无直接联系,因此需要机器自行决定。机器翻译、语音翻译也是如此
在这里插入图片描述

同时,seq2seq也可以训练聊天机器人,输入一个‘Hi’,Seq2seq输出一长句‘Hello!How are you today’
在这里插入图片描述
各式各样的NLP问题,往往都可以看作QA问题,例如问答系统(QA),让机器读一篇文章,读入一个问题,就输出一个答案。而该问题就可以用 Seq2seq 的模型来解决:
在这里插入图片描述

第二个例子
语法剖析:
输入一段文字,机器要做的就是产生一个树状结构,告诉我们哪些文字或单词组合起来是名词,哪些组合是形容词等
在这里插入图片描述

第三个例子
多标签分类 (Multi-label Classification)
每个事物可以对应很多种类
比如输入一篇文章,机器帮你自己决定它属于多少个class(class9,class7,class13)
在这里插入图片描述

2. seq2seq原理(Encoder-Decoder)

一般Seq2seq会分成两部分:Encoder、Decoder

2.1 Encoder部分:

Encoder 要做的事情就是给一排向量,输出一排向量
Encode这部分可利用多种模型实现,如 CNN, RNN 等。(左上角图)
本文只讲Transformer 中的 Encoder ,Bert就是Transformer的Encoder,里面由多个Block组成进行不断输入输出一排向量(右上角图)

我自己简单概括就是:(左下,右下两张图)
输入一排向量和Positional Encoding位置信息------>送入Multi-head Attention----->输入的这排向量做self-attention(拿一个head举例)与输入做残差和Layer Norm-------->送入FC----->再将FC的输入和输出做残差和Layer Norm------>最终输出一排向量(多次重复Block就得到了输出)

整张图流程如下:图很重要!!!!!!!在这里插入图片描述

在Transformer Encode里每一个Block具体步骤如下:
1.输入一排向量B后送入Self-Attention得到输出一排向量A,两者做残差A+B
2.将得到的A+B的结果做Layer Norm(LN与BN区别:BN是按维度计算,LN是按行计算)

在这里插入图片描述

3.将LN归一的结果送入FC层,并且也做残差,将FC做完残差的结果送入LN层,最后LN输出的结果就是最终Encode输出的结果
在这里插入图片描述

Tips:
1.残差结构是为了解决梯度消失问题,可以增加模型的复杂性。
2.batchnorm是对一批样本中进行归一化,而layernorm是对每一个样本进行一次归一化
3.Encoder的输入包含两个,是一个序列 + positional embedding,用正余弦函数对序列中的位置进行计算(偶数位置用正弦,奇数位置用余弦)

LN与BN:一个按行,一个按列
在这里插入图片描述

参考paper:为什么要用LN而不用BN?最后提出PowerNorm
PowerNorm:Rethinking BatchNormalization in Transformers


2.2 Decoder部分:

先假设Decoder是一个独立的块,研究它的输入和输出。

Decoder的输入分为两个:一个是Encoder部分的输出,另一个是begin token(类似于标志位,用one-hot表示)
输出是:对应位置的输出词的概率。

Decoder分为两种模式:Autoregression (AT) / Non-Autoregression (NAT),而Transformer中用的是Autoregression(AT), NAT部分可选择不看

1. Autoregressive(自归)
如果把decoder当成一个黑匣子,这个黑匣子先接受一个特殊符号start,把 Encoder 的输出先读进去,依次向decoder输入其中的向量,经过decoder产生一个向量,通过softmax得到一个向量的score,选取score最高的就是这个输出,再接着Decoder的输入将是自己前一个输出(有点类似RNN记住前一个信息),最终输出一个end Token终止符号

输入:一个是Encoder部分的输出,另一个是begin token
输出是:对应位置的输出词的概率。
在这里插入图片描述

但是当有一个文字输出错误,接下来Decoder就会用这个错误的结果【一步错步步错】:
在这里插入图片描述

而Teacher Forcing 最常见带来的问题就是 Exposure Bias,解决方法在第四点

2. Not-Autoregressive (NAT 非自归)
Autoregressive是一个一个输入一个一个输出
Not-Autoregressive是输入一排start,最后直接输出一整个句子
那么如何确定NAT decoder的输出长度呢?
1.可以用一个预测网络预测输出的长度,再进行句子的输出
2.也可以一直进行输出,然后通过end来把句子截断
在这里插入图片描述

NAT优点:并行处理(可以一起输入,然后一起进行输出),速度快;输出长度可控。
缺点:NAT的表现往往逊色于AT:多模态问题 Multi-modality.

可以认为AT和NAT在Encoder端是完全一样的,只是在Decoder端不同,AT在Decoder时通过此前所有时刻的结果来预测下一时刻的生成词,而NAT在Decoder时通过一个隐变量来生成每一时刻的结果,使得整个解码过程独立并行,关键就在于怎么定义这个隐变量。

实际上Decoder并不是一个独立的块,它是与Encoder连起来的,下面研究在Transformer中是怎么连接起来的,参考下面第二点的Cross Attention。


3. Transformer 中Encoder和 Decoder如何连接

下图就是Transformer具体结构,采用Encoder-Decoder架构
在这里插入图片描述

Transformer的Decoder与Encoder的不同在于两个地方:
1.Self-Attention变成了Masked Self-Attention
2.Decoder多一层Cross Attention

1.Self-Attention变成了Masked Self-Attention

普通的Self-Attention是整个一排向量送进去,输出是整个一排向量,而Masked Self-Attention输入是一个一个输进去,输出只能考虑先前输入向量,不考虑之后的,是一个一个输出的
例如,想要输出b2时,Masked Self-Attention只考虑a1,a2的输入,a3,a4在b2输出之后因此不考虑
在这里插入图片描述

2、Decoder多一层Cross Attention

Encoder和Decoder如何相互连接?

Cross Attention 位于Decoder内,是连接Encoder和Decoder的桥梁,它有三个输入,其中两个来自于Encoder,一个来自Decoder。
两个encoder的输出+一个decoder的输入送到Multi-head self-Attention中
在这里插入图片描述

Cross Attention 跨越注意力
Cross Attention 机制不是 Transformer,其先于 Transformer 出现,后来出现了 Self-attention 才有了 Transformer
Decoder这边输入Start到Masked Self-Attention中产生一个Q,这个Q与Encoder部分做self-Attention后产生的K计算相关性得到α,α再和v做点乘后得到的结果送入FC
在这里插入图片描述


4. 训练和推理

Transformer的Decoder需要分为_训练部分推理部分_来讨论。

Encoder模块的执行过程相同,Encoder可以并行计算,一次性Encoding出来.
Decoder模块的执行过程不同,训练流程是一次输出b个序列中所有的单词的预测结果,而推理流程则是一次生成b个序列中一个单词的预测,需要多步来预测序列中所有的单词。

自己理解就是训练时的输入是Ground Truth,预测的输入是上一时刻的输出,训练使用 Teacher Forcing 并行训练,推理时串行

1.训练部分
Decoder在训练时会输入Groud Truth,叫做Teacher Forcing
Train类似于分类,输出类别最大的,引入交叉熵cross entropy记录预测的字和真实label
在这里插入图片描述

2.推理部分:
Decoder在推理时会输入上一次Decode的输出
Decoder推理不是一次把所有序列解出来的,而是一个一个解出来的,因为要用上一个位置的输出当作attention的Q

举例子:训练和推理阶段
在这里插入图片描述

Step 1:
初始输入: 起始符start + Positional Encoding(位置编码)
中间输入:Encoder Embedding
最终输出:产生预测“机”

Step 2:
初始输入:起始符start + “机”+ Positonal Encoding
中间输入:Encoder Embedding
最终输出:产生预测“器”

Step 3:
初始输入:起始符start + “机”+ “器”+ Positonal Encoding
中间输入:Encoder Embedding
最终输出:产生预测“学”

Step 4:
初始输入:起始符start + “机”+ “器”+ “学” +Positonal Encoding
中间输入:Encoder Embedding
最终输出:产生预测“习”

训练阶段相当于step1-4可以同时进行,因为我们知道最终输出是“机器学习”,而在推理阶段只能一步一步进行,只能根据上一步来预测下一步,因为不知道最终输出是什么

在这里插入图片描述


5. Tips

1.Copy Mechanism 复制机制
对很多任务而言,也许Decoder无需产生输出,也许是从输出里面“复制”一些东西出来。
例如在聊天机器人中,对于用户输入的某人名字,机器无需进行处理,直接输出即可(比如库洛洛);或者复述一段不能识别的文字;亦或是提取大量文章中的摘要
在这里插入图片描述

参考paper: Get To The Point: Summarization with Pointer-Generator Networks

2.Guided Attention 语音识别
常用于语音识别、语音合成
机器连读四个单词可能发音没有问题,单独读一个单词可能会产生漏读,因此就需要Guided Attention,要求机器在做Attention时是有固定方式的
例如:要求语音合成时,机器是从左向右而不是乱序的
在这里插入图片描述

具体做法: Monotonic Attention , Location-aware attention

3. Beam Search 束搜索
每次找分数最高的,连成的红色路径叫做Greedy Decoding
若稍微损失点最开始的输入,但最终结果是绿色路径比红色好,因此这个技术叫Beam Search
在这里插入图片描述

4.Exposure Bias
Teacher Forcing 最常见的问题就是 Exposure Bias
当Train时,Decoder看到Ground Truth ,而在test时,Decoder看到错误的东西,这种不一致的现象叫做 Exposure Bias
在这里插入图片描述

如何解决 Teacher Forcing 带来的问题?
————Scheduled Sampling
在train中加一些错误就好了,类似“加入扰动”的方式来解决——scheduled sampling(定时采样),这种方式会影响Transformer的并行化。

参考paper:
1.Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks
2. Scheduled Sampling for Transformers
3.Bridging the Gap between Training and Inference for Neural Machine Translation

Related:

如何系统的去学习大模型LLM ?

作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料 包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四、AI大模型商业化落地方案

img

阶段1:AI大模型时代的基础理解
  • 目标:了解AI大模型的基本概念、发展历程和核心原理。
  • 内容
    • L1.1 人工智能简述与大模型起源
    • L1.2 大模型与通用人工智能
    • L1.3 GPT模型的发展历程
    • L1.4 模型工程
      - L1.4.1 知识大模型
      - L1.4.2 生产大模型
      - L1.4.3 模型工程方法论
      - L1.4.4 模型工程实践
    • L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
  • 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
  • 内容
    • L2.1 API接口
      - L2.1.1 OpenAI API接口
      - L2.1.2 Python接口接入
      - L2.1.3 BOT工具类框架
      - L2.1.4 代码示例
    • L2.2 Prompt框架
      - L2.2.1 什么是Prompt
      - L2.2.2 Prompt框架应用现状
      - L2.2.3 基于GPTAS的Prompt框架
      - L2.2.4 Prompt框架与Thought
      - L2.2.5 Prompt框架与提示词
    • L2.3 流水线工程
      - L2.3.1 流水线工程的概念
      - L2.3.2 流水线工程的优点
      - L2.3.3 流水线工程的应用
    • L2.4 总结与展望
阶段3:AI大模型应用架构实践
  • 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
  • 内容
    • L3.1 Agent模型框架
      - L3.1.1 Agent模型框架的设计理念
      - L3.1.2 Agent模型框架的核心组件
      - L3.1.3 Agent模型框架的实现细节
    • L3.2 MetaGPT
      - L3.2.1 MetaGPT的基本概念
      - L3.2.2 MetaGPT的工作原理
      - L3.2.3 MetaGPT的应用场景
    • L3.3 ChatGLM
      - L3.3.1 ChatGLM的特点
      - L3.3.2 ChatGLM的开发环境
      - L3.3.3 ChatGLM的使用示例
    • L3.4 LLAMA
      - L3.4.1 LLAMA的特点
      - L3.4.2 LLAMA的开发环境
      - L3.4.3 LLAMA的使用示例
    • L3.5 其他大模型介绍
阶段4:AI大模型私有化部署
  • 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
  • 内容
    • L4.1 模型私有化部署概述
    • L4.2 模型私有化部署的关键技术
    • L4.3 模型私有化部署的实施步骤
    • L4.4 模型私有化部署的应用场景
学习计划:
  • 阶段1:1-2个月,建立AI大模型的基础知识体系。
  • 阶段2:2-3个月,专注于API应用开发能力的提升。
  • 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
  • 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓

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

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

相关文章

三分钟看懂SMD封装与COB封装的差异

全彩LED显示屏领域中,COB封装于SMD封装是比较常见的两种封装方式,SMD封装产品主要有常规小间距以及室内、户外型产品,COB封装产品主要集中在小间距以及微间距系列产品中,今天跟随COB显示屏厂家中品瑞一起快速看懂SMD封装与COB封装…

使用高斯混合模型识别餐厅热点

使用 GMM 识别加拿大多伦多的直观餐厅集群(附 Python 代码) 聚类算法(例如 GMM)是一种有用的工具,可帮助识别数据中的模式。它们使我们能够识别数据集中的子组,从而提高你的理解或增强预测模型。在本文中&a…

DDR3(一)

目录 1 SDRAM1.1 同步动态随机存储器1.2 位宽1.3 SDRAM结构1.4 SDRAM引脚图 2 SDRAM操作指令2.1 读写指令2.2 刷新和预充电2.3 配置模式寄存器2.4 读/写突发2.5 数据屏蔽 SDRAM是DDR3的基础,在学习DDR3之前,我们先来学习一下SDRAM的相关知识。 1 SDRAM …

同样的APP为何在Android 8以后网络感觉变卡?

前言 在无线网络技术不断发展的今天,Wi-Fi已经成为了我们日常生活中不可或缺的一部分。无论是家庭娱乐、办公还是在线游戏,Wi-Fi都在提供着便捷的互联网接入服务。然而,在安卓8.1后,为了进一步延长安卓设备的待机时间。原生安卓(A…

推荐三款常用接口测试工具!

接口测试是软件开发中至关重要的一环,通过对应用程序接口进行测试,可以验证其功能、性能和稳定性。随着互联网和移动应用的快速发展,接口测试变得越来越重要。为了提高测试效率和质量,开发人员和测试人员需要使用专业的接口测试工…

【SCAU操作系统】期末复习简答及计算题例题解析

目录 一、写出下列英文缩写词在计算机系统中的英文或中文全名。 二、进程状态/调度/周转问题 (1)进程状态 (2)进程状态转换 (3)进程调度 (4)最短进程优先调度算法 三、逻辑地…

鸿蒙开发设备管理:【@ohos.runningLock (Runninglock锁)】

Runninglock锁 该模块主要提供Runninglock锁相关操作的接口,包括创建、查询、持锁、释放锁等操作。 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import runningLock f…

经典资料分享:macOS设计指南(持续更新)

​MacOS设计指南是Mac应用设计必备的指导手册,学姐特提示完整指南文档给大家,原版中英文对照,实用方便查询。 因为文档内容太多,在后继的几个月会持续更新。本周更新内容为: 『MacOS设计指南-应用程序架构篇』 指南内容…

Vuex的基本使用

1.安装vuex npm i vuex3 2.引入 import Vuex from vuex 3.使用 Vue.use(Vuex) 4.在src下的目录创建store,新建index.js import store from ./store 5.编写index.js import Vue from vue import Vuex from vuex Vue.use(Vuex)//用于操作组件中的动作 const actions{a…

零知识学习之DPDK与RDMA(3)—— 认识DPDK(3)

接前一篇文章:零知识学习之DPDK与RDMA(2)—— 认识DPDK(2) 本文内容参考: 《Linux高性能网络详解 从DPDK、RDMA到XDP》 刘伟著 人民邮电出版社 https://blog.51cto.com/u_15301988/5181201 特此致谢&…

Shell Expect自动化交互(示例)

Shell Expect自动化交互 日常linux运维时,经常需要远程登录到服务器,登录过程中需要交互的过程,可能需要输入yes/no等信息,所以就用到expect来实现交互。 关键语法 ❶[#!/usr/bin/expect] 这一行告诉操…

昇思MindSpore学习笔记3-02热门LLM及其他AI应用--K近邻算法实现红酒聚类

摘要: 介绍了K近邻算法,记录了MindSporeAI框架使用部分wine数据集进行KNN实验的步聚和方法。包括环境准备、下载红酒数据集、加载数据和预处理、搭建模型、进行预测等。 一、KNN概念 1. K近邻算法K-Nearest-Neighbor(KNN) 用于分类和回归的非参数统计…

计算机网络部分知识点整理

停止等待协议的窗口尺寸为 1。 √以太网标准是IEEE802.3TCP/IP四层,OSI模型有7层,地址解析协议 ARP 在 OSI 参考七层协议属于数据链路层,在TCP/IP 协议属于网络层,ARP作用:将 IP 地址映射到第二层地址,交换…

Spring中使用FactoryBean配置注入Bean

spring通过FactoryBean配置可以将第三方框架整合到Spring中来,FactoryBean配置如下: 写一个用于注于的实体类,如User,并对这个类写一个实现FactoryBean的中间类(UserFactoryBean) User类 /** *Description: *author…

粒子扩展卡尔曼滤波|MATLAB代码

粒子滤波PF与扩展卡尔曼滤波EKF结合 下载链接:https://download.csdn.net/download/callmeup/89512392 粒子滤波 粒子滤波是一种用于估计状态变量的非线性滤波方法。它通过引入一组粒子来近似表示概率分布,从而利用蒙特卡洛方法进行状态估计。粒子滤波的主要思想是根据系统…

什么是带有 API 网关的代理?

带有 API 网关的代理服务显著提升了用户体验和性能。特别是对于那些使用需要频繁创建和轮换代理的工具的用户来说,使用 API 可以节省大量时间并提高效率。 了解 API API,即应用程序编程接口,是服务提供商和用户之间的连接网关。通过 API 连接…

昂科烧录器支持MindMotion灵动微电子的32位微控制器MM32L052NT

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表,其中MindMotion灵动微电子的32位微控制器MM32L052NT已经被昂科的通用烧录平台AP8000所支持。 MM32L052NT使用高性能的ARM Cortex-M0为内核的32位微控制器,最高工作频率…

Revit 专业实用的BIM模型设计软件下载安装,Revit 最新版下载安装

Revit,该软件是专门为建筑信息模型(BIM)量身打造的,不仅极大提升了建筑设计师的工作效率,更为他们创造了一个更加精确、高效的设计环境。 在Revit的助力下,建筑设计师们能够轻松地进行建筑建模&#xff0c…

Maven列出所有的依赖树

在 IntelliJ IDEA 中,你可以使用 Maven 插件来列出项目的依赖树。Maven 插件提供了一个名为dependency:tree的目标,可以帮助你获取项目的依赖树详细信息。 要列出项目的依赖树,可以执行以下步骤: 打开 IntelliJ IDEA,…

U盘非安全拔出后的格式化危机与数据拯救策略

在数字化时代,U盘作为便捷的数据携带工具,其重要性不言而喻。然而,许多用户在日常使用中往往忽视了安全退出的重要性,直接拔出U盘后再插入时可能会遭遇“需要格式化”的提示,这一状况不仅令人措手不及,更可…