Tokenizer(切词器)的不同实现算法
前言Tokenizer(分词器) 的作用是将一段文本分割成一个个有意义的单元,每个单元在词向量表中对应一个的索引,根据这个索引我们能得到词向量,例如jieba就是非常流行的中文分词器Transformers的AutoTokenizer可以用于英文的分词,各个模型使用的分词逻辑也有不同,对于输入的一串文本,Tokenizer会如何处理,下面介绍了一系列算法 一、Tokenizer的三种颗粒度实现 Word-based 分词:直接从词汇表中查找文本中的单词进行分词。 示例 1:词汇表 ["hello", "how", "are", "you"],句子 "how are you" → 分词结果:["how", "are", "you"]。 示例 2:句子 "how are you today" → 分词结果:["how", "are", "you"...
Transformer网络结构解析
前言Transformer 广泛应用于自然语言处理(如机器翻译、文本生成)等领域,是BERT、GPT等大模型的基础架构 以自注意力机制为核心:让模型关注输入序列中不同位置的关联 具备强并行化能力:彻底摆脱了RNN等模型的序列依赖,能并行处理输入数据 采用编码器 - 解码器架构:分别负责处理输入序列为上下文表示及据此生成输出序列。 一、位置编码Position Encoding 1.1 因自注意力机制在计算关联时,本质上是对序列中所有元素进行 “全局配对” 计算,没有办法考虑到元素的输入顺序,因此在输入之前我们需要使用位置编码来使自注意力机制区分序列中不同位置的元素 1.2 果在输入到 Transformer 模型之前,每个词的词嵌入向量(包含语义信息的原始维度数据)会与对应的位置编码向量(模型根据这个编码来区分输入特征的前后位置)进行逐元素相加,形成一个新的向量。这个新向量同时包含了词的语义信息和它在序列中的位置信息。 1.2.1 固定函数生成位置编码对于一个长度为N,词向量维度为d的句子,他在长度索引为i,维度索引为j的位置编码计算公式如下 例如步长为5的句子“I am...
Transformer自注意力机制
前言:什么是注意力机制?注意力机制是一种模拟人类注意力的神经网络模型机制,它能够让模型在处理信息时集中关注部分重要信息,而忽略其他不重要的信息,从而提高模型的效率和性能。 一、Q,K,V自注意力机制是要回答:“我(某个位置)应该关注谁(其他位置)?以及关注了之后该怎么融合信息?”,因此我们先来了解三个关键名词 查询向量(Query):表示当前词的“查询需求”,用于寻找与之相关的上下文信息。 键向量(Key):作为每个词的“特征标识”,与查询向量匹配,判断相关性。 值向量(Value):包含每个词的“实际内容”,匹配成功后从中提取信息,丰富上下文表示。 二、单层注意力机制以4个步长句子“I am a man”作为一个输入,图中X代表每个单词经过嵌入层得到的低维词嵌入矩阵 1234567891011121314151617181920import torch import torch.nn as nnimport mathfrom torch.nn import functional as Fdocument = ( "[UNK] I Love Nature L...
LSTM长短期记忆网络
前言前面说到RNN虽然能捕捉时序数据,但是在一些比较长的序列上面会出现梯度问题,而LSTM(长短期记忆网络)通过引入门控机制有效地解决了传统RNN中的梯度消失和梯度爆炸问题。 LSTM单元包含输入门、遗忘门和输出门,这些门控结构允许模型有选择性地保留或丢弃信息,从而控制信息流动。 遗忘门帮助模型决定哪些信息应该被遗忘 输入门决定哪些新信息应该被存储 输出门决定哪些信息应该被输出到下一个时间步 这种设计使得LSTM能够在长时间序列中保持梯度的稳定性,避免梯度在反向传播过程中的指数级衰减或增长,从而允许模型学习并记忆长期依赖关系。 一、模型结构 1.1 非常精辟的理解LSTM单元通过当前步的输入,前一步的隐藏状态和细胞状态,得到当前步的输出和下一步的隐藏状态 在遗忘门得到了一个历史细胞状态保留的比例① 在输入门得到了一个当前时间步的新信息②以及该新信息能被写入细胞状态的比例③ ①与历史细胞状态相乘,保留历史细胞状态的一部分,②与③相乘,将新信息的一部分写入细胞状态,相加得到新的细胞状态④ 在输出门结合前一步的隐藏状态得到了当前步的输出⑤,又以④得到当前步的隐藏状态⑥(当前步的输出...
RNN循环神经网络
前言对于图像识别,数据顺序不重要,因为图像像素是独立无序的。然而,对于文本、股票、天气和语音等具有时间或逻辑顺序的数据,顺序对结果有显著影响。例如,文本中词语的顺序改变会导致意义完全不同,而股票和天气数据的顺序也很重要,因为后续数据可能受之前数据的影响。 文本理解中,顺序同样关键,如古诗中诗句顺序的改变会改变整首诗的意境。因此,在处理具有时间或逻辑顺序的数据时,必须考虑顺序的重要性,并设计相应的模型来利用数据的前后关系,如循环神经网络(RNN),以获得更准确和有意义的结果。 一、模型架构1.1 整体结构RNN(循环神经网络)通过在网络内部添加循环连接,使其能够利用先前时间步的信息,从而在处理序列数据时能够捕捉和利用结构信息。 RNN在处理一个序列,比如一句话或者一系列的数字时,会同时考虑当前的数据和之前的数据。它通过更新一个内部的“记忆”(隐藏状态),来“记住”过去的信息,并用这些信息来帮助理解新的数据。这样,RNN就能捕捉到数据中的顺序和模式,就像你通过记忆来理解连续剧一样。这一过程可以通过数学公式简化为: 其中,S_t表示在时间步t的隐藏状态,是当前时间步t的输入,U和W...
NLP特征工程
前言自然语言处理(NLP)是计算机科学与语言学交叉领域,旨在使计算机能够理解、生成和处理人类语言,通过算法和模型分析语言结构与语义,实现机器翻译、情感分析、语音识别等功能,推动人机交互智能化发展。 一、NLP中的特征工程特征工程在自然语言处理(NLP)中是将文本数据转换为机器学习模型可处理的数值形式的过程,通过提取词性、语法、相似度等信息,将非结构化的文本转化为对预测有用且模型能理解的特征。 说人话就是机器理解不了人类常用的字母和汉字,如果我们要进行文本处理就必须将这些转换为数值形式,也就是词向量,用这些向量来代替文字体现他们之间的语义关系,进而帮助计算机理解文本信息 举个例子,现在有“猫”,“狗”,“爱情”三个词语,通过词向量技术,将他们映射到向量空间(0.2,0.1,0.3),(0.2,0.2,0.2),(-0.4,-0.5,-0.2),在词嵌入模型的最初始阶段,单词的向量通常是由随机初始化的,需要经过模型的训练(后续会介绍)。例如通过这些向量,我们可以得到他们的余弦相似性 1.1 独热编码 one - hot一个简单示例: 1.2 n-gramsn-grams是一种自然...
算法题记录
2025年8月6日 123456789101112131415161718192021222324252627282930313233number_to_letter = {chr(96 + i): i for i in range(1, 27)}def fn(str1,str2,number_to_letter): steps = [] length = len(str1) for i in range(len(str2[:length])+1): # print("---") step = 0 # 第一个循环是取出所有子串 str2_ = str2[i:i+length] if length > len(str2_): break print(str1,str2_) for i in range(len(str1)): ...
基于AutoDL云服务器部署yolov11项目及模型分析
前言因为yolov11训练需要的配置要求已经超过我电脑了,所以我还是在AutoDL上租用一台GPU来跑,租用云服务器实际上就是租用一台装配了GPU显卡的Linux虚拟机来跑自己的模型,那么我们就需要提前把自己的代码和数据通过传输软件传上服务器(也可以直接拖到窗口,但是太慢了,这里我用的软件是Xftp),下面配备了比较完整的流程,在前面的yolov5相关操作教程中写的也比较详细了,这篇博客主要是用来分析yolov11训练后产生的结果文件。 一、项目部署教程我们在注册并登录AutoDL后,选择合适型号的GPU,建议如果是学习过程的话可以租用便宜一点的,比如2080ti,相对性能也够用了 记得在选择镜像时去使用就已经创建好的yolov11镜像,可以免去很多麻烦 在容器实例中选择刚才租的实例,选择更多—无卡模式开机,这样我们在传输数据时成本就要低一点,不然他就会一直按照0.88元来扣费,无卡模式除了没有GPU,其他都是一样的 打开后我们进入vscode,下载扩展远程资源管理器 点击图标输入ssh指令和密码(在容器实例上复制),我之前登录过,就只用输密码了 完成后我们就成功连接到服...
yolov5源项目部署教程
前言:这一篇目主要用于介绍yolov5的实战部分,包括如何部署项目以及模型的训练和推理,最后还会结合orc技术来进行车牌识别项目实战 一、项目来源项目可以在 github 搜到:【https://github.com/ultralytics/yolov5】(选择合适的预训练模型,可以直接下载,也可以直接git到本地) 将下载好的文件解压,最后在vscode中打开的文件目录如下,一定要确保项目名即为最开始的yolov5中没有另外一层yolov5文件结构: 二、环境配置首先需要创建虚拟环境(这里我是直接在云GPU上部署的项目,可以直接选择别人已经创建好并且很稳定的虚拟环境) 对于 yolo 系列目前来说,需要安装的 python 版本 >= 3.8 的,pytorch 版本>= 1.8 如果是在本地部署的话,那么在创建激活并切换环境后需要运行如下命令安装依赖包 1pip install -r requirements.txt 注意:这里运行后只能默认是CPU的版本,如果想安装GPU版本还需要安装合适版本cuda后去官网下载对应pytorch,然后注释requireme...
yolov1-v3原理解析
一、yolov1导航YOLOv1YOLOV1 论文地址:【https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf?spm=5176.28103460.0.0.359a5d27d0cimU&file=Redmon_You_Only_Look_CVPR_2016_paper.pdf】 YOLOV1 论文中文翻译地址:【https://blog.csdn.net/muye_IT/article/details/124612829】 1.1、网络结构yolov1是在GoogLeNet 的基础上进行改编的一种单阶段目标检测网络,把目标检测转变成一个回归问题,实现端到端的检测 包含24个卷积层,4个池化层,2个全连接层 缺陷:yolov1使用的仍然是全连接层,这就导致主干结构的输入要求必须是448x448的固定尺寸 问:那为什么在预训练阶段可以输入224x224的图像呢? 在预训练阶段,YOLOv1 使用 224×224 的图...

