- 博客(182)
- 收藏
- 关注
原创 Transformers bert 迁移调用样例 - BertEmbeddings
inputs_embeds = torch.rand(2, 4, config.hidden_size) # 随机初始化嵌入。print(f"输出形状: {output.shape}") # 应为 torch.Size([2, 4, 768])print(f"输出形状: {output.shape}") # 应为 torch.Size([1, 1, 768])self.hidden_size = 768 # 隐藏层维度。]) # 形状 (batch_size=2, seq_length=4)
2025-04-02 15:18:20
361
原创 详解 transformers bert模型 - BertEmbeddings
token_type_ids = buffered_token_type_ids.expand(input_shape[0], -1) # 扩展为 (batch_size, seq_length)buffered_token_type_ids = self.token_type_ids[:, :seq_length] # 截取有效长度。token_type_ids = tensor([[0, 0, 0, ..., 0]]) # 形状 (1, 512)
2025-04-02 13:27:20
490
原创 在训练和推理过程中 对 token 数量的处理方式的差异
如果每个 batch 的 token 数不等,需要对短序列填充(Padding)到最长序列的长度,导致大量无效计算(填充部分参与计算但无意义)。:如果每个 batch 的 token 数波动较大,梯度更新的幅度会不稳定(例如,一个 batch 包含 1000 token,另一个包含 5000 token,后者对模型参数的更新影响更大)。:固定 token 数量后,学习率的设计和优化(如 Adam 的梯度归一化)会更一致,避免因 batch 内 token 数差异引入噪声。)提升吞吐量,但容忍长度差异。
2025-03-30 19:47:12
249
原创 token ID 与 token 的相互转换
在Hugging Face的Transformers库中,将token ID转换回单词(token)可以使用tokenizer的decode()或方法。
2025-03-30 09:55:51
451
原创 梯度裁剪(Gradient Clipping)
在训练深度神经网络(尤其是RNN/LSTM)时,反向传播过程中梯度可能会变得非常大(称为"梯度爆炸"),导致参数更新幅度过大,模型无法收敛。optimizer.zero_grad() # 梯度清零。:梯度裁剪通过限制梯度向量的最大范数(magnitude)来稳定训练。:原地修改所有参数的梯度(带下划线表示原地操作)梯度爆炸:突然遇到悬崖,直接跳下去(梯度极大):允许的梯度最大范数(常用值0.5~5.0)正常情况:沿着平缓的坡度逐步下降(梯度适中):获取模型中所有需要梯度更新的参数。
2025-03-29 23:50:47
482
原创 损失函数 label LongTensor类型
标签必须是LongTensor类型的设计主要是为了适应分类问题中标签的离散整数性质,符合损失函数的内部实现逻辑,提高计算效率和内存管理的优化,并保持框架接口的统一性和规范性。
2025-03-13 17:21:49
440
原创 词云(Word Cloud)
词云(Word Cloud)是一种数据可视化技术,它以图形化的方式展示文本中单词或短语的出现频率。在词云中,每个单词的字体大小、颜色、排列方式等都与其在文本中的出现频率或重要性相关。
2025-03-12 15:33:49
232
原创 AttributeError: module ‘backend_interagg‘ has no attribute ‘FigureCanvas‘
这个错误通常是由于 Matplotlib 的后端配置问题引起的。具体来说,Matplotlib 在尝试加载某个后端时,发现该后端模块中缺少必要的属性(如),从而导致了。
2025-03-11 20:39:34
403
原创 手敲大模型-基础篇 实现Dataset DataLoader方法
return MyDataLoader(self,self.batch_size,self.shuffle)#这里很有趣,self表示的是MyDataset实例化对象即dataset所对应的数据集。#random.shuffle(batch_indices) 的作用是就地打乱列表顺序,不返回值,它直接修改传入的列表对象,使其顺序被打乱。print(f"-----------第{e+1}批次-----------")print(f"当前批次的索引:",batch_indices)# 获取当前批次的数据。
2025-03-10 14:43:39
281
原创 【LLms】关键词提取
如 “am”“is”“are”“was”“were”“have”“has”“had” 等,用于构成时态、语态等,但对文本的核心内容影响较小。:用 TextRank 公式迭代计算每个节点的得分,直到收敛,得分反映词在文本中的重要性,按得分排序,选取得分靠前的作为关键词。:如 “I”“you”“he”“she”“it”“we”“they” 等,用于代替名词,但在文本分析中通常不是关键信息。:如 “in”“on”“at”“by”“with” 等,用于表示词语之间的关系,但在关键词提取等任务中通常可以忽略。
2025-03-07 19:15:36
596
原创 手撸大模型-基础篇 使用魔术方法改造模型
上一节我们讲解了如何使用魔术方法这一节我们,将会把魔术方法应用到我们自己所写的线性回归预测房价的模型当中,并将模型进行面向对象封装。实现了一个简单的线性回归模型,使用 NumPy 进行数值计算,并通过自定义的Dataset和DataLoader类来管理数据。这一节最重要的任务就是学会如何在而封装下使用魔术方法,思考清楚为什么要使用魔术方法,梳理清楚代码逻辑。normalize2使用 Z-score 标准化将数据标准化:(x−μ)/σ。是标准化的逆操作,用于将标准化后的数据反标准化。
2025-03-02 12:21:49
370
原创 手撸大模型-基础篇 搞定常用魔术方法
魔术方法触发条件使用场景__len__调用len()函数,并将对象作为参数传递时触发。定义对象的长度或大小,例如自定义的数据结构(如列表、集合、字典等)。使用索引操作(如obj[index])访问对象时触发。切片操作(如)也会触发。支持索引和切片访问,例如自定义的字典或列表类对象。__iter__对象被用在迭代的上下文中时触发,例如for循环、iter()函数调用时触发。定义对象的迭代行为,返回一个迭代器对象(通常是对象本身)。__next__在迭代过程中,每次需要下一个元素时触发,例如。
2025-03-02 10:55:08
637
原创 【NLP251】BertTokenizer 的全部 API 及 使用案例
BertTokenizer 是 Hugging Face 的 transformers 库中用于处理 BERT 模型输入的分词器类。它基于 WordPiece 分词算法,能够将文本分割成词汇单元(tokens),并将其转换为 BERT 模型可以理解的格式。BertTokenizer 是 BERT 模型的核心工具之一,广泛用于自然语言处理任务。以下是关于 BertTokenizer 的详细介绍,包括其功能、使用方法和一些高级特性。:将输入文本分割成词汇单元(tokens)。
2025-02-16 23:17:41
806
原创 【NLP251】命名实体实战(基于Transformer分类)
TensorBoard 是可视化工具,可以与 PyTorch结合使用用于帮助开发者和研究人员直观地分析和理解机器学习模型的训练过程。它提供了丰富的可视化功能,包括标量(Scalars)、图像(Images)、图形(Graphs)、直方图(Histograms)、嵌入(Embeddings)等。tensorboard --logdir log_dir 其中log_dir为如图所示log文件的绝对路径。需要安装一个tensorboard库,一般情况下安装tensorflow的时候,会自动安装这个库。
2025-02-16 20:36:12
375
原创 【NLP251】命名实体识别常用模块(基于Transformer分类)
【代码】【NLP251】命名实体识别常用模块(基于Transformer分类)
2025-02-14 16:09:32
268
原创 【NLP251】 手把手教你 构建基于Transformer的分类模型
定义编码器层和分类器模块首先定义编码器层及其后续的分类器模块。构造编码器模型将编码器层集成到编码器类中。集成分类器到模型在编码器模型的forward函数中调用分类器模块。# 编码器})# 分类器模块nn.ReLU(),nn.ReLU(),"""前向过程"""return x。
2025-02-11 00:22:13
817
原创 【NLP251】一篇文章搞定BERT框架
自然语言处理(NLP)基础语言模型(Language Modeling)会根据前面单词来预测下一个单词/NLP 中最基础的模型结构(可以应用到各个NLP的应用场景中)。常用的语言模型有:N-gram、Word2Vec、ELMo、OpenAI GPT(解码器)、Bert(编码器)、XLNet(Bert的衍生)、 ALBert(Bert的衍生);Mask:遮挡掩盖的意思,比如:把需要预测的词给挡住。主要出现出现在OpenAI GPT<Transformomer>和Bert中。Hugging Face 是
2025-02-09 20:19:25
802
原创 【NLP251】Transformer API调用
封装了Transformer中的包含编码器(Encoder)和解码器(Decoder)。如下图所示,它对Encoder和Decoder两部分的包装,它并没有实现输入中的Embedding和Positional Encoding和最后输出的Linear+Softmax部分。我们可以注意到,在torch.nn的模块中,提供了构建transformer所需的各类元素,但却没有直接给出一个完整的Transformer算法模型。
2025-02-09 20:18:30
708
原创 【NLP251】Transformer精讲 残差链接与层归一化
精讲部分,主要是对Transformer的深度理解方便日后从底层逻辑进行创新,对于仅应用需求的小伙伴可以跳过这一部分,不影响正常学习。
2025-02-02 22:09:21
1240
原创 【NLP251】Transformer中的Attention机制
自注意力层和前馈神经网络层的结构与编码器中的相应层相似。而注意力层则用于关注编码器的输出。同样,每个子层后都接有残差连接和层标准化。在经典的Transformer结构中,解码器也包含6层。
2025-02-01 17:09:30
970
原创 【NLP251】意图识别 与 Seq2Seq
Seq2Seq模型作为从RNN演进到Transformer和Attention机制的关键中间阶段,它不仅承前启后,还为我们深入理解这些复杂的模型架构提供了重要的基础。接下来,我们将详细探讨Seq2Seq模型的原理及其在自然语言处理领域中的应用。
2025-01-30 13:36:06
900
原创 【在线大模型调用】Chat Completions API调用方法实现文本对话
Chat Completions API 是 OpenAI 的对话型模型通过函数实现文本对话。
2025-01-26 14:14:48
350
原创 【在线大模型调用】OpenAI Tool Use 教程
tools = ["description": "获取指定城市的天气信息","city": {"description": "城市名称"},
2025-01-26 13:58:49
941
转载 【数据结构】线性表
线性表(List):零个或多个数据元素的有限序列。线性表的数据集合为{a1,a2,…,an},假设每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是一对一的关系。在较复杂的线性表中,一个数据元素可以由若干个数据项组成。在这种情况下,常把数据元素称为记录,含有大量记录的线性表又称为文件。
2024-06-01 15:19:52
1284
1
原创 CGAN|生成手势图像|可控制生成
CGAN通过将条件信息(如类别标签或其他辅助信息)加入生成器和判别器的输入中,使得生成器能够根据这些条件信息生成特定类型的数据,而判别器则负责区分真实数据和生成数据是否符合这些条件。这种方式让生成器在生成数据时有了明确的方向,从而提高了生成数据的质量与相关性。CGAN的特点包括有监督学习、联合隐层表征、可控性、使用卷积结构等,其具体内容为:有监督学习:CGAN通过额外信息的使用,将原本无监督的GAN转变为一种有监督的学习模式,这使得网络的训练更加目标明确,生成结果更加符合预期。
2024-05-24 20:24:49
684
原创 CGAN入门|生成手势图像
自定义权重初始化函数,作用于netG和netD# 获取当前层的类名# 如果类名中包含'Conv',即当前层是卷积层= -1:# 使用正态分布初始化权重数据,均值为0,标准差为0.02# 如果类名中包含'BatchNorm',即当前层是批归一化层= -1:# 使用正态分布初始化权重数据,均值为1,标准差为0.02# 使用常数初始化偏置项数据,值为0'''定义生成器 Generator''''''定义生成器 Generator'''
2024-05-17 11:29:16
1048
原创 人脸图像生成(DCGAN)
为生成器(G)和判别器( D)设置Adam优化器img_list = [] # 用于存储生成的图像列表G_losses = [] # 用于存储生成器的损失列表D_losses = [] # 用于存储判别器的损失列表iters = 0 # 迭代次数iters += 1plt.show()
2024-05-10 15:05:49
2599
1
原创 生成对抗网络(GAN)入门
判别器的任务是尝试区分接收到的数据是真实数据还是由生成网络生成的数据。生成器的任务是从随机噪声中生成与真实数据相似的合成样本,而判别器则负责辨别给定的样本是真实数据还是生成器产生的人工样本。在生成对抗网络(GANs)中,生成器(G)是一个关键组件,其任务是利用随机噪声(通常表示为z)作为输入,并通过不断的学习和拟合过程生成一个与真实样本在尺寸和分布上相似的伪造样本G(z)。GAN的原理在于通过这种对抗性训练,生成器学习生成逼真的数据,而判别器学习更好地区分真实和生成的数据。
2024-05-03 19:15:06
2536
原创 Transformer实战 单词预测
编码器层堆栈# 编码器堆栈. pytorch已经实现了Transformer编码器层的堆栈,这里直接调用即可# 初始化权重"""Arguments:src: Tensor, 形状为 [seq_len, batch_size]src_mask: Tensor, 形状为 [seq_len, seq_len]Returns:最终的 Tensor, 形状为 [seq_len, batch_size, ntoken]"""# 位置编码器的初始化部分# 注册为持久状态变量,不参与参数优化。
2024-04-26 20:31:29
402
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人