BERT 详解
BERT简介
BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息,从而在各种 NLP 任务中表现出色。以下是 BERT 模型的详细讲解,包括其架构、训练方法、应用场景和使用方法。
1. BERT 的基本概念
1.1 双向性
传统的语言模型通常是单向的,即只能从前向后(前向模型)或从后向前(后向模型)捕捉上下文信息。而 BERT 是双向的,能够在同一时间捕捉到词语的前后上下文信息。这种双向性使得 BERT 能够更好地理解词语的多义性。
单向编码
单向编码指的是在编码过程中,模型只能利用到当前位置之前的文本信息(或只能利用到当前位置之后的文本信息,但这种情况较少见),而无法同时利用到当前位置前后的文本信息。这种编码方式使得模型在处理文本时具有一种“前瞻性”或“回顾性”,但缺乏全局的上下文理解能力。
GPT是一个典型的采用单向编码的预训练语言模型。GPT使用Transformer的解码器部分作为其主要结构,通过自回归的方式进行训练,即模型在生成下一个词时只能看到之前的词,无法看到之后的词。
双向编码
双向编码则允许模型在编码过程中同时利用到当前位置前后的文本信息,从而能够更全面地理解文本的上下文。这种编码方式使得模型在处理文本时具有更强的语义理解能力和更丰富的信息来源。
BERT是一个典型的采用双向编码的预训练语言模型。BERT通过掩码语言模型(MLM)的方式进行训练,即随机掩盖文本中的部分词汇,然后让模型预测这些被掩盖的词汇。
举个例子:考虑一个文本序列“今天天气很好,我们决定去公园散步。”
- 在单向编码中,每个词或标记的编码仅依赖于其之前的词或标记。因此,在编码“决定”这个词时,模型只会考虑“今天”、“天气”、“很好”和“我们”这些在它之前的词。
- 在双向编码中,每个词或标记的编码都会同时考虑其前后的词或标记。因此,在编码“决定”这个词时,模型会同时考虑“今天”、“天气”、“很好”以及之后的“去公园散步”等词,从而更全面地理解整个句子的语义。
1.2 Transformer 架构
BERT 基于 Transformer 架构,这是一种基于自注意力机制(self-attention mechanism)的神经网络模型。Transformer 架构最初由 Vaswani 等人在 2017 年的论文《Attention is All You Need》中提出,它摒弃了传统的 RNN 和 CNN,完全依赖于自注意力机制来处理序列数据。
2. BERT 的架构
从上图左侧,我们可以看到BERT包含三种模块:
- 最底层⻩⾊标记的Embedding模块。
- 中间层蓝⾊标记的Transformer模块。
- 最上层绿⾊标记的预微调模块。
上图右侧是Encoder block的内部模块图。图中蓝色模块被画成了两层,这表示BERT模型中堆叠了多个Transformer编码器块。每个编码器块都包含自注意力机制(Self-Attention Mechanism)和前馈神经网络(Feed-Forward Neural Network),以及层归一化(Layer Normalization)和残差连接(Residual Connections)。
2.1 输入表示(Embedding模块)
BERT 的输入(Embedding模块)表示由三个部分组成:
- Token Embeddings:每个词的词嵌入, 输入文本中的每个单词或字符转换为一个固定维度的向量。Base版为768维,Large版为1024维。
- Segment Embeddings:用于区分句子 A 和句子 B 的段落嵌入, 单词或字符在句子中的位置信息。BERT中的位置嵌入是可学习的,它会随着模型的训练而更新,非固定的三角函数
- Position Embeddings:用于表示词在句子中的位置的位置嵌入,用于区分同一输入序列中不同句子的来源。对于多句输入,BERT会为每个句子分配一个不同的段编号,来区分它们。Segment Embeddings的取值通常是0和1,如果输入包含两个句子,通常第一个句子的token会被赋予全0的向量,第二个句子的token会被赋予全1的向量。
下图是一个示例(Position Embeddings)。
输入表示的公式为:
Input Embedding = Token Embedding + Segment Embedding + Position Embedding
2.2 Transformer 编码器
BERT 使用多层 Transformer 编码器来处理输入。每一层编码器包含两个子层:
- 多头自注意力机制(Multi-Head Self-Attention):用于捕捉词语之间的依赖关系。
- 前馈神经网络(Feed-Forward Neural Network):用于对每个词的表示进行非线性变换。
- 每层编码器还包括残差连接(Residual Connections)和层归一化(Layer Normalization)。
3. BERT 的训练方法
3.1 预训练任务
BERT 通过两个预训练任务来学习语言表示:
- Masked Language Model (MLM):随机掩盖输入句子中的某些词,然后让模型预测这些被掩盖的词。这种方法强制模型理解词语的上下文信息。
- Next Sentence Prediction (NSP):给模型两个句子,让模型判断第二个句子是否是第一个句子的下一个句子。这个任务帮助模型理解句子之间的关系。
1、Masked Language Model (MLM)
Masked Language Model,即遮蔽语言模型,是BERT预训练的一个重要部分。在这一阶段,模型的任务是预测输入句子中被随机遮蔽(masked)掉的部分单词。
- 输入文本处理:首先,对于输入的句子,随机选择句子中15%的单词进行遮蔽。对于每个被选中的单词,有80%的概率直接用[MASK]标记替换,10%的概率用随机的一个单词替换(这有助于模型学习理解上下文的重要性,而不仅仅是依赖于[MASK]标记),剩下的10%则保持不变(这有助于模型在微调阶段更好地处理未遮蔽的单词)。
- 模型预测:模型的目标是根据上下文预测这些被遮蔽单词的原始值。这种机制促使BERT能够深入理解文本中的语义关系。
我们来看一个例子,假设有一句话:my dog is hairy
1)80%的时候是[MASK]。如,my dog is hairy——>my dog is [MASK]
2)10%的时候是随机的其他token。如,my dog is hairy——>my dog is apple
3)10%的时候是原来的token。如,my dog is hairy——>my dog is hairy
2、Next Sentence Prediction (NSP)
Next Sentence Prediction,即下一句预测,是BERT预训练的另一个重要部分,旨在提高模型对句子间关系的理解能力。
- 句子对生成:在预训练时,模型不仅接收单个句子作为输入,还接收句子对。这些句子对可能是连续的(即真实的下一句),也可能是随机组合的(即非连续的)。
- 模型预测:对于每个句子对,模型需要预测第二个句子是否是第一个句子的真实下一句。这是一个简单的二分类任务,输出是一个[0, 1]范围内的值,表示第二个句子是第一个句子真实下一句的概率。
注:在BERT的后续版本中,Next Sentence Prediction(NSP)任务被废弃了。因为研究人员发现这个任务对下游任务的性能提升有限,因此在BERT的一些后续变体中被弃用了。
3.2 微调
预训练完成后,BERT 模型可以通过微调(Fine-Tuning)应用于各种下游任务,如文本分类、命名实体识别、问答等。微调过程中,模型的权重会被更新以适应特定任务。
1、句对分类
- 任务描述:句对分类任务涉及两个句子的输入,并需要模型判断这两个句子之间的关系或情感倾向等。
- 应用场景:例如,自然语言推断(NLI)任务,需要判断一个句子是否可以从另一个句子推断出来;或者语义文本相似性(STS)任务,需要评估两个句子的语义相似度。
如下图所示,句对分类的处理过程为:
- 输入处理:将两个句子(句对)作为输入,在两个句子之间添加特殊的分隔符[SEP],并在开头添加开始符[CLS],在末尾添加结束符[EOS]。[CLS]标记的输出表示将被用作句对分类的输入特征。
- 模型微调:在预训练的BERT模型基础上,添加一个全连接层作为输出层,用于句对分类任务。
- 特征提取:利用BERT编码器提取的句对表示,结合注意力机制等技术,捕捉两个句子之间的关系和交互信息,用于句对分类。
举例说明:下面有两个句子,我们要判断句子2是否是句子1的合理后续,即句子间的逻辑关系,如蕴含、中立、矛盾等。在这个例子中,可以视为一个蕴含关系,因为好天气通常适合户外运动。
句子1: "今天的天气真好。"
句子2: "适合去户外运动。"
BERT处理:将两个句子用[SEP]分隔,并在开头添加[CLS]标记,然后输入到BERT模型中。模型输出[CLS]标记的表示,用于句对关系的分类。
[CLS] 今天的天气真好。 [SEP] 适合去户外运动。 [SEP]
模型输出标签:entailment(蕴含)
注:实际的模型输出是一个概率分布,如[0.85, 0.1, 0.05],分别对应蕴含、中立、矛盾的概率,这里为了简化只给出了最可能的标签。
2、单句分类
-
任务描述:单句分类任务是将单个句子作为输入,并输出该句子的类别或情感倾向。
-
应用场景:如情感分析(判断文本是正面、负面还是中性)、垃圾邮件检测(判断邮件是否为垃圾邮件)等。
如下图所示,单句分类的处理过程为: -
输入处理:将单个句子作为输入,添加开始符[CLS]。
-
模型微调:与句对分类类似,在预训练的BERT模型基础上添加一个全连接层作为输出层,用于单句分类任务。通过微调整个模型来优化分类性能。
-
特征提取:利用BERT编码器提取的单个句子表示,捕捉句子中的语义信息,用于单句分类。
举例说明:下面的句子,我们将句子分类为正面情感或负面情感。在这个例子中,句子表达的是正面情感。
句子: "这部电影非常精彩!"
BERT处理:将句子作为输入,添加[CLS]标记,然后输入到BERT模型中。模型输出一个或多个类别的概率分布,选择概率最高的类别作为分类结果。
[CLS] 这部电影非常精彩!
输出概率分布:[0.95, 0.05],其中第一个值对应正面情感的概率,第二个值对应负面情感的概率。
3、文本问答
-
任务描述:文本问答任务涉及一个问题和一段文本(如文章或段落),模型需要从文本中找出问题的答案。
-
应用场景:如机器阅读理解(MRC),自动问答系统(FAQ)等。
如下图所示,文本回答的处理过程为: -
输入处理:将问题和相关文档或段落作为输入,使用特殊的分隔符[SEP]将问题和文档分隔开。
-
答案抽取:BERT模型通过编码器部分提取问题和文档的表示,然后可以结合指针网络等机制来定位答案在文档中的位置。在某些情况下,可能需要在BERT模型的基础上添加额外的层(如两个指针层)来指示答案的起始和结束位置。
-
微调任务:针对问答任务进行微调,优化模型在定位答案位置方面的性能。
举例说明:下方的问题,我们从文档中找出问题的答案。在这个例子中,答案是"北京不是省份"。
问题: "北京是中国的哪个省份?"
文档: "北京是中国的首都,位于华北地区,不是省份。"
BERT处理:将问题和文档分别作为输入,然后输入到BERT模型中。模型输出包括两个指针,用于指示答案在文档中的位置。
问题:[CLS] 北京是中国的哪个省份? [SEP]
文档:[CLS] 北京是中国的首都,位于华北地区,不是省份。 [SEP]
模型输出:
起始索引:(在文档中的位置,假设从0开始) 23
结束索引:(同样,假设从0开始) 25
注:这里的索引只是示意性的,实际输出可能依赖于文档的预处理和编码方式。
4、单句标注
-
任务描述:单句标注任务是对句子中的每个词或子词进行标注,如命名实体识别(NER)、词性标注(POS Tagging)等。
-
应用场景:在信息抽取、文本分析等领域有广泛应用。
如下图所示,单句标注的处理过程为: -
输入处理:将单个句子作为输入,不需要特殊的分隔符,但可能需要对句子进行分词处理以符合BERT的输入要求。
-
序列标注:将单句标注视为序列标注任务,其中句子中的每个单词或子词都被分配一个标签。BERT模型通过编码器部分提取句子的表示,然后结合序列标注层(如CRF层或softmax层)来为每个单词或子词分配标签。
-
微调模型:在BERT模型的基础上添加一个序列标注层,并通过微调来优化标注性能。微调过程中,模型会学习如何将句子的表示映射到对应的标签序列上。
举例说明:下方的句子,我们对句子中的实体进行标注,如公司名称、地点等。在这个例子中,"苹果公司"应被标注为公司名称,"美国加利福尼亚州库比蒂诺"应被标注为地点。
句子: "苹果公司是一家总部位于美国加利福尼亚州库比蒂诺的科技公司。"
BERT处理:将句子作为输入,并添加特定的标记。然后,使用BERT的编码器部分提取句子的表示,并结合序列标注层(如CRF或softmax层)来为每个单词或子词分配标签。最后,根据标签确定实体的类型和边界。
[CLS] 苹果公司是一家总部位于美国加利福尼亚州库比蒂诺的科技公司。
对句子分词:
苹果公司 是 一家 总部 位于 美国 加利福尼亚州 库比蒂诺 的 科技 公司 。
模型输出(假设为BIO标注方案):
- 苹果公司:B-ORG, I-ORG
- 美国:B-LOC
- 加利福尼亚州库比蒂诺:B-LOC
- 科技公司:B-ORG
注:BIO标注方案中,B表示实体的开始,I表示实体的内部,O表示非实体部分。此外,B和I后面通常会跟随一个表示实体类型的标签,如B-PER(人名)、B-LOC(地名)、B-ORG (机构)等。
4. BERT 的应用场景
4.1 文本分类
通过在预训练的 BERT 模型上添加一个分类层,可以进行文本分类任务。
4.2 命名实体识别
通过在预训练的 BERT 模型上添加一个序列标注层,可以进行命名实体识别任务。
4.3 问答
通过在预训练的 BERT 模型上添加一个问答层,可以进行问答任务。
4.4 语义相似度
通过比较两个句子的 BERT 表示,可以计算它们的语义相似度。
5. 使用 Hugging Face Transformers 库加载 BERT 模型
5.1 安装 Transformers 库
pip install transformers
5.2 导入必要的模块
from transformers import BertTokenizer, BertModel
5.3 加载预训练的 BERT 模型和分词器
# 选择一个预训练的 BERT 模型,例如 'bert-base-uncased'
model_name = 'bert-base-uncased'# 加载分词器
tokenizer = BertTokenizer.from_pretrained(model_name)# 加载模型
model = BertModel.from_pretrained(model_name)
5.4 使用模型进行推理
# 输入文本
text = "Hello, how are you?"# 对输入文本进行编码
inputs = tokenizer(text, return_tensors='pt')# 通过模型进行推理
outputs = model(**inputs)# 获取最后一层的隐藏状态
last_hidden_state = outputs.last_hidden_state# 打印输出
print(last_hidden_state)
相关文章:
BERT 详解
BERT简介 BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息&am…...
使用 MySQL 的 REPLACE() 函数轻松替换表中字段
前言 在数据库操作中,经常需要对存储的数据进行一些处理和修改,替换字段中的部分信息。MySQL 提供了多种字符串函数来帮助开发者完成这些任务。其中一个非常实用的函数就是 REPLACE()。 REPLACE() 函数简介 REPLACE() 函数用于在字符串中查找指定的子…...
Http 响应协议
HTTP的响应协议 响应数据格式 响应行 响应数据的第一行,包括协议、状态码、描述 响应头 从响应数据格式的第二行开始,也是以key:value的格式 响应体 和响应头之间有一个空行,是响应数据格式的最后一部分,用于存放响应的数据 常见响…...
TCP/IP 协议:网络世界的基石(2/10)
一、引言 在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。而在互联网的背后,TCP/IP 协议扮演着至关重要的角色,堪称互联网的基石。 TCP/IP 协议是一组用于数据通信的协议集合,它的名字来源于其中最重要的两个协议…...
Lua--1.基础知识
Lua基础知识 变量简单的4种变量类型复杂的4种变量类型type函数 字符串操作长度获取--#多行打印字符串拼接别的类型转字符串-- tostring()字符串提供的公共方法 运算符算术运算符-- - * / % ^条件运算符-- > < > < ~(不等于 是 ~)逻辑运算符-- and or not位运算、…...
【GPT】力量训练的底层原理?
详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…...
各种排序算法
前置知识 排序: 按照递增或者递减的顺序把数据排列好 稳定性: 值相等的元素在排序之后前后顺序是否发生了改变 内部排序: 数据放在内存上 外部排序: 数据放在磁盘上 内部排序 基于比较的排序 几大排序算法 1. 堆排序 特点: 思想: 1. 创建大根堆,把所有元素放在大根堆里…...
源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope
分析下ViewModel.viewModelScope public val ViewModel.viewModelScope: CoroutineScopeget() {val scope: CoroutineScope? this.getTag(JOB_KEY)if (scope ! null) {return scope}return setTagIfAbsent(JOB_KEY,CloseableCoroutineScope(SupervisorJob() Dispatchers.Ma…...
11.27周三F34-Day8打卡
文章目录 1. 学习让我感觉很棒。(什么关系?动作 or 描述?主语部分是?)解析答案:【解析答案分析】【对比分析】【拓展内容】2. 她忽然想起来钥匙放另一个包里了。解析答案:【拓展内容】3. 她来不来都没关系。(该由什么引导?这句话又属于什么关系,动作 or 描述?)解析答案…...
XG(S)-PON原理
前言 近年来,随着全球范围内接入市场的飞快发展以及全业务运营的快速开展,已有的PON技术标准在带宽需求、业务支撑能力以及接入节点设备和配套设备的性能提升等方面都面临新的升级需求XG(S)-PON(10G GPON)是在已有GPON技术标准上演进的增强下一代GPON技…...
C语言实例之9斐波那契数列实现
1. 斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多・斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为 “兔子数列”。 它的特点是从第三…...
YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】
目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述࿰…...
数据结构--Map和Set
目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…...
计算机操作系统——进程控制(Linux)
进程控制 进程创建fork()函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出(Exit)由于信号终止非…...
【前端】ES6基础
1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录,也可以使用默认目录 插件: 输入 Chinese,中文插件 安装: open in browser,直接右键文件…...
【排序算法 python实现】
排序算法 python实现 / 默写 # 汉诺塔 import copy import randomdef hanuo(n, a, b, c):if n 1:print(f{a} --> {c})returnhanuo(n - 1, a, c, b)print(f{a} --> {c})hanuo(n - 1, b, a, c)hanuo(3, A, B, C)# 冒泡排序 def bubble_sort(arr):n len(arr)for i in ran…...
Java图书管理系统(简易保姆级)
前面学习了这么多知识,为了巩固之前的知识,我们就要写一个图书管理系统来帮助大家复习,让大家的知识融会贯通~~~ 话不多说,直接开始今天的内容~ 首先呢,我们要有一个大体的思路: 实现效果思路有两种情况&a…...
嵌入式硬件设计:从概念到实现的全流程
嵌入式硬件设计是现代电子技术中一个至关重要的领域,涉及从硬件架构设计到硬件调试的各个方面。它为我们日常生活中的各类智能设备、家电、工业控制系统等提供了强大的支持。本文将介绍嵌入式硬件设计的基本流程、关键技术、常用工具以及常见的挑战和解决方案&#…...
第 4 章 Java 并发包中原子操作类原理剖析
原子变量操作类 AtomicLong 是原子性递增或者递减类,其内部使用 Unsafe 来实现,AtomicLong类也是在 rt.jar 包下面的,AtomicLong 类就是通过 BootStarp 类加载器进行加载的。这里的原子操作类都使用 CAS 非阻塞算法 private static final lon…...
从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中
文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…...
政安晨【零基础玩转各类开源AI项目】探索Cursor-AI Coder的应用实例
目录 Cusor的主要特点 Cusor实操 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! Cursor 是 Visual Studio Code 的一个分支。这使我们能够…...
CentOS 7 安装部署 KVM
1.关闭虚拟机 打开相关选项 打开虚拟机centos7 连接xshell 测试网络,现在就是没问题的,因为我们要使用网络源 安装 GNOME 桌面环境 安装KVM 模块 安装KVM 调试工具 构建虚拟机的命令行工具 qemu 组件,创建磁盘、启动虚拟机等 输入这条命令,…...
ArcGIS 10.2软件安装包下载及安装教程!
今日资源:ArcGIS 适用系统:WINDOWS 软件介绍:ArcGIS是一款专业的电子地图信息编辑和开发软件,提供一种快速并且使用简单的方式浏览地理信息,无论是2D还是3D的信息。软件内置多种编辑工具,可以轻松的完成地…...
一个专为云原生环境设计的高性能分布式文件系统
大家好,今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS,旨在解决海量云存储与各类应用平台(如大数据、机器学习、人工智能等)之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…...
基于深度学习CNN算法的花卉分类识别系统01--带数据集-pyqt5UI界面-全套源码
文章目录 基于深度学习算法的花卉分类识别系统一、项目摘要二、项目运行效果三、项目文件介绍四、项目环境配置1、项目环境库2、环境配置视频教程 五、项目系统架构六、项目构建流程1、数据集2、算法网络Mobilenet3、网络模型训练4、训练好的模型预测5、UI界面设计-pyqt56、项目…...
3174、清除数字
3174、[简单] 清除数字 1、题目描述 给你一个字符串 s 。你的任务是重复以下操作删除 所有 数字字符: 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 2、解题思路 遍历字符串: 我们需要逐个遍…...
C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
目录 题目: 无重复字符的最长子串 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口(同向双指针) 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口 题目: 无重复字符的最长子串 1. 题目解析 题目截图: 此题所说的…...
ADS学习笔记 6. 射频发射机设计
基于ADS2023 update2 更多ADS学习笔记:ADS学习笔记 1. 功率放大器设计ADS学习笔记 2. 低噪声放大器设计ADS学习笔记 3. 功分器设计ADS学习笔记 4. 微带分支定向耦合器设计ADS学习笔记 5. 微带天线设计 -1、射频发射机性能指标 在射频电路和系统中,发送…...
上海乐鑫科技一级代理商飞睿科技,ESP32-C61高性价比WiFi6芯片高性能、大容量
在当今快速发展的物联网市场中,无线连接技术的不断进步对智能设备的性能和能效提出了更高要求。为了满足这一需求,乐鑫科技推出了ESP32-C61——一款高性价比的Wi-Fi 6芯片,旨在为用户设备提供更出色的物联网性能,并满足智能设备连…...
QT QRadioButton控件 全面详解
本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、…...
怎么在id导入wordpress/小红书推广方案
我这里使用了DoTween插件 下载 请在Unity 的Asset Store里下载 实例代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening;public class TuBiao : MonoBehaviour {//创建一个变量 用来改变小图标 是上 还是下 的动…...
网站开发模块的需求/站长资源平台
2012-09-10 Eclipse 4.2发布之后,该版本与Eclipse 3.8之间的性能对比就成为了Eclipse社区中讨论最多的话题。 讨论最初由Cloudsmith创始人、Eclipse贡献者Thomas Hallgren引起,他称,他惊讶的发现,Eclipse 3.8的性能要比Eclipse 4.…...
浙江省城乡建设厅官网/独立站seo建站系统
很多朋友可能都会纳闷,我们的手机明明都是国产的,可为什么手机里的文件夹都是英文的呢?有时候想要删除一些无用文件夹释放一些内存,但是又因为看不懂无从下手。不要着急,今天小编就给大家科普一波。一、为何都是英文名…...
济南做网站建设的公司/必应搜索引擎网址
大数据技术逐渐成为互联网发展的核心,对于专业的大数据技术人才需求量也是越来越多。更多的人选择了快餐式教学——去专业的大数据培训学校学习。但哪些技术点重要呢?哪些又是大数据培训的关键呢? 大数据培训关键在于能够完成大数据处理&…...
网页设计网站导航怎么弄红色字体的/企业关键词优化最新报价
身为人品从来都是只爆炸不积攒的万年黑脸,我表示Ubuntu系统下的workbench也在刚打开电脑的时候出现了闪退的状况,直接摧毁了一张没来得及保存的数据库表,心塞。由是,我开启了直接在终端上打代码的苦逼日子。——尼古拉斯君华日记。…...
手机怎么样自己做网站/河北网站建设推广
问题 已经安装过serial和pyserial两个库了,但是运行代码依然报错。 检查是否安装,发现是没有问题的。 解决方法 将两个库都卸载掉,然后只安装pyserial,即可。 pip uninstall serial pip uninstall pyserialpip install pys…...