新闻详情

新闻详情

首页 / 资讯中心 / 详情

Qwen3微调Embedding:RAG知识库检索准确率提升实战

发布时间:2026/9/24 22:40:28来源:尧图网络
Qwen3微调Embedding:RAG知识库检索准确率提升实战
做RAG项目这段时间我最深的体会是真正让知识库“变聪明”的瓶颈往往不在大模型本身而在检索这一环。用户问一个专业问题系统从几千个切片里找出来的内容是错的那后面无论生成模型多强都是在垃圾堆上盖大厦。于是我开始认真研究Embedding微调这条技术路线用Qwen3对Embedding模型做训练微调实测下来检索准确率提升非常明显。这篇内容我会完整复盘整个方案为什么Embedding微调是RAG优化的关键、为什么选Qwen3做底座、训练数据怎么做、训练脚本怎么跑、用哪些指标判断效果有没有变好最后再整理几个高频踩坑点。想给RAG知识库做一次“检索能力升级”的同学这篇可以直接当作实操手册来用。1. 为什么RAG检索不准时我建议先从Embedding找原因1.1 RAG链路里Embedding承担了什么角色RAG的完整流程可以拆成四个动作把文档切块、把每块转成向量、用户问题转成向量、在向量库里做相似度搜索。Embedding模型在这条链路里干了前两步的一半和后两步的全部——它决定了“文档被怎么理解”、“用户问题被怎么表达”以及“两者之间的相似度怎么计算”。打个比方知识库就是一座图书馆Embedding模型是图书管理员。管理员把每本书按自己的理解分类上架用户来问“我想找讲糖尿病人饮食的书”管理员要靠自己对这句话的理解去书架里找匹配的书。如果管理员本身不懂医学他可能把“糖尿病”理解成“糖”把“饮食”理解成“食物”最后给你抱来一堆烹饪书。这就是RAG系统最常见的病根向量化环节出了问题后面所有环节都在将错就错。而且这个错误比你想的更隐蔽——语义检索不会返回“没找到”它只会返回“最接近”的结果哪怕这个结果根本不对。用户看到AI一本正经地引用一篇不相关的文档回答问题时体验已经崩了但从日志里很难一眼定位是Embedding的问题。1.2 通用Embedding模型在垂直领域的三个盲区现在开箱即用的Embedding模型比如BGE系列、text-embedding系列在通用领域效果都很好但你把它丢进一个专业场景几乎必然暴露出三个盲区。第一个盲区是领域术语识别差。法律里的“保全”、医疗里的“阿昔洛韦”、金融里的“夏普比率”、制造里的“公差配合”通用模型很可能只知道这些词存在但不知道它们在一个专业语境下的准确含义和关联关系。用户问“申请财产保全需要什么材料”通用模型可能把“财产保全”拆成“财产”和“保全”两个词分别匹配检索出来的文档可能跟“保全员”“保全公司”有关完全跑偏。第二个盲区是口语化query和书面化文档之间的语义鸿沟。用户提问往往非常口语化“我们公司想告另一个公司欠钱不还需要弄啥”而知识库文档是规范的书面语“民事诉讼中债权纠纷的起诉条件与证据清单”。通用Embedding在匹配这种风格差异很大的文本时往往力不从心因为训练语料里很少同时覆盖这种“口语问法→书面答案”的对齐关系。第三个盲区是同词不同义的语境区分。同一个词在不同行业、不同场景下意思完全不同纯通用模型只学到一个平均语义做检索时会把这个平均语义强加到所有query上。“调度”在电网行业和物流行业完全是两回事“客户”在银行和SaaS公司也不是同一个实体。这些都是需要业务数据来告诉模型的。1.3 微调Embedding比微调生成模型更划算有一种直觉是“回答不专业就微调大模型本身”这条路不是不行但性价比通常不如微调Embedding。先说成本。微调生成模型需要构造高质量的“问题-答案”对而且想让模型学会一个新领域的知识至少需要几千上万条精心标注的数据还得担心它学会了格式却记住了错误的事实。Embedding微调的数据要求就低得多核心只需要“问题-正样本片段-负样本片段”这样的三元组正样本就是文档里真正能回答这个问题的片段负样本是看起来相关但其实不对的片段。构造门槛低很多。再说硬件。生成模型的微调动辄需要多卡集群尤其是7B以上的模型。而Embedding微调完全可以选一个小尺寸底座Qwen3系列的0.6B模型用一块消费级显卡就能跑LoRA微调。这块显存成本比微调生成模型低一个数量级。最后说收益。Embedding微调是直接修正检索链路的核心Top-5命中率一旦上去RAG的生成质量是整体抬升的——你给大模型喂的每一份参考材料都变得靠谱了。而微调生成模型只改了“读材料之后的表达能力”材料本身是错的它怎么表达都没用。2. 用Qwen3做Embedding微调的整体思路与方案选型2.1 为什么选Qwen3而不是更大更新的模型Embedding模型不是越大越好推理成本、响应延迟、向量质量之间需要平衡。Qwen3系列在中文场景下有天然优势训练语料里中文占比高对中文书面语和口语的理解都更稳。它还有非常关键的长上下文支持处理知识库里的长文档切片时不会因为截断丢失关键信息。在具体选型上我建议从小尺寸开始Qwen3-0.6B和Qwen3-1.7B是性价比非常高的选择。0.6B适合CPU推理或者显存受限的场景1.7B在效果和速度上更均衡。不要一上来就用7B以上Embedding推理是要线上实时调用的用户每问一个问题至少要执行一次query向量化文档量大时还要全量向量化模型太大会让整个系统的延迟和成本都不可控。还有一个容易忽略的点Qwen3系列的生态配套完整。不管你是用LLaMA-Factory做微调还是用transformers做推理还是想转成ONNX部署到CPU上都有成熟方案不会卡在工具链上。2.2 训练范式对比学习、双塔结构与InfoNCEEmbedding微调本质上是一个对比学习任务核心思想是“把该接近的拉近把该推开的推远”。这很像你在人群里找朋友你和朋友的特征向量距离近和陌生人的距离远训练目标就是让模型学会这种距离关系。具体实现上用的是双塔结构。两座塔分别是query编码器和document编码器实际工程里通常共享同一套参数也就是同一个Qwen3模型同时编码query和文档。训练时一条样本由“(query, positive_doc, negative_doc)”组成模型把这三段文本分别编码成向量然后计算相似度让query和positive_doc的相似度大于query和negative_doc。损失函数最常用的是InfoNCE公式长这样[ L -\log \frac{\exp(\text{sim}(q, p)/\tau)}{\sum_{i1}^{N} \exp(\text{sim}(q, p_i)/\tau)} ]其中 (\tau) 是温度系数控制相似度分布的“锐利程度”。(\tau) 越小模型越强硬地拉开正负样本的距离训练时收敛更快但太小容易训练不稳定(\tau) 越大分布越平滑模型学起来更保守。实际训练时我习惯从 0.05 左右开始根据loss表现再调。这里有一个使用decoder-only模型做Embedding的关键细节不能用Qwen3原本的LM head输出而是取模型最后几层隐藏状态的Pooling结果最常见的是Mean Pooling对所有token的hidden state取平均或者取最后一个token的hidden state。实践下来用Mean Pooling做文本相似度更稳取最后一个token则更适合短文本匹配你可以根据业务场景选择。2.3 LoRA微调还是全量微调嵌入模型微调完全可以走参数高效微调路线最常见的就是LoRA。LoRA的做法是冻结原始模型权重只在Attention层的权重旁边追加两个低秩小矩阵训练时只更新这两个小矩阵。你想象一下原模型是一本厚厚的教材LoRA相当于在教材空白处用便利贴补充笔记教材本身不动笔记又轻又灵活。LoRA的优势非常具体显存占用小0.6B模型加上LoRA后大约只需要6-8GB显存训练速度快一个几千条数据的训练集在单张消费级显卡上几十分钟就能跑完一轮另一个隐性好处是不容易灾难性遗忘原模型的通用能力被冻结住了新学的领域知识通过低秩矩阵叠加进去不会把原理解完全冲掉。那什么时候需要全量微调如果你手里的训练数据规模很大——比如上万条高质量三元组且业务领域和通用语料差异极其巨大LoRA的低秩约束可能会限制表达力这时候全量微调效果更好。但对于绝大多数RAG场景LoRA已经足够了。我自己的经验是先用LoRA跑通流程看评测指标如果top-5召回率还差一大截再考虑更重的方案。3. 训练数据准备微调效果的上限在这里3.1 数据格式与一条样本的结构拆解训练Embedding的数据格式比微调生成模型简单得多。推荐使用JSON格式每条样本包含query、pos、neg三个字段{ query: 申请财产保全需要准备哪些材料, pos: 财产保全申请应当提交申请书、担保材料以及相关证据申请书应载明被申请人信息、请求保全的金额及保全理由。, neg: 财产保险理赔申请书需要填写投保人基本信息、事故经过描述以及索赔金额。 }这条样本的含义是当用户问“申请财产保全需要准备哪些材料”时模型应该认为pos这段文档和query高度相关而neg这段文档虽然长得像但其实是“财产保险理赔”和query不是一回事。注意neg的构造方式。如果用随机文档当负样本模型很容易学会“只要是和保险有关的都是负样本”这种偷懒逻辑——因为随机负样本太容易区分了模型根本不需要理解语义就能把loss降下去。真正有价值的负样本是“难负样本”和query有大量重叠词汇但在关键语义上不同。上面例子里“财产保全”和“财产保险”就是这种设计。3.2 正样本、负样本怎么构造才有效正样本的获取渠道有几种我按优先级排序。如果知识库本身有FAQ那每个“问题-答案”对就是现成的“query-pos”如果没有FAQ可以从历史对话记录里挖掘用户真实问过的问题配上客服回答时引用的文档片段这是最贴合实际场景的正样本还有一个办法是文档内部的章节来构造把章节标题当query、章节内容当pos效果也不错。负样本的构造是拉开模型差距的关键我建议至少用三种策略混合词面负样本用BM25等传统检索算法召回相关文档再人工判断哪些和query语义不一致。这类样本能训练模型区别“关键词相似”和“语义相关”。批内负样本训练时把一个batch内其他样本的pos当作当前样本的负样本。这种做法一个样本相当于额外获得了多个负样本计算效率高是目前很多开源模型训练时的标配。难负样本从现有Embedding模型召回的Top-100结果里挑出排得靠前但实际不正确的文档作为负样本。这类样本最能逼模型学习细粒度语义差异。不建议全部使用随机负样本那种做法训练出来模型在简单测试集上看着不错一上真实业务就露馅。一个比较合理的配比是30%随机负样本、50%难负样本、20%词面负样本。3.3 数据量、类别覆盖与清洗要点很多朋友问Embedding微调到底需要多少数据。我给的参考是项目冷启动至少准备500条三元组跑通整个流程想要效果稳定建议2000-5000条。低于200条基本不要指望有明显提升模型还没看清你的领域长什么样就被拉去考试了。比数据量更重要的是数据覆盖面。假如你的知识库里有产品文档、售后FAQ、故障排查手册三个板块训练数据里三个板块的比例就要和真实检索分布大致一致。我踩过的一个坑是训练时90%数据是产品FAQ结果微调后产品相关问题召回提升明显但故障排查类的召回反而退化了。后来重新整理了数据分布加了故障排查类样本才解决。数据清洗要处理三个问题一是去重同一个query反复出现会让模型对特定句子过拟合二是错别字和口语缩写建议保留真实用户的口语化表达因为线上query就是这种风格但要去掉明显录入错误三是长度对齐query和pos的文本长度差异不能太离谱否则模型会学到“用长度来判断相关性”这种奇怪的规律。4. Qwen3 Embedding微调实操从环境到训练脚本4.1 环境准备与模型下载先说环境。训练Embedding模型的硬件门槛不高我实测在单张RTX 3090上完全够用显存24GB跑0.6B模型的LoRA微调绰绰有余甚至可以上到1.7B。如果只有12GB显存0.6B也扛得住。软件层面前提是CUDA、PyTorch环境要就绪。模型可以优先从ModelScope下载国内网络环境下载速度比HuggingFace稳定。执行pip install modelscope modelscope download --model Qwen/Qwen3-0.6B --local_dir ./models/Qwen3-0.6B如果网络条件允许从HuggingFace下载也可以pip install huggingface_hub huggingface-cli download Qwen/Qwen3-0.6B --local-dir ./models/Qwen3-0.6B4.2 两条训练路线框架一键训练 vs 手写训练脚本路线一是用LLaMA-Factory这类开源训练框架。这是目前最省事的方案它已经内置了对比学习和Embedding训练的数据处理逻辑只需要把数据整理成指定格式配置好参数就能开跑。路线二是自己写训练脚本灵活性最高遇到报错也更容易排查。下面给出一份可以直接跑的基于HuggingFace transformers的训练脚本骨架用LoRA微调Qwen3做双塔对比学习import torch from transformers import AutoModel, AutoTokenizer from peft import LoraConfig, get_peft_model from torch.utils.data import Dataset, DataLoader model_name ./models/Qwen3-0.6B tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) # 用AutoModel而非AutoModelForCausalLM因为需要拿隐藏状态 model AutoModel.from_pretrained(model_name, trust_remote_codeTrue, torch_dtypetorch.float16) lora_config LoraConfig( r16, lora_alpha32, target_modules[q_proj, k_proj, v_proj, o_proj], lora_dropout0.05, biasnone, task_typeFEATURE_EXTRACTION, ) model get_peft_model(model, lora_config) model.print_trainable_parameters() def mean_pooling(last_hidden_state, attention_mask): mask attention_mask.unsqueeze(-1).float() summed (last_hidden_state * mask).sum(dim1) counts mask.sum(dim1).clamp(min1e-9) return summed / counts def normalize(vec): return vec / vec.norm(dim-1, keepdimTrue) def compute_loss(query_vec, pos_vec, neg_vecs, temperature0.05): # query与正样本相似度 pos_sim (query_vec * pos_vec).sum(dim-1) / temperature # query与所有负样本相似度 neg_sim torch.matmul(query_vec.unsqueeze(1), neg_vecs.transpose(1, 2)).squeeze(1) / temperature logits torch.cat([pos_sim.unsqueeze(1), neg_sim], dim1) labels torch.zeros(logits.size(0), dtypetorch.long).to(logits.device) return torch.nn.functional.cross_entropy(logits, labels) # 自定义Dataset读取3.1节的json数据并tokenize # 训练循环省略按标准流程执行前向、求loss、反向即可注意几个关键点。第一target_modules要覆盖Qwen3的Attention层投影矩阵如果配置不对LoRA相当于没生效。第二pooling之后记得做向量归一化这样余弦相似度就等于内积后续部署和检索时的计算会简单很多。第三正样本和query编码走同一个模型共享权重这就是标准双塔结构。4.3 关键训练参数解读与调参建议训练参数直接决定效果我把自己常用的参数整理成了表格参数推荐值说明learning_rate1e-4 ~ 3e-4LoRA微调推荐比全量微调的大一些num_train_epochs3 ~ 5数据量小就减少epoch防止过拟合per_device_train_batch_size16 ~ 32取决于显存批内负样本越多效果越好max_length512按业务文档切片长度设置不宜过短lora_rank16秩越大表达力越强但显存占用增加lora_alpha32通常设为rank的2倍temperature0.05温度系数可微调过大过小都影响收敛warmup_ratio0.1前10%的step做warmup稳定训练这里解释两个容易被忽视的参数。batch_size不仅仅是计算性能问题——在批内负样本机制下batch越大每个样本看到的负样本数量越多训练效果越好相同数据量下大batch往往意味着更好的检索效果。warmup则是为了防止训练初期模型参数突变导致loss剧烈震荡特别是加载预训练权重后模型对当前数据分布还不适应需要逐步增加学习率。训练过程监控也很重要。我习惯用SwanLab或wandb记录loss曲线、学习率变化以及每一轮的评测指标。loss曲线正常情况是前几百步快速下降后面缓慢收敛。如果loss在前期不降反升先检查学习率是不是太大再检查数据样本是不是有污染。4.4 权重导出与初步验证训练完成后先合并LoRA权重再导出完整模型model model.merge_and_unload() model.save_pretrained(./models/Qwen3-0.6B-embedding-finetuned) tokenizer.save_pretrained(./models/Qwen3-0.6B-embedding-finetuned)导出后别急着部署先用一段小脚本做冒烟测试。加载微调后的模型对“申请财产保全需要准备哪些材料”和“财产保险理赔申请书填写说明”分别编码计算相似度应该很低再拿它和知识库里真正的答案片段算相似度应该明显更高。冒烟测试都过不了就不要急着往线上接先排查训练数据和参数。5. 效果评估用Hit Rate和MRR说服自己5.1 离线评测集的构建评估不能靠感觉要构造一个离线评测集。从真实业务里抽取300-500条用户query每一条标注出知识库中哪些文档片段是真正能回答这个问题的作为黄金答案。注意评测集绝对不能混进训练集否则指标虚高上线后原形毕露。评测集的构造思路是目标文档定位更精准、更垂直。例如业务里用户经常会问“XX系统登录不上怎么办”对应答案是“XX系统登录故障排查手册第2节”不能是“XX系统操作手册简介”。标注时宁可少标也不能把弱相关的文档标成正样本。5.2 核心指标Recallk、Hit Rate、MRREmbedding检索效果最常用的三个指标我逐个说明Recallk在返回的Top-k结果中有多少比例的相关文档被召回了。RAG场景最看重这个指标因为后续还有重排和生成环节只要相关文档进入Top-k就有机会被送到大模型面前。Hit RateTop-k结果中至少包含一个相关文档的query占比。它衡量的是“系统有没有给用户一个符合条件的答案”。MRR第一个正确结果的倒数排名的平均值。MRR越高说明相关文档排得越靠前这对RAG体验很关键因为排在后面的文档可能被截断或超出上下文窗口。我的评测脚本核心逻辑def evaluate(model, tokenizer, eval_data, top_k5): hit_count 0 rr_sum 0.0 rec_sum 0.0 pos_count 0 for item in eval_data: q_vec encode(model, tokenizer, item[query]) cand_vecs encode_documents(item[candidates]) scores cosine_similarity(q_vec, cand_vecs) top_indices scores.argsort()[-top_k:][::-1] hits [i for i in top_indices if i in item[relevant_ids]] if hits: hit_count 1 rr_sum 1.0 / (top_indices.index(hits[0]) 1) rec_sum len(hits) / len(item[relevant_ids]) pos_count len(item[relevant_ids]) return { HitRate5: hit_count / len(eval_data), MRR5: rr_sum / len(eval_data), Recall5: rec_sum / pos_count, }我自己的项目实测通用Embedding的Recall5大概在0.72微调后提升到0.89Hit Rate5从0.68升到0.85MRR从0.51提升到0.73。这个提升幅度直接反映到线上体验就是“AI回答是不是靠谱了一大截”。5.3 评估结果与优化方向对照拿到评估指标后一定要对照真实业务问题逐条看bad case而不是只看平均数。我整理过一张优化对照表方便排查现象可能原因解法整体指标提升但个别板块变差训练数据类别不均衡补充短板类别样本重新训练Hit Rate高但MRR低相关文档进了Top-5但排太靠后加难负样本、调小温度系数让相似度分布更锐利训练loss低但检索指标差训练数据和评测分布不一致重新整理训练集确保覆盖真实query形态长文档切片召回差max_length太短导致关键信息被截断调大max_length或调整切块策略问答短文本匹配好、长文本语义匹配差Mean Pooling逐token平均稀释了关键信息尝试last token pooling或加权pooling6. 常见问题与排查技巧实录6.1 训练loss降了但检索效果没变这个问题出现的频率最高也是最容易让人心态崩的。训练曲线明明在下降模型参数确实在更新结果离线评测指标纹丝不动。我在这个坑里蹲过好几次后来总结出三个排查方向。第一先确认评测集和训练集是不是同一个分布。训练数据里大量是FAQ式的“短问短答”而评测集里全是“口语化长query”模型学到的匹配模式在评测集上无法迁移。解决办法是让训练数据和线上真实查询尽可能一致最好直接用线上日志里的真实query来构造训练集。第二检查负样本是不是太简单。如果模型能靠“词面重叠多就是正样本”的简单规律快速降低loss它就没有动力去学深层的语义理解评测集上一旦出现词面和语义不一致的样本效果自然暴露。此时应该增加难负样本的比例。第三考虑温度系数的影响。温度太大时模型对正负样本的区分是“温和的”相似度差距不够大检索时排序区分度差。可以尝试调小温度重新训练看指标变化。6.2 某些业务场景召回反而变差这通常是灾难性遗忘的表现或者叫“偏科”。LoRA虽然冻结了大部分原始权重但训练过程仍然会改变模型在部分语义空间上的输出分布。如果某类样本在训练集中占比极低模型可能为了拟合主流类别把这些低占比类别的向量空间“挤”到了别处。我的应对方法训练前先统计训练集的类别分布确保每个核心业务板块的数据不少于8%-10%。训练后做分区评测按业务板块分别计算Recallk如果发现某个板块指标明显低于训练前水平就把这个板块的样本补充到训练集里重新训练。另外保留一份旧模型的快照很重要既能做对比也能在效果回退时快速回滚。6.3 训练慢、显存不够、推理延迟高训练慢和显存不够的解法相对标准优先换小模型0.6B跑不动就不要再心大用1.7B再减max_length很多训练文本根本用不到512个token256就能覆盖大部分场景显存直接减少一半batch_size也要跟着降虽然影响批内负样本数量但总比训练崩了强。实在不行就用gradient_accumulation_steps模拟大batch。推理延迟高的问题要单独说。Embedding推理走GPU虽然快但部署成本高CPU推理虽然慢但对于0.6B这种小模型配合int8量化后延迟也完全可以接受。我测试过Qwen3-0.6B在CPU上做量化后的单条query向量化延迟在几十毫秒级别完全够用。更关键的一个优化是向量归一化和预处理在模型推理阶段就把embedding normalize好检索阶段直接做内积不要每次查询都现算余弦相似度。最后再分享一个我的小习惯我现在每做一个Embedding微调项目都会固定保存三样东西旧模型快照、评测集、评测脚本。一旦新模型效果不满意随时回滚到旧版本重新调整。这套流程跑顺之后RAG项目的检索效果基本都能上一个台阶。Embedding微调这件事技术上不复杂复杂的是数据质量和评估闭环。如果你也想动手我建议先从500条高质量三元组开始跑通一轮完整的训练-评估-部署周期亲眼看看检索结果的变化。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现 2026/9/25 2:10:46

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现

如何手写SRWE Profile XML:把游戏窗口精准锁定到自定义分辨率,100%可复现 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE SRWE(Simple Runtime Window Editor) 是…

阅读更多 →
vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战 2026/9/25 2:10:40

vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战

vcard4cj多平台构建完全指南:OpenHarmony、Linux与Windows三端编译实战 【免费下载链接】vcard4cj 一个电子名片标准格式(.vcf文件)解析库 项目地址: https://gitcode.com/Cangjie-TPC/vcard4cj vcard4cj 是一个用仓颉(Can…

阅读更多 →
本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程 2026/9/25 2:10:40

本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程

本地跑通Bedrock:MiniStack对接Ollama与vLLM获取真实LLM补全的完整教程 【免费下载链接】ministack Ministack: Free, open-source local AWS emulator - 60 services, Terraform compatible, real databases. Free forever. MIT licensed. 项目地址: https://git…

阅读更多 →
BES二进制查看工具:嵌入式固件分析原理与实战技巧 2026/9/25 2:10:40

BES二进制查看工具:嵌入式固件分析原理与实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
卷积神经网络原理及PyTorch特征图可视化实战:MNIST手写数字识别 2026/9/25 2:10:34

卷积神经网络原理及PyTorch特征图可视化实战:MNIST手写数字识别

各位读者朋友,大家好。之前在做图像识别相关的学习项目时,我在理解卷积神经网络时卡了很久。网上资料虽然很多,但要么上来就是一堆数学公式,要么只给代码不讲原理,对新手非常不友好。直到后来自己手动把卷积、池化、特…

阅读更多 →
VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读 2026/9/25 2:10:34

VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读

VideoDownloadHelper到底用了哪些权限?5项权限与隐私保护机制完整解读 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper VideoDownl…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉