AI-For-Beginners 实战指南:基于 Hugging Face Transformers 的实验、文本生成与 Notebook 整理
教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载本指南围绕课程《AI-For-Beginners》第 18 课的课后任务assignment.md展开讲解如何上手 Hugging Face 的 Transformers 库运行官方示例脚本、调用预训练模型与数据集并把课程自带数据集或 Kaggle 数据导入实验最终完成生成有趣文本的实验并整理成可复现的 Notebook。读完本文你将掌握一条完整的动手路径从加载 BERT 等预训练模型、微调文本分类到尝试文本生成脚本与数据导入再到用 Notebook 沉淀实验结论。一、任务全景本次实验到底要做什么课程第 18 课《Attention Mechanisms and Transformers》见 README.md布置的实验任务原文见 assignment.md可以拆解为五个核心步骤体验 Transformers 库使用 Hugging Face 的transformers库运行其官方文档中提供的 run_scripts 系列示例脚本与站点上发布的各类预训练模型进行交互。试用官方数据集从 Hugging Face Datasets 中挑一个数据集完成一个实验如文本分类、文本生成前的数据准备。导入自有数据把本课程中用过的数据集例如 AG News或从 Kaggle 下载的数据集引入实验。尝试文本生成在自有数据基础上观察能否通过预训练语言模型或微调后的模型生成出有趣、连贯的文本。沉淀 Notebook把数据准备、模型加载、训练/推理与生成结果整理成一个 Notebook记录发现与结论。这一任务的设计意图是先站在巨人的肩膀上用现成脚本快速跑通再逐步替换数据源、深入生成任务最终把整个实验过程变成可复现、可分享的研究记录。二、实验前置知识Transformer 为什么值得玩实验依赖的课程背景知识详见 README.md包含几个关键概念理解它们才能解释实验中观察到的现象从 RNN 到注意力机制传统的 sequence-to-sequence 模型由编码器encoder与解码器decoder两个循环网络构成编码器把输入序列压缩成一个隐藏状态解码器再把它展开为翻译结果。这种方式有两个缺陷编码器末端的隐藏状态难以记住长句的开头且序列中所有词对结果的影响被一视同仁。**注意力机制Attention**通过在输入 RNN 的中间状态与输出 RNN 之间建立捷径让生成第 t 个输出符号时以权重系数 α_{t,i} 综合参考所有输入隐藏状态 h_i。位置编码Positional Encoding/Embedding注意力不再像 RNN 那样按时间步逐步推进因此必须显式地把 token 在序列中的相对位置注入模型。方法是对 token 序列附加 0, 1, 2, … 的位置序列再通过可训练的 Embedding 层或原论文中固定的位置编码函数把位置整数变成向量与 token 嵌入向量相加从而同时表达是什么词和在哪个位置。多头自注意力Multi-Head Self-Attention自注意力把注意力作用在输入序列与输出序列相同的序列上从而捕捉句内上下文比如指代关系coreference如 it 指代谁。多头机制让网络同时学习多种依赖关系长期 vs 短期词依赖、指代关系等。BERT 与迁移学习BERTBidirectional Encoder Representations from Transformers是超大规模多层 Transformer 网络BERT-base 12 层、BERT-large 24 层。它先在 Wikipedia 与图书等大规模语料上以无监督方式预训练预测句中被掩码的词再把学到的语言理解通过微调fine-tuning迁移到下游任务即所谓的迁移学习transfer learning。Transformer 因每个输入位置可独立映射到输出位置训练时比 RNN 更容易并行化这也是它能支撑 BERT、GPT 等大规模语言模型的关键。理解了以上原理实验中诸如为什么微调只需要很小的学习率为什么生成时要关注位置与注意力等问题就有了答案。三、环境准备与 Transformers 库的两种加载方式3.1 安装与导入transformers库可与 PyTorch、TensorFlow 搭配使用课程分别提供了两份可直接运行的 NotebookTransformersPyTorch.ipynb 与 TransformersTF.ipynb。两份 Notebook 的第一步都是import transformers3.2from_pretrained的两种加载方式Notebook 中明确说明见 TransformersPyTorch.ipynbHugging Face 库内含预训练模型仓库只要把模型名作为参数传给from_pretrained函数模型所需的全部二进制文件就会自动下载如果加载自己的模型则可以指定一个本地目录目录中包含 tokenizer 参数、config.json模型配置与二进制权重等文件。两种方式在代码上的区别如下# 方式一从互联网模型仓库按名称加载推荐在自有 Notebook 环境使用 bert_model bert-base-uncased # 方式二从磁盘目录加载适用于已经准备好全部模型文件的离线环境 # bert_model ./bert tokenizer transformers.BertTokenizer.from_pretrained(bert_model)配套的 tokenizer 同样通过from_pretrained加载。PyTorch 版 Notebook 还展示了 tokenizer 的基本用法MAX_SEQ_LEN 128 PAD_INDEX tokenizer.convert_tokens_to_ids(tokenizer.pad_token) UNK_INDEX tokenizer.convert_tokens_to_ids(tokenizer.unk_token) tokenizer.encode(PyTorch is a great framework for NLP) # 输出示例[101, 1052, 22123, 2953, ..., 102] # 其中 101 对应 [CLS] 起始符102 对应 [SEP] 分隔符中间为子词 ID 序列TensorFlow 版 Notebook 还演示了用return_tensorstf直接得到可直接喂给模型的张量字典TransformersTF.ipynbtokenizer([Hello, there], return_tensorstf) # 返回 {input_ids: ..., token_type_ids: ..., attention_mask: ...}attention_mask用于区分真实 token 与 padding token是后续实验中理解输入格式的重要字段。四、复现课程 NotebookPyTorch 版 BERT 文本分类微调这是任务中运行官方脚本、熟悉库的最佳起点——课程已把完整流程封装在 Notebook 与辅助脚本中可先跑通再替换数据。4.1 数据加载与编码PyTorch 版依赖同目录下的 torchnlp.py 工具模块。其中load_dataset()使用torchtext.datasets.AG_NEWS加载 AG News 新闻分类数据集类别为 World、Sports、Business、Sci/Tech并用collections.Counter统计词频构建词表encode()把文本行转换为词表 ID 序列。Notebook 中直接调用import torch import torchtext from torchnlp import * import transformers train_dataset, test_dataset, classes, vocab load_dataset() vocab_len len(vocab)由于 BERT 使用自己的分词器Notebook 重新定义了类似padify的填充函数pad_bert把 batch 内序列统一填充到同一长度再用DataLoader组织批次def pad_bert(b): # b 是长度为 batch_size 的元组列表 # 元组第一个元素是标签第二个元素是文本序列 v [tokenizer.encode(x[1]) for x in b] l max(map(len, v)) return ( torch.LongTensor([t[0] for t in b]), torch.stack([torch.nn.functional.pad(torch.tensor(t), (0, l - len(t)), modeconstant, value0) for t in v]) ) train_loader torch.utils.data.DataLoader(train_dataset, batch_size8, collate_fnpad_bert, shuffleTrue) test_loader torch.utils.data.DataLoader(test_dataset, batch_size8, collate_fnpad_bert)4.2 加载分类模型并微调加载BertForSequenceClassification时Notebook 特别说明加载日志会提示最终分类器权重未初始化、需要重新训练——这完全正常因为我们要做的正是针对 4 分类任务微调这个头部model transformers.BertForSequenceClassification.from_pretrained(bert_model, num_labels4).to(device)微调阶段的关键细节是BERT 已经预训练过必须用小学习率lr2e-5以免破坏初始权重。训练循环中模型一次返回(loss, out)loss 用于反向传播out通过argmax得到预测标签用于计算准确率optimizer torch.optim.Adam(model.parameters(), lr2e-5) report_freq 50 iterations 500 # 想训练更久就调大这个值 model.train() i, c 0, 0 acc_loss 0 acc_acc 0 for labels, texts in train_loader: labels labels.to(device) - 1 # 将标签归一化到 0-3 texts texts.to(device) loss, out model(texts, labelslabels)[:2] labs out.argmax(dim1) acc torch.mean((labs labels).type(torch.float32)) optimizer.zero_grad() loss.backward() optimizer.step() acc_loss loss acc_acc acc i 1 c 1 if i % report_freq 0: print(fLoss {acc_loss.item()/c}, Accuracy {acc_acc.item()/c}) c 0 acc_loss 0 acc_acc 0 iterations - 1 if not iterations: break4.3 评估与结论评估循环与训练循环类似但必须用model.eval()切换到评估模式。Notebook 中 100 个 batch 的评估结果约为Final accuracy: 0.9047。Notebook 的总结见 TransformersPyTorch.ipynb给出了两个对实验设计很有价值的结论BERT 已经较好理解语言结构只需微调最终分类器就能取得不错准确率但因为模型很大完整训练耗时且需要较强算力GPU最好多卡。本实验用的是最小的预训练 BERT 之一更大的模型通常效果更好——这为任务中尝试不同模型留下了探索空间。五、TensorFlow 版对照实验自建 Transformer 层与冻结微调TransformersTF.ipynb 提供了两个层次的实验可作为任务中尝试脚本的素材。5.1 自建简单 Transformer 模型Keras 没有内置 Transformer 层Notebook 用子类化Layer的方式实现两个核心组件TokenAndPositionEmbedding内含 token Embedding 与位置 Embedding 两个层用tf.range生成 0 到maxlen的位置序列两个嵌入向量相加得到带位置信息的表示。TransformerBlock对输入施加MultiHeadAttention以输入自身作为 query/key/value即自注意力经 Dropout 后与输入残差相加并做LayerNormalization再通过两层的 FFNDense-relu-Dense并再次残差归一化。Notebook 注释指出LayerNormalization与视觉课程中的BatchNormalization相似但它是按每个训练样本独立归一化输出。完整模型把 TextVectorization → TokenAndPositionEmbedding → TransformerBlock → GlobalAveragePooling1D → Dense 头串起来embed_dim32、num_heads2、ff_dim32、maxlen256、vocab_size20000在 AG News 上训练即可看到验证准确率接近 0.91。这段代码正是理解Transformers 如何吃文本的最小实现也印证了任务前置知识中位置编码 自注意力两个核心思想。5.2 用 TF-BERT 做微调并冻结骨干Notebook 还演示了TFBertForSequenceClassification.from_pretrained(bert_model, num_labels4, output_attentionsFalse)加载 BERT 分类器。model.summary()显示模型总参数量约109,485,316接近 1.1 亿如果只希望在相对小的数据集上做简单分类可以冻结 BERT 主干、只训练分类头model.layers[0].trainable False model.summary() # Trainable params 降为 3,076随后用model.compile(adam, sparse_categorical_crossentropy, [acc])编译并通过tf.py_function把tokenizer.encode包装进 TensorFlow 数据管道process_fn中拼接 title 与 description按MAX_SEQ_LEN填充与截断。Notebook 提示完整训练 BERT 非常耗时示例中只训练前 32 个 batch 用于演示如要完整训练去掉steps_per_epoch与validation_steps参数即可。PyTorch 与 TF 两个 Notebook 的结论一致Transformer 模型是目前 NLP 的主流方案实现自定义 NLP 解决方案时应首先考虑。六、任务第二站跑通 run_scripts 示例脚本与文本生成任务要求尝试 Hugging Face 官方文档中的 run_scripts 示例脚本。该页面汇集了针对各类模型任务的现成脚本文本分类、问答、文本生成、翻译等它们通常遵循同一套模式与课程 Notebook 展示的 API 风格一致用AutoTokenizer.from_pretrained(...)或具体分词器类加载 tokenizer用AutoModelForXxx.from_pretrained(...)或 BERT 等具体类加载模型对输入文本编码后前向推理解码输出。针对生成有趣文本这一目标典型的生成实验脚本骨架如下这是任务要求的通用 API 用法模板可参照 run_scripts 页面调整参数from transformers import AutoTokenizer, AutoModelForCausalLM model_name gpt2 # 或任何可用的因果语言模型 tokenizer AutoTokenizer.from_pretrained(model_name) model AutoModelForCausalLM.from_pretrained(model_name) prompt The future of artificial intelligence is inputs tokenizer(prompt, return_tensorspt) outputs model.generate( **inputs, max_new_tokens50, do_sampleTrue, # 采样式生成而非贪心 temperature0.9, # 控制随机性 top_p0.95, # 核采样 num_return_sequences3 # 生成多条候选 ) for seq in outputs: print(tokenizer.decode(seq, skip_special_tokensTrue))也可以先用pipeline(text-generation, modelmodel_name)快速体验再切换到脚本式写法以精确控制采样参数。实验记录时应重点观察不同temperature/top_p下文本的多样性与连贯性变化以及换用不同规模模型如从 base 到更大模型时生成质量的变化——这与课程 README 中更大模型通常效果更好的提示相呼应。七、任务第三站导入课程数据集或 Kaggle 数据任务要求使用官方数据集之后再导入一个自己的数据集来自本课程或 Kaggle并尝试用其生成文本。数据来源可以这样选课程自带数据AG News 新闻语料torchnlp.py 中通过torchtext.datasets.AG_NEWS加载也可在 TensorFlow 版用tensorflow_datasets的ag_news_subset仓库 data/mnist.pkl.gz 中的 MNIST 数据集更适用于图像任务若做纯文本生成可优先选文本类数据。Kaggle 数据下载 CSV/JSON 格式的文本语料如新闻、对话、影评、推文等用 pandas 读取后按文本列 → 字符串序列处理即可接入与上面相同的数据管道。以文本生成为目标的实验建议把数据整理为纯文本序列按行或按段落切分然后按训练集微调语言模型 → 用前缀提示生成续写的流程执行。课程 Notebook 中pad_bert/process_fn这类文本 → 定长 ID 张量的处理逻辑可以原样复用到生成任务的数据准备阶段唯一的差别是生成任务通常不需要标签列。八、任务收尾用 Notebook 沉淀实验发现任务要求撰写一份记录发现的 Notebook建议按以下结构组织确保他人可复现、可引用实验目标一句话说明要验证的问题例如预训练 GPT 模型在课程新闻语料上微调后能否生成风格相近的新闻文本。环境与依赖列出transformers、torch/tensorflow及数据集加载方式参考 requirements.txt 与 environment.yml 中的依赖组织。数据准备官方数据集与自有数据各自的加载、清洗、编码代码以及样本展示。模型加载与微调/推理from_pretrained加载、微调训练循环可复用第 4、5 节的代码骨架、评估结果。生成实验不同采样参数temperature、top_p、max_new_tokens下生成的文本对照截图或文本块记录。结论与反思回答任务原问题能否生成有趣文本总结哪些设置有效、哪些失败并给出下一步改进方向换更大模型、增加微调数据、调整超参数。Notebook 中尤其值得记录三类发现模型加载时输出的权重初始化警告及其含义、微调学习率对结果的影响、采样参数与生成质量的关系。这些都是任务评分与后续深入研究中最有价值的内容。九、常见问题与资源索引模型加载失败检查模型名是否正确、网络是否可达离线环境改用本地目录方式bert_model ./bert目录内需包含 tokenizer 文件、config.json与权重文件见 TransformersPyTorch.ipynb 中的说明。训练太慢BERT 参数量大课程 Notebook 均提示训练耗时与算力需求TF 版可通过model.layers[0].trainable False冻结骨干PyTorch 版可减小iterations。加载时出现分类器权重未初始化警告这是BertForSequenceClassification的预期行为微调正是为了训练这部分权重无需担心。想深入学习原理课程 READMElessons/5-NLP/18-Transformers/README.md整理了注意力与 Transformer 的完整讲解及复习资料两份 Notebook 分别给出了 PyTorch 与 TensorFlow 的完整实现可对照阅读。通过官方脚本快速上手 → 课程 Notebook 复现 → 自有数据生成实验 → Notebook 沉淀结论这条路径你既能完成课程任务也掌握了后续独立开展 NLP 实验的完整工作流。赞分享教程人工智能机器学习深度学习【免费下载链接】AI-For-Beginners12 Weeks, 24 Lessons, AI for All!项目地址https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners点击查看免费下载相关推荐AI-For-Beginners 第 18 课实战基于 Hugging Face Transformers 的微调与文本生成实验AI For Beginners 第 18 课实战基于 Hugging Face Transformers 的微调与文本生成实验 本任务隶属于 AI For教程人工智能机器学习深度学习AI-For-Beginners 实战基于 HuggingFace Transformers 的文本生成实验指南AI For Beginners 实战基于 HuggingFace Transformers 的文本生成实验指南 本文基于 AI For Beginners教程人工智能机器学习深度学习AI-For-Beginners 实战基于 HuggingFace Transformers 的文本生成实验指南AI For Beginners 实战基于 HuggingFace Transformers 的文本生成实验指南 本指南对应 AI For Beginners教程人工智能机器学习深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

BACnet读写与COV订阅实战:bacpypes3工程落地指南

BACnet读写与COV订阅实战:bacpypes3工程落地指南

简介:本资源是一套基于C#实现的BACnet楼宇自控协议实践项目,面向自动化、智能建筑及工业通信领域的初学者与开发人员,聚焦设备属性读写、订阅值变化等核心功能,助力快速掌握BACnet协议在实际工程中的基础应用。压缩包共131个文件&…

2026/10/11 18:10:42 阅读更多 →
labelme格式牙齿分割数据集如何高效转COCO并训练语义分割模型

labelme格式牙齿分割数据集如何高效转COCO并训练语义分割模型

简介:针对牙齿分割与病变检测的图像分割数据集说明文档,适用于医学影像分析、目标检测与分割等方向的开发者,也可作为口腔疾病辅助诊断项目的参考。文档基于labelme 5.5.0标注规范,介绍了一套包含2616张jpg图像及对应json标注的数…

2026/10/11 18:10:42 阅读更多 →
Minari数据集断点续传技巧:DataCollector.checkpoint防丢数据实战

Minari数据集断点续传技巧:DataCollector.checkpoint防丢数据实战

【免费下载链接】Minari A standard format for offline reinforcement learning datasets, with popular reference datasets and related utilities 项目地址: https://gitcode.com/gh_mirrors/mi/Minari 点击查看 免费下载 Minari 是离线强化学习(Of…

2026/10/11 18:10:42 阅读更多 →

最新新闻

Word VBA宏实战指南:批量格式统一、内容提取与PDF导出的高效自动化方案

Word VBA宏实战指南:批量格式统一、内容提取与PDF导出的高效自动化方案

做了快八年的Office文档自动化,我几乎每天都要和Word打交道。很多人一听VBA就觉得是“老古董”,可真遇到三百份文档要统一格式、几十个表格要提取数据、几十个文件要转PDF的时候,VBA反而是最可靠的工具。这篇东西不是给你讲理论,而…

2026/10/11 18:54:07 阅读更多 →
Word VBA宏实战:批量统一格式、合并拆分文档的自动化方案

Word VBA宏实战:批量统一格式、合并拆分文档的自动化方案

有没有遇到过这种场景:一份几十页的合同或标书,不同作者写出来的标题字号五花八门,正文缩进有深有浅,全角半角括号混用,甚至字体一会儿宋体一会儿仿宋。你花一下午手动调完,眼都快瞎了,结果领导…

2026/10/11 18:54:07 阅读更多 →
HaGRID手势识别数据集实战:从JSON标注到YOLO训练的完整指南

HaGRID手势识别数据集实战:从JSON标注到YOLO训练的完整指南

简介:HaGRID-HAnd手势识别图像数据集是面向计算机视觉与深度学习研究者的高质量手势识别资源,覆盖多样光照、复杂背景和多角度手部姿态,涵盖18类常见手势标注,适用于手势分类模型的训练与评估。压缩包共55个文件,以54个…

2026/10/11 18:53:07 阅读更多 →
MATLAB CNN图像分类实战:从数据准备到模型部署的完整指南

MATLAB CNN图像分类实战:从数据准备到模型部署的完整指南

简介:这是一份基于MATLAB实现的卷积神经网络图像分类完整项目源码,覆盖从数据加载、网络初始化、前向/反向传播到训练测试与精度评估的闭环流程。适合深度学习入门新手及有一定经验的开发人员参考,也便于在课程设计或课题研究中快速搭建CNN基…

2026/10/11 18:53:07 阅读更多 →
宠物咖啡馆平台-springboot

宠物咖啡馆平台-springboot

本项目为前几天收费帮学妹做的一个项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于SpringBoot的宠物咖啡馆平台通过Mysql数据库连接数据库 http://localhost:8081…

2026/10/11 18:53:07 阅读更多 →
基于YOLOv8的无人机检测:从数据集处理到边缘部署的完整实践

基于YOLOv8的无人机检测:从数据集处理到边缘部署的完整实践

简介:面向深度学习课程设计、毕业设计与期末大作业场景,这份基于YoloV8的无人机检测项目包,提供了从数据预处理、模型训练到界面集成的完整实现。压缩包共18个文件,其中8个py文件为核心脚本,主导数据格式转换、数据集融…

2026/10/11 18:53:07 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →