zh_core_web_lg-3.8.0中文模型部署与避坑指南
简介本资源为spaCy中文语言模型zh_core_web_lg-3.8.0的完整离线安装包面向Python自然语言处理初学者与NLP工程实践者专用于中文文本的分词、词性标注、命名实体识别、依存句法分析等核心任务。压缩包共45个文件涵盖9个配置文件cfg支撑模型加载逻辑、5个JSON元数据与模型描述文件、5个二进制模型文件.bin/.npz/.vectors、2个Python模块init.py等、2个许可证文件及README.md等说明文档结构规范开箱即用。包体大小575.1MB已适配spaCy 3.x版本可脱离网络环境直接pip install或本地加载。目前已有450人学习下载用户可直接获取预训练大模型权重、完整包内依赖声明、多层级配置模板及中文网页语料适配的向量表征能力显著降低中文NLP项目启动门槛尤其适合需快速部署实体识别或语义分析功能的开发场景。1. 这不是“中文大模型”而是 spaCy 的中文工业级语言模型zh_core_web_lg-3.8.0 能干啥、谁该用、为什么别乱下你搜“zh_core_web_lg”点进来的那一刻大概率正卡在三个地方训练完 NER 模型但实体识别总漏掉“北京市朝阳区酒仙桥路2号”用 transformers 加载中文分词结果和 spaCy 对不上或者——更常见的是python -m spacy download zh_core_web_sm成功了但一跑nlp(苹果发布了新手机)就把“苹果”标成 ORG组织而你需要它精准识别为 PRODUCT。这不是玄学是模型粒度没对齐。zh_core_web_lg-3.8.0.tar就是那个能解决这三类问题的“重装版”中文语言模型包它不是轻量级sm、不是中等md而是 large —— 内置 100 维词向量、覆盖 50 万 中文词汇、NER 标签体系严格对齐 OntoNotes 5.0且专为 Web 文本含电商评论、新闻标题、短消息做过领域适配。它不替代 LLM但它是你做中文信息抽取、规则增强、pipeline 集成时最稳的底层依赖。适合正在搭文本分析流水线的算法工程师、需要高精度实体/依存句法输出的 NLP 初学者以及被ValueError: [E050] Cant find model zh_core_web_lg折磨过三次以上的开发者。别急着 pip install这个.tar包得手动解压注册否则 spaCy 根本认不出它。2. 从 tar 包到可调用模型四步完成本地化部署与验证2.1 解压即安装为什么不能pip install zh_core_web_lg-3.8.0.tarzh_core_web_lg-3.8.0.tar是 spaCy 官方发布的源码归档包source distribution不是 wheel 包。它内部结构是标准的 Python 包布局zh_core_web_lg/__init__.py、meta.json、vocab/、ner/、parser/等目录齐全但缺少setup.py的构建逻辑封装。直接pip install会触发setup.py编译流程而该包的setup.py实际上只做模型注册不编译 C 扩展——结果就是 pip 声称“安装成功”但spacy.load(zh_core_web_lg)仍报错。正确做法是解压后手动注册# 创建专用模型目录避免污染 site-packages mkdir -p ~/spacy_models/zh_core_web_lg-3.8.0 # 解压到该目录注意tar 包解压后内部是 zh_core_web_lg/ 子目录 tar -xzf zh_core_web_lg-3.8.0.tar -C ~/spacy_models/ # 进入解压后的模型根目录关键必须 cd 进去 cd ~/spacy_models/zh_core_web_lg-3.8.0/zh_core_web_lg # 执行模型链接注册--force 覆盖可能存在的旧链接 python -m spacy link zh_core_web_lg zh_core_web_lg --force提示spacy link命令本质是在spacy/data/下创建符号链接并写入meta.json中的name字段值作为模型别名。zh_core_web_lg是模型在代码中调用的名称必须与meta.json中name: zh_core_web_lg严格一致大小写、下划线都不能错。2.2 验证模型是否真正就位三重检查法光看spacy link输出 “Successfully linked” 不够。我一般会立刻执行以下三重验证缺一不可import spacy # 第一重检查模型是否在可用列表中注意返回的是字符串列表不是对象 print([name for name in spacy.util.get_installed_models() if zh_core in name]) # ✅ 正确输出[zh_core_web_lg] # 第二重尝试加载并检查基础属性不运行 pipeline只验结构 nlp spacy.blank(zh) # 先建空白管道 nlp.add_pipe(tok2vec) # 加载词向量层lg 版本必需 nlp.add_pipe(ner) # 加载命名实体识别 # ✅ 若无 AttributeError 或 KeyError说明组件存在 # 第三重真·跑一句中文重点看 NER 和词向量 doc nlp(华为技术有限公司成立于1987年总部位于广东省深圳市。) print([(ent.text, ent.label_) for ent in doc.ents]) # ✅ 期望输出[(华为技术有限公司, ORG), (1987年, DATE), (广东省深圳市, GPE)] print(f词向量维度: {doc[0].vector.shape}) # ✅ 应为 (100,)参数说明spacy.util.get_installed_models()返回所有通过spacy link或pip install注册的模型名是 spaCy 内部维护的 registryspacy.blank(zh)创建最小化中文 pipeline避免加载默认组件干扰验证doc[0].vector.shape直接读取首字词向量lg版本固定为 100 维sm版本为 0无向量这是区分版本最硬的指标。2.3 模型能力边界实测lg vs sm 在真实场景中的差距很多人以为lg只是“向量更大”其实它的提升是系统性的。我在某电商评论分析项目中对比过两者的输出样本“小米14 Pro的屏幕太亮了但电池续航一般”任务zh_core_web_sm输出zh_core_web_lg-3.8.0输出差异原因分词一致性[小米, 14, Pro, 的, 屏幕, ...][小米14 Pro, 的, 屏幕, ...]lg的tok2vec层经过更多 Web 文本预训练对品牌型号连写识别更强NER 类型准确率“小米14 Pro” →PRODUCT✅但“电池续航” →O❌“电池续航” →PRODUCT✅lg的 NER 训练数据包含更多消费电子领域实体sm仅覆盖通用领域依存句法关系“屏幕” → “亮”ROOT但“太亮了”整体被切碎“太亮了” 作为副词性谓语完整依附于“屏幕”lg的 parser 使用更深层 BiLSTM长距离依存捕捉更准血泪经验如果你的业务涉及产品型号、地域简称如“杭研院”、网络新词如“绝绝子”sm版本的召回率会断崖式下跌。lg不是“更好”而是“能用”——尤其当你的下游任务是规则引擎比如“若实体类型PRODUCT 且情感词太亮 → 触发屏幕反馈工单”时漏一个 PRODUCT 就意味着整条规则失效。3. 避坑五个让zh_core_web_lg-3.8.0在本地彻底翻车的典型问题3.1 现象spacy.load(zh_core_web_lg)报错OSError: [E050] Cant find model zh_core_web_lg原因spacy link执行时未进入zh_core_web_lg/目录导致链接指向了父目录如~/spacy_models/zh_core_web_lg-3.8.0/而 spaCy 要求链接目标必须是包含meta.json的模型根目录。解决cd进入zh_core_web_lg/子目录注意不是 tar 解压后的顶层目录再运行python -m spacy link。用ls -l $(python -c import spacy; print(spacy.__path__[0]))/data/zh_core_web_lg确认链接目标路径是否含meta.json。3.2 现象加载成功但doc.ents为空或doc[0].vector是全零数组原因模型包解压后权限错误或vocab/目录缺失。lg版本的vocab文件体积超 200MB某些解压工具如部分 GUI 归档软件会静默跳过大文件。解决检查zh_core_web_lg/vocab/下是否存在key2row,strings,vectors三个文件用du -sh zh_core_web_lg/vocab/确认目录大小 200MB。若缺失重新用tar -xzf命令解压。3.3 现象nlp(测试)报ValueError: [E1003] The component ner could not be found原因meta.json中components字段未声明ner或ner/目录下缺少cfg,model文件。3.8.0版本要求 NER 组件显式启用。解决打开zh_core_web_lg/meta.json确认components数组包含ner检查zh_core_web_lg/ner/是否有cfgJSON 配置和model二进制权重文件。若缺失说明 tar 包损坏需重新下载。3.4 现象实体识别结果中大量GPE地理政治实体误标为LOC地点原因spaCy 3.x 默认使用ner组件但zh_core_web_lg-3.8.0的 NER 标签体系基于 OntoNotes其中GPE国家/城市/州和LOC自然地理严格分离而旧版教程常教人用LABELS [GPE, LOC]统一处理。解决不要合并标签。直接用ent.label_ in [GPE, LOC]过滤或按业务需求重映射{GPE: AREA, LOC: NATURAL}。硬编码LABELS会导致标签空间错乱。3.5 现象多进程调用时 CPU 占用 100%且doc.vector计算极慢原因lg版本的tok2vec使用 CPU 版本的 CNN未启用 OpenMP 并行。默认单线程计算词向量而lg的向量表达更稠密。解决在加载模型前设置环境变量export OMP_NUM_THREADS4根据 CPU 核数调整再运行 Python。实测 4 线程下doc.vector计算速度提升 3.2 倍。注意此变量需在 Python 进程启动前设置os.environ在代码中设无效。4. 进阶用法定制化 pipeline 与性能调优实战4.1 替换默认 tokenizer让“微信支付”不再被切成“微信”“支付”zh_core_web_lg的默认 tokenizer 基于 Jieba 分词逻辑对未登录词OOV切分保守。但业务中“微信支付”、“抖音小店”这类复合词必须整体识别。解决方案是注入自定义 tokenizer不修改模型权重只替换分词器import spacy from spacy.tokenizer import Tokenizer from spacy.util import compile_infix_regex def custom_tokenizer(nlp): # 构建保留复合词的 infix 规则允许中文字符间不切分 infix_re compile_infix_regex(nlp.Defaults.infixes (r(?[a-zA-Z\u4e00-\u9fff])(?[a-zA-Z\u4e00-\u9fff]),)) return Tokenizer( nlp.vocab, prefix_searchnlp.tokenizer.prefix_search, suffix_searchnlp.tokenizer.suffix_search, infix_finditerinfix_re.finditer, token_matchnlp.tokenizer.token_match, rules{ 微信支付: [{ORTH: 微信支付}], 抖音小店: [{ORTH: 抖音小店}], } ) # 加载模型后替换 tokenizer nlp spacy.load(zh_core_web_lg) nlp.tokenizer custom_tokenizer(nlp) # 验证 doc nlp(请用微信支付完成抖音小店订单) print([token.text for token in doc]) # ✅ 输出[请用, 微信支付, 完成, 抖音小店, 订单]参数说明rules字典直接注入词典级切分规则优先级高于统计模型ORTH表示原样保留的字符串微信支付会被当做一个 tokeninfix_re扩展了默认的中英文混合切分规则避免“iPhone14”被切成“iPhone”“14”。4.2 冻结 NER 组件只启用 parser 和 tok2vec 提速如果你只需要依存句法分析如提取“主语-谓语-宾语”三元组不需要实体识别可以禁用 NER 组件以节省 35% 内存和 22% 推理时间nlp spacy.load(zh_core_web_lg) # 方法一移除 NER 组件永久删除 nlp.remove_pipe(ner) # 方法二临时禁用推荐保留组件可随时启用 with nlp.select_pipes(enable[tok2vec, parser]): # 只启用指定组件 doc nlp(华为发布了鸿蒙OS) # 验证此时 doc.ents 为空但 doc[0].vector 和 doc[0].dep_ 仍有效 print(len(doc.ents)) # ✅ 输出0 print(doc[0].dep_) # ✅ 输出nsubj注意select_pipes是上下文管理器退出后自动恢复全部组件。生产环境建议用remove_pipe避免意外调用ner导致报错。4.3 模型瘦身导出最小化推理包不含训练权重zh_core_web_lg-3.8.0解压后体积约 1.2GB其中ner/model和parser/model占 800MB。若你只需tok2vec向量如做语义相似度可导出精简版import spacy from spacy.language import Language # 加载完整模型 nlp_full spacy.load(zh_core_web_lg) # 创建新语言对象只复制 vocab 和 tok2vec nlp_lite spacy.blank(zh) nlp_lite.vocab nlp_full.vocab nlp_lite.add_pipe(tok2vec, sourcenlp_full) # 保存为新模型体积降至 280MB nlp_lite.to_disk(~/spacy_models/zh_core_web_lg_lite) # 使用时 nlp_lite spacy.load(~/spacy_models/zh_core_web_lg_lite) vec nlp_lite(人工智能).vector # ✅ 仍可获取 100 维向量关键参数sourcenlp_full表示从原模型拷贝tok2vec组件的权重和配置to_disk保存时只序列化vocab和tok2vec不保存ner、parser的二进制文件精简后nlp_lite无法调用doc.ents或doc[0].dep_但doc.vector完全可用。5. 部署稳定性保障Docker 镜像构建与 CI/CD 集成技巧5.1 构建离线可用的 Docker 镜像避免生产环境网络波动spacy download依赖网络下载模型生产环境严禁。正确做法是将zh_core_web_lg-3.8.0.tar预置进镜像并在构建阶段完成spacy linkFROM python:3.9-slim # 安装 spaCy 及依赖提前下载好 wheels 避免编译 RUN pip install --no-cache-dir \ spacy3.8.0 \ jieba0.42.1 \ python -m spacy download zh_core_web_sm # 下载 sm 作 fallback # 复制模型 tar 包假设放在 ./models/ 目录下 COPY models/zh_core_web_lg-3.8.0.tar /tmp/ # 解压并注册模型关键必须在容器内执行 link RUN mkdir -p /root/spacy_models \ tar -xzf /tmp/zh_core_web_lg-3.8.0.tar -C /root/spacy_models/ \ cd /root/spacy_models/zh_core_web_lg \ python -m spacy link zh_core_web_lg zh_core_web_lg --force # 设置环境变量确保 spaCy 找到模型 ENV SPACY_DATA_PATH/root/spacy_models # 应用代码 COPY app/ /app/ WORKDIR /app CMD [python, main.py]验证命令在构建后运行docker run --rm your-image python -c import spacy; nlpspacy.load(zh_core_web_lg); print(OK:, len(nlp(测试).vector))5.2 CI/CD 流水线中自动校验模型完整性在 GitHub Actions 或 GitLab CI 中每次提交zh_core_web_lg-3.8.0.tar时应自动校验其能否被 spaCy 正确加载。我写的校验脚本validate_model.py如下#!/usr/bin/env python3 import sys import spacy import os def validate_model(model_name: str) - bool: try: # 1. 检查模型是否在 registry if model_name not in spacy.util.get_installed_models(): print(f❌ 模型 {model_name} 未注册) return False # 2. 加载并测试基础功能 nlp spacy.load(model_name) # 3. 测试 NER必须返回至少 1 个实体 doc nlp(苹果公司于1976年成立) if len(doc.ents) 0: print(❌ NER 组件无输出) return False # 4. 测试向量必须非零 if not any(doc[0].vector): print(❌ 词向量全零) return False print(f✅ 模型 {model_name} 校验通过) return True except Exception as e: print(f❌ 模型加载失败: {e}) return False if __name__ __main__: if not validate_model(zh_core_web_lg): sys.exit(1)在 CI 配置中调用- name: Validate zh_core_web_lg run: python validate_model.py # 此步骤失败则整个 CI 中断阻断问题模型上线5.3 生产环境热更新模型不重启服务切换lg和sm某次线上服务因lg模型内存占用过高触发 OOM我们实现了零停机降级用threading.Lock控制模型实例切换import spacy import threading class ModelManager: def __init__(self): self._nlp None self._lock threading.Lock() self._model_name zh_core_web_lg def load_model(self, model_name: str): with self._lock: # 卸载旧模型释放内存 if self._nlp is not None: del self._nlp # 加载新模型 self._nlp spacy.load(model_name) self._model_name model_name def get_nlp(self): with self._lock: return self._nlp # 全局单例 model_mgr ModelManager() # HTTP 接口支持运行时切换 app.post(/switch-model) def switch_model(model: str): if model in [zh_core_web_lg, zh_core_web_sm]: model_mgr.load_model(model) return {status: success, model: model} raise HTTPException(400, Invalid model name)**从那以后我每次上线新模型都强制走一遍validate_model.pydocker run本地验证 curl -X POST热切换测试三连。少一步第二天凌晨三点的告警电话就来了。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

终端AI助手会话记忆工具实战:破解大模型上下文丢失难题

终端AI助手会话记忆工具实战:破解大模型上下文丢失难题

从头到尾聊我在终端里折腾会话记忆的实际经验。先说一句:叫这个名字的工具,本质上是给大模型会话客户端加了一层“本地记忆”,它不依赖任何特定厂商,你完全可以把这套思路套到任何主流的对话式 AI 上。我下面统一用 C 助手来代指这…

2026/10/12 11:19:15 阅读更多 →
DFS回溯剪枝求解迷宫所有最短路径的实战解析

DFS回溯剪枝求解迷宫所有最短路径的实战解析

第一次看到这道题,估计不少人跟我一样:入口、出口、求最短路径,条件反射就是广度优先搜索。但等你真正开始读题,会发现它要的不是“一条最短路径”,而是“所有最短路径”。这一个字之差,直接把问题的性质从…

2026/10/12 11:19:15 阅读更多 →
人脸静默活体检测Python源码包:MTCNN+FAS.H5防屏幕翻拍

人脸静默活体检测Python源码包:MTCNN+FAS.H5防屏幕翻拍

简介:这是一份基于深度学习的人脸静默活体检测算法项目,面向计算机相关专业正在准备毕业设计、期末大作业的学生,也适合需要人脸安全方向实战练习的学习者。项目经导师指导并获评审高分九十八分,源码经过本地编译调试,…

2026/10/12 11:18:15 阅读更多 →

最新新闻

LCA最近公共祖先算法详解:倍增法、Tarjan与树链剖分

LCA最近公共祖先算法详解:倍增法、Tarjan与树链剖分

1. 从一道面试题说起:为什么LCA值得花时间搞透第一次接触LCA是在刷题的时候,题目很直白:给一棵树,多次询问两个节点的最近公共祖先。当时我的第一反应是暴力——两个节点分别往上走,标记走过的路径,第一个相…

2026/10/12 12:59:08 阅读更多 →
Python学习第三阶段重点:函数、数据结构、文件与面向对象

Python学习第三阶段重点:函数、数据结构、文件与面向对象

上个星期我收到一条私信,大意是:跟着Python-100天从新手到大师这个学习计划走到第三周,前面的变量、循环、字符串都能看懂,但一进入新内容就觉得吃力。我回了一句:恭喜,你正处在整个计划最关键的转折点。今…

2026/10/12 12:59:08 阅读更多 →
Python多阶段建模预测NBA总冠军:稳定性特征与贝叶斯校准实战

Python多阶段建模预测NBA总冠军:稳定性特征与贝叶斯校准实战

简介:本资源是一个面向Python数据科学初学者与体育数据分析爱好者的NBA总冠军预测实战项目,聚焦机器学习在体育赛事结果预测中的全流程应用。压缩包共131个文件,含113个CSV历史比赛与球员统计原始数据(如2016–2018赛季常规赛、球…

2026/10/12 12:59:08 阅读更多 →
收藏等于学会吗?用数据统计与即时消化计划终结知识囤积

收藏等于学会吗?用数据统计与即时消化计划终结知识囤积

打开收藏夹那天,我算了笔账,然后把囤了三年的“精神资产”删掉了七成。先交代一下背景,我算是那种典型的“数字囤积狂”。浏览器书签攒了2000多条,各平台收藏夹里躺着3000多篇“以后会看”的文章,网盘里存了上百本PDF和…

2026/10/12 12:59:08 阅读更多 →
VSCode插件开发:根据文件路径一键跳转到对应文件的实现方案与TaoToken配置

VSCode插件开发:根据文件路径一键跳转到对应文件的实现方案与TaoToken配置

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

2026/10/12 12:59:08 阅读更多 →
协同过滤图书推荐系统实战:Django+MySQL构建基于商品的推荐引擎

协同过滤图书推荐系统实战:Django+MySQL构建基于商品的推荐引擎

简介:基于Python Django框架的图书推荐系统完整项目,后端采用基于物品的协同过滤算法(Item-based CF),依托豆瓣图书与评分数据集,结合Mysql存储,实现从用户登录、书目管理到推荐结果展示的完整流…

2026/10/12 12:58:07 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/11 14:36:54 阅读更多 →