自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 langchain1.0+RAG检索增强的简易知识库问答系统

本文介绍了RAG(检索增强生成)技术及其完整实现方案。针对大语言模型的知识局限性和幻觉问题,RAG通过检索私有知识库增强回答准确性。文章详细讲解了RAG的三大核心模块:文档处理(包括PDF加载和智能分块技术)、嵌入模型(将文本转化为语义向量)以及向量数据库(Chroma的存储与检索)。重点阐述了如何根据文档内容特点优化分块策略,并提供了基于LangChain、Chroma、通义千问Embedding和DeepSeek-chat的完整代码实现,包含环境配置、向量库构建和问答交互功能。该方案可有效提升大模型在专

2026-01-23 17:24:07 621

原创 langchain1.0+TextToSQL的代码

本次开发的核心任务是构建一个智能数据库查询系统接收用户的自然语言问题(如 “技术部有多少个员工?”);自动生成符合 MySQL 语法、匹配数据库表结构的 SQL 语句;执行生成的 SQL 语句并获取查询结果;将执行结果转化为简洁易懂的自然语言总结(先结论、再明细)。整个系统基于 LangChain 框架实现组件化编排,大模型选用 DeepSeek-chat,确保 SQL 生成的准确性和结果总结的可读性。调用run_sql()函数执行生成的 SQL,捕获执行异常(如语法错误、字段不存在);

2026-01-14 12:13:54 727

原创 Vision Transformer(ViT)的讲解和面试题目讲解

目前我已经写了BERT,ResNet的文章,有兴趣的可以点进我的主页去查看。后续会更新Transformer、CLIP、GNN等的文章。ViT是在2020年谷歌的论文<ANIMAGE ISWORTH16X16 WORDSIMAGERSCALE>(一个图片等价于16*16的单词:Transformer用于大规模的视觉识别)中提出的,首次将Transformer这个NLP的框架引入到了CV领域,使图片按照序列的处理方式并在大规模的数据集上进行训练,并取得了不错的效果。归纳偏置。

2026-01-07 10:05:34 876

原创 BERT的技术细节和面试问题汇总

BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种基于 Transformer Encoder 的预训练语言表示模型。其核心思想是通过双向上下文建模(deep bidirectional representation)来学习词的上下文相关语义,从而为下游任务(如问答、文本分类、NER 等)提供高质量的初始表示。BERT中主要采取的是transformer中的encoder。

2026-01-04 20:32:17 969

原创 ResNet网络架构和题目讲解

ResNet是何恺明团队在 2015 年 ImageNet 图像分类挑战赛中提出的深度卷积神经网络架构,一举斩获冠军。当时深层网络训练面临问题,网络深度超过一定阈值后性能会饱和甚至退化。为解决该痛点,ResNet 引入:通过跳跃连接让输入直接叠加到输出,使网络学习残差映射而非完整映射,既保留浅层特征,又降低深层训练难度。基于此结构,,在 ImageNet 上实现远超同期模型的分类精度,同时刷新检测、分割等任务的性能上限,为后续深度学习视觉模型的发展奠定核心基础。

2026-01-02 00:04:04 1567 1

原创 python-魔法方法(字符串相关)

是 Python 中用于定义对象 “用户友好型字符串表示” 的魔法方法,主要面向普通用户,用于提供简洁、易读的对象描述。是 Python 中一种重要的魔法方法,用于定义对象的 “官方字符串表示形式”,主要面向开发者,用于调试和日志输出。可以让对象的输出更符合人类阅读习惯,尤其在打印日志或用户交互场景中非常实用。函数调用对象,或在交互式解释器中直接输入对象名称时,会自动触发该方法。,使对象在不同场景下都能提供合适的字符串表示。输出对象时,会自动调用该方法。调试和日志(可用于重建对象)fallback 到。

2025-08-25 19:29:07 310

原创 set和unordered_set的用法和区别

而是通过哈希表实现,因此插入、删除和查找操作的平均时间复杂度为 O (1)(最坏情况下为 O (n))。是标准模板库(STL)提供的一种关联容器,它存储唯一的元素并按照特定顺序(默认是升序)进行排序。内部通常基于红黑树实现,因此插入、删除和查找操作的时间复杂度都是 O (log n)。那样的自定义排序参数,因为它不依赖排序,而是依赖哈希函数。方法查找元素,返回指向该元素的迭代器;方法查找元素,返回指向该元素的迭代器;同样保证元素的唯一性(不允许重复值)。平均 O (1),最坏 O (n)

2025-08-18 09:54:23 861

原创 深度学习-序列到序列学习seq2seq

嵌入层:将词索引转换为词向量# GRU层:用于处理序列数据继承自(可能是一个基础编码器类)初始化参数说明:vocab_size:词汇表大小(不同词的总数)embed_size:词向量的维度:GRU 隐藏层的维度num_layers:GRU 的层数dropout: dropout 正则化参数网络层组成:Embedding将整数表示的词(词索引)转换为固定维度的向量GRU层:处理序列数据的循环神经网络层模型超参数embed_size:词嵌入维度(将词汇表中的词转换为向量的维度)。

2025-08-15 21:22:56 992

原创 python-字典

字典嵌套是处理层级数据的强大工具,通过多次键访问即可获取深层值。内置方法简化了字典的增删改查操作,灵活使用这些方法可以提高代码效率和可读性。例如,get()可避免KeyErroritems()便于遍历键值对,update()可批量更新字典等。2. 字典的嵌套:处理复杂数据实际场景中,字典很少是 “单层” 的,嵌套(字典里包含列表、列表里包含字典、字典嵌套字典)是处理结构化数据的核心方式。示例 1:字典嵌套列表(存储 “一个班级的学生姓名和成绩”)"class1": ["小明", "小红"],

2025-08-14 12:33:27 1074

原创 深度学习-门控循环单元(GRU)

GRU(Gated Recurrent Unit,门控循环单元)是循环神经网络(RNN)的重要变体,专为解决传统 RNN 的 “长序列依赖” 问题而设计。这段代码是使用深度学习框架(基于 d2l 库)实现和训练一个循环神经网络(RNN),具体来说是 GRU(门控循环单元)模型,用于自然语言处理任务(如文本生成)。这段代码实现了 GRU(Gated Recurrent Unit,门控循环单元)的核心功能,包括初始化隐藏状态和 GRU 的前向计算过程。显示训练过程中可能生成的图表(如损失曲线、准确率曲线等)。

2025-08-11 14:51:31 3332

原创 深度学习-机器翻译与数据集

def是 Python 中定义函数的关键字,是函数名。line:参数,代表输入的文本序列,一般是列表类型(比如存储单词索引的列表 )。num_steps:参数,指定目标序列的长度,即我们希望处理后序列达到的长度。:参数,用于填充的标记内容,比如在文本处理中常用特殊符号(如<PAD>对应的索引 )作为填充值。

2025-08-11 10:55:52 1140

原创 深度学习-长短期记忆网络(LSTM)

LSTM 通过精妙的门控机制解决了 RNN 的长期依赖问题,成为处理文本等时序数据的强大工具。本文从原理出发,结合手动实现和 PyTorch 内置 API 的代码,展示了 LSTM 的工作流程。实际应用中,可根据需求调整隐藏层维度、序列长度等参数,进一步提升模型性能。

2025-08-10 16:47:31 1464

原创 深度学习-循环神经网络的从零实现

本文从零开始实现了一个基础 RNN 模型,包括参数初始化、前向传播、文本预测和模型训练等完整流程。通过实验可以发现,基础 RNN 在处理长序列时仍有局限(如梯度消失 / 爆炸、长期依赖捕捉能力弱)。改用 LSTM 或 GRU 等改进型循环神经网络增加注意力机制提升长序列处理能力使用预训练词向量替换独热编码尝试更复杂的优化器(如 Adam)和正则化方法通过从零实现的过程,我们能更深入地理解 RNN 的工作原理,为学习更复杂的序列模型打下基础。

2025-08-09 14:33:31 1580

原创 深度学习-文本预处理

Token:文本的基本单位,可以是单词、字符或子词。本文中我们以单词为 token。Corpus(语料库):大量文本的集合,这里我们使用《时间机器》全文作为语料。n-gram:由 n 个连续 token 组成的序列。unigram(一元语法):单个 token(如 "the"、"time")bigram(二元语法):两个连续 token(如 "the time"、"time machine")trigram(三元语法):三个连续 token(如 "the time machine")

2025-08-08 22:24:35 1334

原创 python中的lambda表达式

在 Python 中,lambda表达式是一种用于创建匿名函数(没有名字的函数)的简洁方式。它通常用于需要函数对象的地方,但又不想用def正式定义一个函数的场景。lambda函数的功能有限,适合编写简单的单行函数。pythonlambda 参数1, 参数2, ... : 表达式lambda是关键字。可以是一个或多个,用逗号分隔。是函数的返回值,且只能是单行表达式(不能包含语句如的多分支,但可以用三元运算符)。:没有函数名,通常直接使用或赋值给变量。:适合短小逻辑,避免用def定义正式函数。

2025-08-05 13:20:47 411

原创 python中的魔法方法__init__()和__new__()的介绍和区别

Python中的__init__和__new__是对象创建过程中的关键方法。__new__负责创建实例(静态方法,必须返回实例),在实例化时首先被调用;__init__负责初始化实例(设置属性等),在实例创建后被调用。主要区别在于:__new__接收类参数cls并返回实例,而__init__接收实例self且无返回值。实际应用中,__init__常用于常规属性初始化,__new__则多用于单例模式、不可变类型定制等特殊场景。理解这两个方法的差异对于掌握Python对象生命周期至关重要。

2025-08-05 12:50:25 956

原创 关于l.sum().backward()的解释

PyTorch的backward()要求输入必须是标量。当处理批处理数据时,通常需要对损失值进行求和(l.sum())或平均(l.mean())转换为标量,才能正确计算梯度。求和操作保留了所有样本的梯度贡献,符合批量训练需求,而平均操作会对梯度进行归一化处理。核心区别在于梯度传播时的缩放比例不同。实际应用中,标量损失(如nn.CrossEntropyLoss默认输出)可直接调用backward(),非标量输出则需先执行归约操作。选择sum或mean取决于具体训练需求和学习率调整策略。

2025-08-04 15:17:33 601

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除