实用指南:解码器系列(1)BERT

news/2025/10/1 18:08:47/文章来源:https://www.cnblogs.com/yxysuanfa/p/19122622

论文地址:BERT
代码地址:bert

零、摘要

我们提出了一种新的语言表示模型,称为BERT,其全称是来自 Transformers 的双向编码器表示。与近期的语言表示模型(Peters 等人,2018a;Radford 等人,2018)不同,BERT 旨在通过在所有层中联合调节左右上下文,从无标注文本中预训练深度双向表示。因此,预训练好的 BERT 模型只需添加一个额外的输出层进行微调,即可为广泛的任务(如问答和语言推理)创建最先进的模型,而无需对任务特定的架构进行大量修改。

BERT 在概念上简单,在实证上强大。它在十一个自然语言处理任务上取得了新的最先进结果,包括将 GLUE 分数提升至80.5%(绝对提升 7.7%),MultiNLI 准确率提升至86.7%(绝对提升 4.6%),SQuAD v1.1 问答测试 F1 值提升至93.2(绝对提升 1.5 分),以及 SQuAD v2.0 测试 F1 值提升至83.1(绝对提升 5.1 分)。

一、介绍

语言模型预训练已被证明能实用改善许多自然语言处理任务(Dai and Le, 2015; Peters et al., 2018a; Radford et al., 2018; Howard and Ruder, 2018)。这包括句子级任务,如自然语言推理(Bowman et al., 2015; Williams et al., 2018)和释义(Dolan and Brockett, 2005),这些任务旨在通过整体分析句子来预测句子间的关系;以及词元级任务,如命名实体识别和问答,这些任务要求模型在词元级别产生细粒度的输出(Tjong Kim Sang and De Meulder, 2003; Rajpurkar et al., 2016)。

将预训练的语言表示应用于下游任务存在两种现有策略:基于特征的手段微调方法。基于特征的方法,如ELMo(Peters et al., 2018a),使用涵盖预训练表示作为附加特征的任务特定架构。微调方法,如生成式预训练Transformer(OpenAI GPT)(Radford et al., 2018),引入最少的任务特定参数,并依据简单地微调所有预训练参数来在下游任务上进行训练。这两种办法在预训练期间共享相同的目标函数,即它们使用单向语言模型来学习通用语言表示。

我们认为,当前的技术限制了预训练表示的能力,特别是对于微调方法。主要的局限在于标准的语言模型是单向的,这限制了预训练期间可用的架构选择。例如,在OpenAI GPT中,作者使用了从左到右的架构,其中每个词元在Transformer的自注意力层中只能关注到先前的词元(Vaswani et al., 2017)。这种限制对于句子级任务来说是次优的,并且在将基于微调的方法应用于词元级任务(如问答)时可能非常有害,因为在这些任务中,结合双向的上下文信息至关重要

在本文中,我们通过提出BERT(来自Transformers的双向编码器表示)来改进基于微调的方法。BERT通过使用一种受完形填空任务(Taylor, 1953)启发的"掩码语言模型"预训练目标,来缓解前述的单向性限制。掩码语言模型随机掩盖输入中的一些词元,其目标是根据上下文预测被掩盖词的原始词汇id。与从左到右的语言模型预训练不同,MLM目标使得表示能够融合左右上下文,这使我们能够预训练一个深度双向的Transformer。除了掩码语言模型,我们还利用一个"下一句预测"任务来联合预训练文本对表示。本文的贡献如下:

简要总结

本段是BERT论文引言的核心部分,清晰地阐述了研究的背景、现有方法的局限以及BERT的核心创新和贡献。

  1. 背景预训练语言模型能有效提升各种NLP任务(句子级和词元级)的性能。
  2. 现有策略
    • 基于特征:如ELMo,将预训练表示作为静态特征输入到为特定任务定制的模型中。
    • 微调:如GPT,在预训练模型上添加少量参数,然后在下游任务数据上更新所有模型参数
    • 共同局限:它们都主要依赖于单向语言模型(从左到右)进行预训练。
  3. 问题与动机
    • 单向性是一个主要限制,它阻碍了模型在预训练时充分理解上下文。例如,GPT中每个词只能看到它左边的词。
    • 这对于需要全局上下文理解问答等词元级任务)是就是的任务(尤其非常不利的
  4. 解决方案:提出BERT
    • 核心创新1:采用掩码语言模型作为预训练目标。通过随机掩盖输入中的一些词,并让模型预测它们,从而强制模型利用双向上下文进行学习,实现了真正的深度双向编码器
    • 核心创新2:引入下一句预测任务,让模型理解两个句子之间的关系,这对句子对任务(如推理)至关重要。
  5. 主要贡献
    • 强调了双向预训练的极端重要性。
    • 证明了BERT这种单一的、通用的模型架构,通过预训练-微调,可以在众多任务上超越精心设计的任务特定模型,大大简化了NLP应用的研发流程。

核心思想,借助就是:这段文字的核心论点掩码语言模型实现深度双向预训练是突破之前预训练模型(如GPT)单向性瓶颈的关键。BERT的成功不在于复杂的下游任务架构,而在于其预训练阶段学习到的更强大、更通用的上下文表示能力

二、相关工作

预训练通用语言表示有着悠久的历史,大家在本节简要回顾最广泛启用的方法。
在这里插入图片描述
预训练模型架构的差异。BERT 使用双向 Transformer。OpenAI GPT 运用从左到右的 Transformer。ELMo 使用独立训练的从左到右和从右到左的 LSTM 的连接来生成下游任务的特征。在这三个模型中,只有 BERT 的表示在所有层中都同时考虑了左右上下文。除了架构差异之外,BERT 和 OpenAI GPT 是微调方法,而 ELMo 是基于特征的方法。

2.1 基于无监督特征的方法
学习广泛适用的词语表示是几十年来的一个活跃研究领域,包括非神经(Brown et al., 1992; Ando and Zhang, 2005; Blitzer et al., 2006)和神经(Mikolov et al., 2013; Pennington et al., 2014)方法。预训练的词嵌入是现代NLP系统的一个组成部分,与从零开始学习的嵌入相比给予了显著改进(Turian et al., 2010)。为了预训练词嵌入向量,人们利用了从左到右的语言建模目标(Mnih and Hinton, 2009),以及区分左右上下文中正确与错误词的目标(Mikolov et al., 2013)。

这些办法已被推广到更粗的粒度,例如句子嵌入(Kiros et al., 2015; Logeswaran and Lee, 2018)或段落嵌入(Le and Mikolov, 2014)。为了训练句子表示,先前的工作使用了给候选下一句子排序的目标(Jernite et al., 2017; Logeswaran and Lee, 2018)、给定前一句子的表示从左到右生成下一句子词的目标(Kiros et al., 2015),或去噪自编码器衍生的目标(Hill et al., 2016)。

深度双向的。Fedus等人(2018)表明完形填空任务可用于提高文本生成模型的鲁棒性。就是ELMo及其前身(Peters et al., 2017, 2018a)沿不同维度推广了传统的词嵌入研究。它们从一个从左到右和一个从右到左的语言模型中提取上下文敏感的特征。每个词符的上下文表示是左右和右左表示的拼接。当将上下文词嵌入与现有的任务特定架构集成时,ELMo推进了几个主要NLP基准(Peters et al., 2018a)的技术水平,包括问答(Rajpurkar et al., 2016)、情感分析(Socher et al., 2013)和命名实体识别(Tjong Kim Sang and De Meulder, 2003)。Melamud等人(2016)提出凭借使用LSTM从左右上下文预测单个词的任务来学习上下文表示。与ELMo类似,他们的模型是基于特征的,并且不

2.2 无监督微调方法
与基于特征的方法一样,这个方向的早期工作只从无标注文本预训练词嵌入参数(Collobert and Weston, 2008)。

最近,产生上下文词符表示的句子或文档编码器已经从无标注文本进行了预训练,并针对有监督的下游任务进行了微调(Dai and Le, 2015; Howard and Ruder, 2018; Radford et al., 2018)。这些方法的优点是需要从零开始学习的参数很少。至少部分由于这个优点,OpenAI GPT(Radford et al., 2018)在GLUE基准(Wang et al., 2018a)的许多句子级任务上取得了之前的最先进结果。从左到右的语言建模和自编码器目标已被用于预训练此类模型(Howard and Ruder, 2018; Radford et al., 2018; Dai and Le, 2015)。

2.3 从有监督信息中进行迁移学习
微调使用ImageNet预训练的模型(Deng et al., 2009; Yosinski et al., 2014)。就是也有工作展示了从具有大资料集的有监督任务(如自然语言推理(Conneau et al., 2017)和机器翻译(McCann et al., 2017))进行有效迁移。计算机视觉研究也证明了从大型预训练模型进行迁移学习的重要性,其中一个管用的方法

简要总结

本段是BERT论文的"相关工作"部分,系统地将已有的语言表示学习方法分为三类,为BERT的定位和创新提供了背景。

  1. 基于无监督特征的方法

    • 核心思想:预训练静态的词、句或段落嵌入,将其作为固定特征输入到下游任务的特定模型中。
    • 代表工作
      • 词嵌入:Word2Vec, GloVe。
      • 上下文嵌入ELMo(关键进步)。ELMo通过分别训练一个从左到右和一个从右到左的语言模型,接着将两个方向的表示拼接起来,从而获得上下文相关的词表示。但BERT指出,这本质上是浅层双向的,因为两个模型是独立训练的。
  2. 无监督微调方法

    • 核心思想:预训练整个模型架构(而不仅仅是词向量),之后通过微调所有参数来适应下游任务。这要求从零开始学习的参数很少。
    • 代表工作OpenAI GPT(BERT最直接的比较对象)。GPT使用Transformer解码器进行从左到右的语言模型预训练。其关键局限单向性,限制了模型对上下文的完整理解。
  3. 从有监督数据中进行迁移学习

    • 核心思想:利用大型有标注数据集(如自然语言推理、机器翻译)上训练的模型进行迁移学习。
    • 类比:类似于计算机视觉中先在ImageNet(大型有标注数据集)上预训练,再微调以适应新任务的做法。

BERT的定位

  • BERT属于第二类——无监督微调方法。它的直接竞争对手是GPT。
  • BERT的核心创新在于解决了GPT的单向性问题,以及ELMo的非深度双向疑问。它利用掩码语言模型(MLM) 实现了真正的深度双向预训练
  • 这段相关工作通过梳理脉络,清晰地表明BERT并非凭空出现,而是在已有范式(特别是微调范式)上的一个重大突破,其突破点就在于预训练目标的设计。

三、Bert

我们在本节介绍BERT及其具体建立。我们的框架包含两个步骤:预训练微调。在预训练阶段,模型在不同预训练任务的无标注数据上进行训练。在微调阶段,BERT模型首先用预训练的参数初始化,继而使用下游任务的标注数据对所有参数进行微调。每个下游任务都有独立的微调模型,即使它们是用相同的预训练参数初始化的。图1中的问答示例将作为本节的运行示例。
在这里插入图片描述

其就是BERT的一个显著特点跨不同任务的统一架构。预训练架构与最终的下游架构之间差异极小。

模型架构BERT的模型架构是一个多层双向Transformer编码器,基于Vaswani等人(2017)描述并在tensor2tensor库中发布的原始实现。由于Transformer的使用已很普遍,且大家的实现与原始达成几乎相同,我们将省略对模型架构的详尽背景描述,请读者参阅Vaswani等人(2017)以及优秀的指南如"The Annotated Transformer"。

本工作中,我们将层数(即Transformer块数)记为L LL,隐藏层大小记为H HH,自注意力头数记为A AA。大家主要报告两种模型尺寸的结果:

为了与OpenAI GPT的模型尺寸相同以便比较。然而,就是选择BERT_BASE关键区别在于,BERT Transformer运用双向自注意力,而GPT Transformer使用受限的自注意力,即每个词符只能关注其左侧的上下文。

输入/输出表示为了使BERT能处理各种下游任务,我们的输入表示能够在一个词符序列中明确地表示单个句子或句子对(例如〈困难,答案〉)。在整个工作中,“句子”可以是任意的连续文本片段,而非真正的语言学句子。“序列”指的是BERT的输入词符序列,可能是一个单句或打包在一起的两个句子。

我们使用包含30,000个词符词汇表的WordPiece嵌入(Wu et al., 2016)。每个序列的第一个词符总是一个特殊的分类词符([CLS])。与该词符对应的最终隐藏状态被用作分类任务的聚合序列表示。句子对被打包成一个序列。我们通过两种方式区分句子:首先,用一个特殊词符([SEP])分隔它们;其次,向每个词符添加一个习得的嵌入,指示它属于句子A还是句子B。如图1所示,大家将输入嵌入记为E EE,特殊[CLS]词符的最终隐藏向量记为C ∈ R H C \in \mathbb{R}^HCRH,第i ii个输入词符的最终隐藏向量记为T i ∈ R H T_i \in \mathbb{R}^HTiRH

对于一个给定的词符,其输入表示通过将对应的词符嵌入、段嵌入和位置嵌入相加来构建。这种构建的可视化如图2所示。
在这里插入图片描述图2:BERT 输入表示。输入嵌入是令牌嵌入、段落嵌入和位置嵌入的总和。

3.1 预训练BERT
与Peters等人(2018a)和Radford等人(2018)不同,我们不使用传统的从左到右或从右到左语言模型来预训练BERT。相反,我们使用两个无监督任务来预训练BERT,本节将对此进行描述。此步骤呈现在图1的左侧。

任务 #1: 掩码语言模型直观上,有理由相信深度双向模型严格优于从左到右模型或左右模型的浅层拼接。然而,标准的条件语言模型只能被训练为从左到右或从右到左,缘于双向条件作用会让每个词间接地“看到自己”,模型就能在多层上下文中轻松预测目标词。

为了训练深度双向表示,我们随机掩盖一定比例的输入词符,然后预测那些被掩盖的词符。大家将此过程称为“掩码语言模型”(MLM),尽管在文献中它常被称为完形填空任务(Taylor, 1953)。在此情况下,对应于被掩盖词符的最终隐藏向量被送入一个在词汇表上的输出softmax层,如同标准LM一样。在我们所有的实验中,我们随机掩盖每个序列中15%的WordPiece词符。与去噪自编码器(Vincent et al., 2008)相比,我们只预测被掩盖的词,而不是重建整个输入。

尽管这使我们能够获得一个双向预训练模型,但一个缺点是我们在预训练和微调之间造成了不匹配,因为[MASK]词符在微调期间不会出现。为了缓解这个问题,我们并不总是用实际的[MASK]词符替换“被掩盖”的词。训练数据生成器随机选择15%的词符位置进行预测。倘若第i ii个词符被选中,我们按以下方式替换它:(1)80%的时间使用[MASK]词符;(2)10%的时间启用一个随机词符;(3)10%的时间保持原词符不变。接着,T i T_iTi将被用于通过交叉熵损失预测原始词符。我们在附录C.2中比较了此过程的变体。

任务 #2: 下一句预测许多主要的下游任务,如问答(QA)和自然语言推理(NLI),都基于理解两个句子之间的关系,而语言建模无法直接捕捉这种关系。为了训练一个理解句子关系的模型,我们预训练一个二值化的下一句预测任务语料库中的一个随机句子(标记为NotNext)。如图1所示,就是,该任务允许从任何单语语料库中轻松生成。具体来说,在为每个预训练样本选择句子A和B时,50%的情况下B是A的实际下一句(标记为IsNext),50%的情况下它C CC被用于下一句预测(NSP)。尽管容易,我们将在5.1节证明针对此任务的预训练对QA和NLI都非常有益。

NSP任务与Jernite等人(2017)和Logeswaran与Lee(2018)中使用的表示学习目标密切相关。然而,在先前的工作中,只有句子嵌入被迁移到下游任务,而BERT迁移所有参数以初始化最终任务模型参数。

预训练数据预训练过程大致遵循语言模型预训练的现有文献。对于预训练语料库,我们采用BooksCorpus(8亿词)(Zhu et al., 2015)和英文维基百科(25亿词)。对于维基百科,我们只提取文本段落,忽略列表、表格和标题。使用文档级语料库而非打乱的句子级语料库(如Billion Word Benchmark (Chelba et al., 2013))对于提取长的连续序列至关重要。

3.2 微调BERT
微调过程很直接,基于Transformer中的自注意力机制允许BERT通过交换适当的输入和输出来建模许多下游任务——无论它们涉及单个文本还是文本对。对于涉及文本对的应用,一种常见模式是在应用双向交叉注意力之前独立编码文本对,例如Parikh等人(2016);Seo等人(2017)。BERT则运用自注意力机制来统一这两个阶段,基于用自注意力编码拼接的文本对有效地包含了两个句子之间的双向交叉注意力。

对于每个任务,我们只需将任务特定的输入和输出插入BERT,并端到端地微调所有参数。在输入侧,预训练中的句子A和句子B类似于:(1)释义中的句子对,(2)蕴含中的假设-前提对,(3)问答中的问题-段落对,以及(4)文本分类或序列标注中的退化文本-∅对。在输出侧,词符表示被送入输出层用于词符级任务(如序列标注或问答),而[CLS]表示被送入输出层用于分类(如蕴含或情感分析)。

与预训练相比,微调的成本相对较低。从完全相同的预训练模型开始,本文中的所有结果最多可以在单个Cloud TPU上1小时内复现,或在GPU上几小时内复现。我们在第4节的相应小节中描述了任务特定的细节。更多细节可见附录A.5。

简要总结

本段详细阐述了BERT模型的核心架构、预训练任务和微调办法。

  1. 整体框架:采用预训练-微调两阶段范式。预训练使用无标注数据,微调使用下游任务标注素材。

  2. 模型架构

    • 核心是多层双向Transformer编码器
    • 定义了两种规格:BERT_BASE(1.1亿参数,用于与GPT公平对比)和BERT_LARGE(3.4亿参数,性能更强)。
    • 关键区别:与GPT(单向)不同,BERT使用双向自注意力,能同时利用上下文信息。
  3. 输入表示

    • 使用WordPiece分词。
    • 引入特殊词符:[CLS](用于分类任务的聚合表示)和**[SEP]**(分隔句子)。
    • 输入嵌入由三部分组成:词符嵌入 + 段嵌入(区分句子A/B)+ 位置嵌入
  4. 预训练任务(核心创新)

    • 任务1: 掩码语言模型
      • 目的:实现深度双向语言表示。
      • 方法:随机掩盖15%的输入词符,让模型预测原词。
      • 缓解微调不匹配:掩盖时,80%替换为[MASK],10%替换为随机词,10%保留原词。
    • 任务2: 下一句预测
      • 目的:让模型理解句子间关系。
      • 方法:给定句子A,50%概率B是下一句,50%概率是随机句,让模型判断。
  5. 微调

    • 流程简单:为下游任务设计输入输出(如将问题/段落对应为句子A/B),继而用任务内容端到端微调所有参数
    • 高效:利用自注意力机制天然处理单句或句对任务,无需困难结构调整。
    • 低成本:微调计算量远小于预训练。

核心思想:BERT的成功源于三个关键设计:(1)双向Transformer架构;(2)掩码语言模型预训练目标,巧妙解决了双向建模的难题;(3)下一句预测任务,增强句子级理解。通过统一的架构和便捷的微调,BERT为各种NLP任务提供了强大的基础模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/924108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitLab沦为僵尸网络——共享Runner如何引发大规模DoS攻击

2025年9月,GitLab共享Runner因漏洞被利用,对自托管实例发动大规模拒绝服务攻击。事件暴露多租户基础设施安全隐患,涉及漏洞误判、隔离失效等系统性故障,最终通过紧急补丁和监控改进完成修复。GitLab沦为僵尸网络—…

OI 笑传 #14

見えない明日の欠片を探してずっと记些明日の欠片。 1题目背景 给定一个初始整数数组,需要依次执行 \(Q\) 次操作,最后统计数组中值在指定范围 \([L, R]\) 内的元素个数。 操作类型加法操作:对于数组中所有满足 \(a…

国庆集训模拟赛记录

2025.9.26 A 序列 OI 赛制收益者,挂了 70 分。 先考虑构造一个相邻逆序对最大的序列。 最佳的序列一定是从最大数扫到最小数,每个出现次数不为 \(0\) 的数依次放入数组末尾,并将出现次数减一,扫完最小数后重新扫最…

时光轴 网站百度广告联盟平台官网下载

2011年认证杯SPSSPRO杯数学建模 A题 客机水面迫降时的姿态 原题再现: 2009 年 1 月 15 日下午(美国东部时间),US Airways 所属第 1549 航班(空中客车 A320 客机)在起飞后不久在纽约哈德逊河紧急迫降。经及…

2025 年集装袋厂家 TOP 企业品牌推荐排行榜,深度剖析优质厂家优势集装袋推荐这十家公司!

引言在当今物流与工业生产紧密相连的时代,集装袋作为一种高效、便捷且应用广泛的包装运输工具,其重要性不言而喻。从化工原料到食品谷物,从矿产资源到建材产品,集装袋几乎渗透到了各个行业领域。然而,市场上集装袋…

oppoR9m刷Linux系统: 工具、软件下载

前言全局说明刷机相关工具、软件下载一、说明 1.1 环境: Windows 7 旗舰版 OPPO R9m二、下载链接 用到的软件连接都会在这里更新 链接: https://pan.baidu.com/s/1vQ-US3SiFG8rImkdWn_amg?pwd=1111 提取码: 1111三、O…

实用指南:HTTP(web缓存与历史迭代)

实用指南:HTTP(web缓存与历史迭代)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

详细介绍:BMAD框架实践:掌握story-checklist提升用户故事质量

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

高明网站建设公司松江企业网站建设

docker run --rm -v /path/to/your/microservice:/app -w /app maven:latest mvn clean package 解释一下上面的命令: docker run:运行Docker容器。--rm:在容器运行结束后自动删除容器,避免堆积未使用的容器。-v /path/to/you…

一般做推广网站的客户需求仕什么安徽网络优化公司

ceil — 进一法取整说明float ceil ( float value )返回不小于 value 的下一个整数,value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float,因为 float 值的范围通常比 integer 要大。例子 1. ceil() 例子echo ceil(4.3); // 5echo ceil(9.999);…

2025.10.1——1橙2黄

普及- P14114 [IAMOI R4] 皇后 赛时T2,30min调出 普及/提高- P14113 [IAMOI R4] 彻底怒了 赛时T1,调了1h,服了 P14115 [IAMOI R4] 木桶效应 赛时T3,调了20min

virtualbox新版安装指定路径--7.2版本之后

本文主要介绍如何暗黄新版virtualbox虚拟机软件到指定安装路径的方法目录前言初步解决办法最终解决办法 前言 在virtualbox的7.0.12版本之后,Windows的安装路径不能随意指定,必须符合指定安全要求,默认安装路径才可…

2025 年隔音门厂家 TOP 企业品牌推荐排行榜,剧院,ktv,防火 ,软包 ,录音棚 ,静音 ,钢质 ,实验室 ,直播间隔音门推荐这十家公司!

在现代社会,随着城市化进程的加快和人们对生活品质要求的提升,隔音门的需求日益增长。然而,当前隔音门市场却存在诸多问题。市场上产品质量参差不齐,部分厂家为追求利润,偷工减料,导致隔音效果远未达到宣传标准,…

2025年算法备案咨询服务公司TOP最新推荐排行榜单,互联网信息服务,深度合成服务,ai算法备案,互联网算法备案,国家生成式人工智能服务备案咨询公司

引言随着人工智能技术的爆发式发展,算法已成为驱动互联网信息服务、深度合成服务、生成式 AI 应用等领域创新的核心动力。而算法备案作为国家规范算法应用、防范算法风险、保障用户权益的关键监管举措,正成为企业合规…

2025 年热浸塑钢管工厂 TOP 企业品牌推荐排行榜 ,nhap/NHAP/ 电力 / N-HAP/200 / 新型防腐热浸塑钢管 / 热浸塑穿线钢管 / 电力钢管 / 电力涂塑钢管推荐!

在热浸塑钢管行业,随着市场需求的不断增长,各类制造企业纷纷涌现,但行业也面临着诸多问题。部分企业为追求短期利益,在生产过程中偷工减料,导致产品质量参差不齐,防腐、耐磨等关键性能不达标,给工程安全埋下隐患…

深入解析:Python 类基础详解

深入解析:Python 类基础详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

网站单页发布wordpress标题关键词描述

解耦 解耦是指解除不同模块或系统之间的紧密关联或相互依赖关系。 在技术领域,通过解耦可以使各个部分相对独立地进行开发、维护和修改,而不会对其他部分产生过多的直接影响。 这样能提高系统的灵活性、可扩展性和可维护性。 常见解耦方式 包括&…

手机ftp传网站文件在哪里wordpress hta

怎么把mov格式的视频转换mp4?在这个数字化时代,视频已经跻身为生活的核心元素,然而,制作和分享视频时选择合适的格式变得至关重要,在庞大的视频格式库中,我们熟知的包括mov和MP4,它们各有特色&a…

凯里网站设计仪征网站建设公司哪家好

1、基本语法 在python中,一般处理和捕获异常会用到这个结构: try:python程序 except 错误类型1:python程序 except 错误类型2:python程序 except 其他错误类型:python程序 finally:python程序首先一定会进入try中执行try的python程序如果报错 则进入exc…

信创PC收藏网址

重磅更新 |《2025年上半年信创PC竞争力矩阵》出炉! https://mp.weixin.qq.com/s/dEnKdrKgkW6N27TUY_4J2g