- 博客(118)
- 收藏
- 关注
原创 GLU及其变体的实现原理深度解析
GLU(Gated Linear Unit)及其变体通过门控机制增强了神经网络特征选择能力。标准GLU通过Sigmoid门控实现特征加权,而变体BilinearGLU引入双线性交互,ReGLU使用ReLU加速训练,GEGLU采用GELU提升语言任务性能,SwiGLU通过自适应Swish门控优化多模态任务。在Transformer中,GLU替代标准FFN可提升参数效率(2d² vs 8d²)。工程优化技巧包括内存优化、数值稳定性和分布式计算。不同任务适用不同变体:语言建模优选GEGLU,图像生成适合ReGLU
2025-06-17 20:55:30
642
原创 智能土木通 - 土木工程专业知识问答系统02-RAG检索模块搭建
里面配置大模型的api-key,将下面的your_api_key_here换成你自己的api-key。在写代码中,我们要遵守没写一个小模块都要测试的习惯,在tests中创建unit/test_qwen_client.py。在core文件下创建core/llm/qwen_client.py,这个文件是集中管理大模型相关代码。├── knowledge_base/ # 知识库相关。├── tests/ # 测试代码。
2025-06-15 21:08:02
882
原创 一文解析大语言模型量化技术
特性INT8INT4FP16FP32位数8 bits4 bits16 bits32 bits内存占用1 字节/参数0.5 字节/参数2 字节/参数4 字节/参数计算速度极快(硬件加速)最快(理论)快慢精度中等(需量化)极低较低(3-4位有效)高(7位有效)适用阶段推理推理/边缘计算训练/推理训练硬件支持广泛(GPU/TPU)实验性(部分AI芯片)主流 GPU所有设备。
2025-04-28 17:08:18
988
原创 使用PyTorch如何配置一个简单的GTP
是一种基于 Transformer 架构 的大规模预训练语言模型,由 OpenAI 开发。它的核心思想是通过海量文本数据的预训练,学习语言的通用规律,再通过微调(Fine-tuning)适应具体任务(如问答、写作、翻译等)。
2025-04-24 11:59:39
1170
原创 Compression Transformer讲解以及代码实现
Compression Transformer的核心思想是通过压缩历史信息来扩展Transformer的有效上下文长度,同时保持对近期上下文的精确记忆。
2025-04-23 21:57:39
690
原创 机器学习项目一:虚假新闻检测
PassiveAggressiveClassifier:适合文本分类的在线学习算法。WordNetLemmatizer:比词干提取更高级的词汇归一化方法。sublinear_tf=True:使用1+log(tf)平滑词频。ngram_range=(1,2):同时考虑单词和双词组合。先将数据中的text文本每一条都经过上面的文本预处理阶段。TfidfVectorizer:将文本转换为数值特征。3.删除数字(新闻分类中数字通常无意义)4.词形还原(将单词还原为词典形式)分类报告:包含精确率、召回率、F1值。
2025-04-14 19:52:50
444
原创 一口气看完TransformerXL详细解释带代码一:相对位置编码
相对位置编码(Relative Position Encoding)是Transformer模型中用于捕捉序列元素间相对位置关系的一种方法,与绝对位置编码(如BERT中的固定位置嵌入)不同,它直接建模元素之间的相对距离,从而更灵活地处理长序列或不同长度的序列。1. 为什么需要相对位置编码?。
2025-04-07 23:31:55
913
原创 一口气看完从零到一构建transformer架构代码三:编码器和解码器
transformer中的前馈神经网络层FFN这个类实现了 Transformer 中的 ,支持基础 FFN 和门控变体(如 Gated Linear Units, GLU)。
2025-04-06 20:26:18
797
原创 一口气看完从零到一构建transformer架构代码二:位置编码模块
,用于为输入序列注入位置信息(因为 Transformer 本身没有递归或卷积结构,无法感知 token 的顺序)。,用于为输入序列的每个位置生成独特的编码向量,从而让模型感知 token 的顺序信息。
2025-04-06 19:57:17
666
原创 一口气看完从零到一构建transformer架构代码一:多头注意力机制
的形状兼容,通常在 Transformer 的自注意力或多头注意力机制中使用。这是 Transformer 自注意力机制的核心实现,适用于编码器、解码器或跨注意力场景。,负责将输入向量线性变换并拆分为多个头的表示。的注意力分数矩阵,每个位置的值是。对应位置向量的点积。
2025-04-06 19:23:19
1049
原创 python算法:leetcode二叉树相关算法题
但是这个题有一个坑,比如根节点下面只有左子树或者右子树的情况下,题目说的是根节点到叶子节点,而叶子节点的定义是没有左右子节点,如果我们对这种情况取最小的化一定是None的那个最小,但是它有另外一个节点,它不是叶子节点,所以我们要将这种情况单独考判断下。因为我们的递归思路是根节点的最大深度变成求左右节点的最大深度+1,因为叶子节点没有左右子树了下面为None,不存在节点,也就是没有深度了,所以这里应该返回0,也就是递归返回条件。3.递归比较:左子树的左 vs 右子树的右,左子树的右 vs 右子树的左。
2025-03-28 18:06:49
1088
原创 python算法:二叉树的所有遍历方法,以leetcode题为例
对于前序遍历,也就是把中间的数先输出在输出左边的然后才是右边的。层序遍历(BFS)是二叉树遍历的基础算法,通过队列实现逐层访问节点,保证每层节点按从左到右顺序处理。依照上面的规律,后续遍历就是先输出左节点在输出右节点,最后输出根节点,所有称为后序。对于中序遍历,将根节点在中间输出,先输出左节点然后在输出根节点,最后输出右节点。对于层序遍历我们要用到队列来解决,如果对栈不清楚的可以去看看我的另外一篇。(即逐层地,从左到右访问所有节点)。给定一个二叉树的根节点。给你一棵二叉树的根节点。
2025-03-27 16:59:26
1011
原创 python算法:二叉树的详细讲解
二叉树(Binary Tree)是树形结构的一种重要类型,其特点是每个节点最多只能有两棵子树,分别称为和,且子树有严格的左右顺序。
2025-03-27 16:20:52
426
原创 python算法:一文详细解释栈与队列
这是一个栈的经典题目,解题思路:使用栈(后进先出)来跟踪未匹配的左括号,遇到右括号时检查栈顶元素是否与之匹配。利用字典快速查询对应的左括号,确保时间复杂度为 O(n)。这里我们使用队列的方式来解决这道题。利用双端队列(Deque)维护窗口内可能成为最大值的元素索引。队列中的元素按从大到小排列,确保队首始终是当前窗口的最大值。的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的。滑动窗口的位置 最大值。列表实现没什么好说的,主要说说链表。,判断字符串是否有效。
2025-03-27 16:02:22
1183
原创 python算法:KMP算法的详细解析
在next数组中next[j]表示主串中位置j之前的子串的最长公共前后缀长度为next[j]。比如主串为ababc,那么它的next数组为[0, 0, 1, 2, 0]。当j=1的时候子串为a没有前后缀所以为0,当j=1时,子串为ab没有相等的前后缀,所以为0,以此类推。
2025-03-27 14:03:47
717
原创 大模型学习:从零到一实现一个BERT微调
本章将微调一个BERT模型来预测下游的可接受性判断任务,如果你的电脑还没有配置相关环境的可以去使用,里面已经全部帮你配置好啦!而且还可以免费使用GPU。
2025-03-26 23:34:43
1328
原创 Transformers中的BertConfig、BertModel详解
定义更小的模型配置hidden_size=256, # 隐藏层维度缩小到256num_hidden_layers=6, # 仅6层Transformernum_attention_heads=8, # 8个注意力头intermediate_size=1024, # FFN层中间维度缩小model = BertModel(config) # 初始化自定义模型print(model) # 查看模型结构。
2025-03-25 19:52:05
697
原创 TensorDataser和DataLoader的解释与使用
是 PyTorch 提供的一个工具类,用于将多个张量(Tensors)打包成一个数据集(Dataset),便于配合DataLoader进行批量加载和数据管理。
2025-03-25 19:20:16
400
原创 BertTokenizer.from_pretrained的讲解和使用
Hugging Face的方法是加载预训练BERT分词器的核心接口,支持多种配置和灵活使用。
2025-03-25 19:08:00
716
原创 Transformer中的相对位置编码详解
相对位置编码通过动态建模元素间的距离关系,解决了绝对位置编码在长序列和复杂结构任务中的局限性。其技术核心在于将位置信息转化为可学习的相对偏置或旋转变换,从而在保持高效计算的同时提升模型的泛化能力。在NLP和CV领域,这一方法已成为提升Transformer架构性能的关键技术之一。
2025-03-24 15:04:24
613
原创 机器学习-基于KNN算法手动实现kd树
上一章我们将了,这一章我们加上kd树对它进行优化,下面先来讲讲kd树。KD 树(K-Dimensional Tree)是一种高效的K 维空间数据索引结构,主要用于最近邻搜索和范围搜索。
2025-03-24 13:25:19
1572
原创 条件随机场CRF的核心概念
P(Y|X),其中X是输入序列(如句子),Y是输出标签序列(如1词性标签)。举个栗子:假如要给一张图片标注,若是无法确定当前图片的标签,但结合上下文的图片标签可以更准确的标注当前图片。CRF(判别式模型):可引入任意上下文特征(如词的前后缀、相邻标签),更灵活且无独立性假设。2.转移特征:描述相邻标签yi-1于yi之间的关系,比如动词后通常接名词,吃后面接苹果。动态规划求解最优路径,时间复杂度 O(T⋅∣S∣^2)(T为序列长度,S为标签数)。标签转移约束:如“B-PER”后不能接“I-ORG”。
2025-03-24 13:18:21
395
原创 机器学习-手搓KNN算法
K最近邻(K-Nearest Neighbors, KNN) 是一种简单且直观的监督学习算法,适用于分类和回归任务。其核心思想是:相似的数据点在特征空间中彼此接近。KNN通过计算新样本与训练数据中各个样本的距离,找到最近的K个邻居,并根据这些邻居的标签进行预测。对于分类任务:新样本的类别由K个最近邻居中多数决定对于回归任务:新样本的输出值由K个最近邻居的平均值决定。
2025-03-20 14:34:46
280
原创 从位置编码开始手搓transformer框架,transfromer讲解
在 Transformer 模型中,掩码(Mask)用于选择性地忽略序列中的未来信息,确保模型在计算注意力时只关注历史信息。根据应用场景不同,掩码可分为两类:Padding Mask(填充掩码)和Sequence Mask(序列掩码,又称 Look-Ahead Mask)
2025-03-19 22:27:53
1533
原创 Transform架构中的位置编码
在 Transformer 架构中,位置编码是一个关键的组成部分,它能够帮助模型捕捉序列中元素的位置信息。由于 Transformer 本身是基于自注意力机制构建的,它对输入序列中的元素是并行处理的,不像循环神经网络(RNN)那样具有天然的顺序性,因此需要额外的位置编码来让模型感知元素在序列中的位置。正弦和余弦函数被用于实现这种位置编码,下面详细解释其原理和代码实现。
2025-03-19 11:48:08
385
原创 深度学习:tensorform框架学习-手搓encoder框架(代码都有注释)
因为我们这里的代码是以多头注意力来写的。多头注意力机制的意义在于:它扩展了模型专注于不同位置的能力,它给出了注意力层的多个“表示子空间”。多头注意力就好比CNN中的卷积,如果只有一个卷积核的话提取的特征肯定是比较弱的,但是如果有多个卷积核的话提取到的特征就更丰富了。多头注意力的核心:在“多头”注意机制下,我们为每个头保持独立的查询/键/值权重矩阵,从而产生不同的查询/键/值矩阵。
2025-03-18 20:16:12
619
原创 第一节:关于数组的算法(python版)
数组是存放在连续内存空间上的相同类型数据的集合,但是对于二维的数组在c或c++中内存是完全连续的,在java或python中是有多个独立的一维数组组成内存可能不连续(numpy除外)。因为数组的储存方式是连续的,那么我们删除或者添加元素的时候就要移动其他元素的地址,导致时间复杂度有o(n),但是访问方便,通过下标直接访问,时间复杂度只有o(1)。基于分治策略,通过不断的将有序的数组分成两半,缩小搜索范围,直到找到目标元素或确认不存在。排序后,数组变为 [0,1,9,16,100]组成的新数组,要求也按。
2025-03-17 17:12:22
585
原创 机器学习之KMeans算法
KMeans 是一种广泛使用的,主要用于它的目标是将数据集划分为K个互不重叠的子集(簇,Cluster),使得同一簇内的数据点尽可能相似,不同簇之间的数据点尽可能差异显著。
2025-03-10 18:02:48
875
原创 PyTorch中Tensor对象的属性和方法
PyTorch 张量的属性和方法设计旨在简化深度学习开发流程,同时保持灵活性和高效性。理解这些属性(尤其是梯度相关和设备管理)对编写高性能模型至关重要。建议结合官方文档和实际案例深入学习具体用法。
2025-03-08 22:35:26
870
原创 机器学习-GBDT算法
GBDT 通过梯度优化残差的机制,在结构化数据领域表现优异,是竞赛和工业界常用的算法之一。尽管存在训练速度和调参的挑战,但其改进版本(如 XGBoost、LightGBM)通过工程优化显著提升了效率,使其在实际应用中更具竞争力。
2025-03-06 20:58:13
1016
原创 AdaBoost算法
AdaBoost(Adaptive Boosting)是一种经典的,通过组合多个弱分类器(如决策树)来构建强分类器。其核心思想是通过迭代优化残差(错误)和动态调整样本权重,逐步提升模型性能。
2025-03-06 20:00:31
427
原创 机器学习-随机森林解析
1.通过组成多个弱学习器(决策树)形成一个学习器2.多样性增强:每颗决策树通过特征随机选择和样本随机抽样生成,降低模型之间的相关性,减少过拟合风险。
2025-03-06 13:48:45
601
原创 机器学习-决策树详细解释
而 C4.5 算法计算增益率时,“编号” 特征的分裂信息会很大,导致其增益率不会过高,相比之下,“颜色” 特征可能会有更合适的增益率,从而被优先选择作为划分特征。这样可以保证被选中的特征不仅具有较大的信息增益率,也同时具有较大的信息增益,在信息增益和信息增益率之间取得平衡。设属性A,其所有可能值为v,(Sv)是数据集S中在属性A上取值为v的子集,则给定属性A的条件下,数据集S的条件熵(H(S|A))计算公式为。假设数据集S包含n个类别,第i类样本出现的概率为(pi),则数据集S的熵(H(S))计算公式为。
2025-03-05 23:33:22
1372
原创 Adam优化器
是一种结合 和 自适应学习率思想的优化算法,由 于 2014 年提出。它在深度学习中被广泛应用,尤其适合大规模数据和非凸优化问题,被誉为“几乎万能”的优化器。
2025-03-05 18:02:37
903
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人