当前位置: 首页 > article >正文

Transformer为什么需要多头注意力(Multi-Head Attention)?如果没有多头会怎么样?

直接回答

关键点:

Transformer 中的多头注意力(Multi-Head Attention)允许模型同时关注输入数据的不同方面,提升性能。
如果没有多头,模型可能无法捕捉复杂关系,表现会下降。

什么是多头注意力?

Transformer 是一种用于处理序列数据的神经网络架构,广泛用于机器翻译和语言模型。多头注意力是其核心部分,它让模型通过多个“头”并行学习输入数据的不同特征。每个头可以专注于不同的关系,比如语法结构或语义含义,输出后再合并成一个更全面的表示。

为什么需要多头?

多头让模型能同时捕捉多种模式。例如,在翻译任务中,一个头可能关注词序,另一个头关注语义关联。这种并行处理帮助模型更好地理解复杂数据,性能更优。研究显示,多头能提升模型的泛化能力,尤其在处理长序列或复杂任务时。

如果没有多头会怎么样?

如果只有一个头,模型必须用单一注意力机制处理所有信息,可能无法捕捉数据的多样性,表现会变差。就像用一个滤镜看世界,可能会漏掉重要细节。实验表明,单头模型在复杂任务上通常不如多头模型,特别是在需要捕捉多种关系的场景。

令人意外的细节:参数数量可能相同

有趣的是,多头和单头的参数总数在某些情况下可以相同,但多头仍表现更好。这说明多头的优势不只是计算能力,而是让模型能并行学习不同子空间的特征。

详细分析报告

Transformer 架构是现代深度学习中处理序列数据(如自然语言处理和图像处理)的核心技术,自 2017 年 Vaswani 等人在论文“Attention Is All You Need”中提出以来,广泛应用于机器翻译、大语言模型(如 GPT)和视觉任务(如 Vision Transformer)。其中,多头注意力(Multi-Head Attention)是 Transformer 的关键组件,赋予了模型强大的并行处理能力。本报告深入分析为何 Transformer 需要多头注意力,以及如果没有多头会产生什么影响。

1.Transformer 和多头注意力的基础

Transformer 是一种基于自注意力机制的架构,摒弃了传统循环神经网络(RNN)的序列依赖,代之以并行计算的注意力机制。多头注意力是其核心创新,具体实现如下:
单头注意力(Single-Head Attention):模型通过查询(Query)、键(Key)和值(Value)计算注意力权重,生成加权和表示输入的上下文。
多头注意力:将注意力机制复制多个“头”,每个头有独立的查询、键、值矩阵( W i Q , W i K , W i V W_i^Q, W_i^K, W_i^V WiQ,WiK,WiV),并行计算后将结果拼接(Concatenate)并通过线性变换( W O W^O WO)输出。公式为:
MultiHead ( Q , K , V ) = Concat ( head 1 , … , head h ) W O \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, \dots, \text{head}_h) W^O MultiHead(Q,K,V)=Concat(head1,,headh)WO
其中, head i = Attention ( Q W i Q , K W i K , V W i V ) \text{head}_i = \text{Attention}(Q W_i^Q, K W_i^K, V W_i^V) headi=Attention(QWiQ,KWiK,VWiV),h 为头数。
在标准 Transformer 中,如基线模型,头数 h = 8,模型维度 d model = 512 d_{\text{model}} = 512 dmodel=512,每个头的维度为 d model / h = 64 d_{\text{model}} / h = 64 dmodel/h=64

2. 多头注意力的优势

多头注意力的设计目标是让模型能够从输入数据的不同“子空间”中学习多种表示。以下是其主要优势:

并行捕捉多样性特征:每个头可以专注于不同的输入关系。例如,在机器翻译中,一个头可能关注局部语法结构(如词序),另一个头关注全局语义(如主题一致性)。研究如 Vig 等人的“Visualizing and Understanding Transformer Models”(Visualizing Transformer Models)通过可视化发现,不同头确实在学习不同的语言特征,如标点符号、动词短语等。

提升模型泛化能力:多头允许模型并行处理多个注意力模式,类似于集成学习中的多个模型组合。这种多样性有助于模型更好地泛化到未见过的数据,尤其在长序列或复杂任务中。

计算效率与维度扩展:尽管多头增加了头数,但每个头的维度降低(从 d model d_{\text{model}} dmodel d model / h d_{\text{model}} / h dmodel/h),计算复杂度保持为 O ( n 2 d ) O(n^2 d) O(n2d),其中 n 为序列长度,d 为模型维度。这种设计在 GPU 上易于并行化,适合大规模训练。

实验证据:虽然原始论文未直接比较单头与多头,但后续研究(如对超参数的分析)显示,增加头数通常提升性能。例如,在 Dosovitskiy 等人“An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale”(Transformers for Image Recognition)中,Vision Transformer 使用多头注意力捕捉空间和通道信息,头数增加后模型在图像分类任务上表现更好。

3. 如果没有多头会怎么样?

如果 Transformer 仅使用单头注意力(即 h = 1),模型将失去多头带来的并行性和多样性,以下是可能的影响:

单一注意力模式的局限:单头必须用一个注意力机制处理所有输入关系,可能无法同时捕捉语法、语义等多方面特征。就像用一个滤镜看世界,可能会漏掉重要细节,导致模型表现下降。

性能下降:研究表明,单头模型在复杂任务上的表现通常不如多头模型。例如,在机器翻译任务中,单头可能无法有效处理长距离依赖,而多头能通过不同头分别关注局部和全局信息。

参数配置的影响:为了公平比较,单头模型的查询、键、值矩阵维度应为
d model × d model d_{\text{model}} \times d_{\text{model}} dmodel×dmodel,参数总数为 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2,而多头模型的总参数为 3 × d model 2 + d model 2 3 \times d_{\text{model}}^2 + d_{\text{model}}^2 3×dmodel2+dmodel2(包括
W O W^O WO)。尽管参数总数可能接近,但多头的并行学习能力使其表现更优。

实际案例:某些轻量级 Transformer 变体(如 MobileViT)减少头数以提升效率,但这通常以牺牲性能为代价,适用于资源受限的场景(如移动设备),而非追求最高准确率的场景。

4. 参数数量与性能的对比

一个有趣的观察是,多头和单头的参数总数在某些配置下可能相同,但多头仍表现更好。这表明多头的优势不在于计算资源,而在于其并行学习不同子空间的能力。例如:
单头:
W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 各为 d model × d model d_{\text{model}} \times d_{\text{model}} dmodel×dmodel,总参数 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2
多头:每个头的 W i Q , W i K , W i V W_i^Q, W_i^K, W_i^V WiQ,WiK,WiV d model × ( d model / h ) d_{\text{model}} \times (d_{\text{model}} / h) dmodel×(dmodel/h),总参数为 h × 3 × d model × ( d model / h ) + d model 2 = 3 × d model 2 + d model 2 = 4 × d model 2 h \times 3 \times d_{\text{model}} \times (d_{\text{model}} / h) + d_{\text{model}}^2 = 3 \times d_{\text{model}}^2 + d_{\text{model}}^2 = 4 \times d_{\text{model}}^2 h×3×dmodel×(dmodel/h)+dmodel2=3×dmodel2+dmodel2=4×dmodel2

尽管多头参数略多,但其并行性带来的性能提升远超单头,尤其在需要捕捉多种关系的任务中。

5. 实际应用中的多头

多头注意力的实际应用广泛,例如:

机器翻译:多头帮助模型同时关注词序、语法和语义,提升翻译质量。

大语言模型:如 GPT 系列,使用多头捕捉上下文依赖,生成更连贯的文本。

视觉任务:Vision Transformer 使用多头捕捉图像的空间和通道信息,显著提升分类性能。

6. 总结与展望

多头注意力是 Transformer 成功的关键,它通过并行学习不同子空间的特征,显著提升模型的表达能力和泛化性能。如果没有多头,模型可能无法捕捉数据的多样性,性能会下降,尤其在复杂任务中。未来研究可进一步探索头数的优化(如减少头数以提升效率)以及不同头的作用分配,以平衡性能和计算成本。

多头参数量如何计算?

详细解释这个公式是如何推导出来的。这个公式计算的是 Transformer 中多头注意力机制(Multi-Head Attention)涉及的总参数数量。我们一步步拆解它,确保清晰易懂。

背景知识
在 Transformer 的多头注意力机制中,输入的查询(Query, Q Q Q)、键(Key, K K K)和值(Value, V V V)会通过线性变换生成每个头的表示。每个头有独立的线性变换矩阵,即 W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV。最后,所有头的输出会被拼接(Concatenate)并通过一个输出变换矩阵 W O W^O WO 转换为最终结果。
以下是关键参数设定:
d model d_{\text{model}} dmodel:模型的总维度(例如,标准 Transformer 中 d model = 512 d_{\text{model}} = 512 dmodel=512)。
h h h:头的数量(例如,标准 Transformer 中 h = 8 h = 8 h=8)。
每个头的维度: d model / h d_{\text{model}} / h dmodel/h(例如, 512 / 8 = 64 512 / 8 = 64 512/8=64)。
我们需要计算的参数包括:

  1. 每个头的查询、键、值矩阵( W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV)。
  2. 输出变换矩阵( W O W^O WO)。

推导过程

1. 每个头的参数计算 W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV

矩阵维度:

对于每个头 i i i,输入是 d model d_{\text{model}} dmodel 维的向量,经过线性变换生成 d model / h d_{\text{model}} / h dmodel/h 维的输出。因此:
W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV 的维度都是 d model × ( d model / h ) d_{\text{model}} \times (d_{\text{model}} / h) dmodel×(dmodel/h)
这里, d model d_{\text{model}} dmodel 是输入维度, d model / h d_{\text{model}} / h dmodel/h 是输出维度(每个头的维度)。

单个矩阵的参数数量:

一个 d model × ( d model / h ) d_{\text{model}} \times (d_{\text{model}} / h) dmodel×(dmodel/h) 的矩阵包含: d model × d model h d_{\text{model}} \times \frac{d_{\text{model}}}{h} dmodel×hdmodel个参数。

每个头的参数:

每个头有 3 个矩阵( W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV),所以单个头的参数数量为:
3 × d model × d model h 3 \times d_{\text{model}} \times \frac{d_{\text{model}}}{h} 3×dmodel×hdmodel

所有头的参数:

h h h 个头,因此所有头的总参数数量为:
h × 3 × d model × d model h h \times 3 \times d_{\text{model}} \times \frac{d_{\text{model}}}{h} h×3×dmodel×hdmodel
注意,这里的 h h h 和分母的 h h h 可以抵消,简化为:
3 × d model × d model = 3 × d model 2 3 \times d_{\text{model}} \times d_{\text{model}} = 3 \times d_{\text{model}}^2 3×dmodel×dmodel=3×dmodel2

2. 输出变换矩阵 W O W^O WO 的参数计算

拼接后的维度:

每个头的输出是 d model / h d_{\text{model}} / h dmodel/h 维向量, h h h 个头拼接后得到一个 d model d_{\text{model}} dmodel 维的向量(因为 h × ( d model / h ) = d model h \times (d_{\text{model}} / h) = d_{\text{model}} h×(dmodel/h)=dmodel)。

W O W^O WO 的作用:

W O W^O WO 将拼接后的 d model d_{\text{model}} dmodel 维向量变换为最终的 d model d_{\text{model}} dmodel 维输出。因此, W O W^O WO 的维度是:
d model × d model d_{\text{model}} \times d_{\text{model}} dmodel×dmodel

W O W^O WO 的参数数量:

一个 d model × d model d_{\text{model}} \times d_{\text{model}} dmodel×dmodel 的矩阵包含:
d model × d model = d model 2 d_{\text{model}} \times d_{\text{model}} = d_{\text{model}}^2 dmodel×dmodel=dmodel2
个参数。

3. 总参数数量

将两部分加起来:

  • 所有头的参数: 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2
  • 输出变换矩阵的参数: d model 2 d_{\text{model}}^2 dmodel2

总参数数量为:
h × 3 × d model × d model h + d model 2 = 3 × d model 2 + d model 2 = 4 × d model 2 h \times 3 \times d_{\text{model}} \times \frac{d_{\text{model}}}{h} + d_{\text{model}}^2 = 3 \times d_{\text{model}}^2 + d_{\text{model}}^2 = 4 \times d_{\text{model}}^2 h×3×dmodel×hdmodel+dmodel2=3×dmodel2+dmodel2=4×dmodel2

举例验证

假设 d model = 512 d_{\text{model}} = 512 dmodel=512 h = 8 h = 8 h=8
每个头的维度: 512 / 8 = 64 512 / 8 = 64 512/8=64
每个 W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV 的维度: 512 × 64 512 \times 64 512×64
单个矩阵参数: 512 × 64 = 32 , 768 512 \times 64 = 32,768 512×64=32,768
每个头的参数: 3 × 32 , 768 = 98 , 304 3 \times 32,768 = 98,304 3×32,768=98,304
所有头的参数: 8 × 98 , 304 = 786 , 432 8 \times 98,304 = 786,432 8×98,304=786,432
W O W^O WO 的维度: 512 × 512 512 \times 512 512×512
W O W^O WO 参数: 512 × 512 = 262 , 144 512 \times 512 = 262,144 512×512=262,144
总数: 786 , 432 + 262 , 144 = 1 , 048 , 576 786,432 + 262,144 = 1,048,576 786,432+262,144=1,048,576
直接用公式:
4 × d model 2 = 4 × 51 2 2 = 4 × 262 , 144 = 1 , 048 , 576 4 \times d_{\text{model}}^2 = 4 \times 512^2 = 4 \times 262,144 = 1,048,576 4×dmodel2=4×5122=4×262,144=1,048,576

结果一致,验证了公式的正确性。

解释中的关键点

  1. 为什么 h h h 抵消了:
    每个头的维度减少为 d model / h d_{\text{model}} / h dmodel/h,但头数增加为 h h h,两者相乘后,参数数量与头数无关,保持为 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2
  2. W O W^O WO 的必要性:
    多头注意力不仅并行计算,还需要通过 W O W^O WO 整合所有头的信息,增加了一个 d model 2 d_{\text{model}}^2 dmodel2 的参数项。
  3. 与单头对比:
    单头没有 W O W^O WO(因为无需拼接),只需 W Q W^Q WQ W K W^K WK W V W^V WV,总参数为 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2。多头多了 d model 2 d_{\text{model}}^2 dmodel2,但性能提升远超参数增加的代价。

总结

公式 h × 3 × d model × ( d model / h ) + d model 2 = 4 × d model 2 h \times 3 \times d_{\text{model}} \times (d_{\text{model}} / h) + d_{\text{model}}^2 = 4 \times d_{\text{model}}^2 h×3×dmodel×(dmodel/h)+dmodel2=4×dmodel2 来自:

  • 所有头的 W i Q W_i^Q WiQ W i K W_i^K WiK W i V W_i^V WiV 贡献 3 × d model 2 3 \times d_{\text{model}}^2 3×dmodel2
  • 输出矩阵 W O W^O WO 贡献 d model 2 d_{\text{model}}^2 dmodel2

这个推导展示了多头注意力的参数构成,也解释了为何多头设计在参数略增的情况下,能显著提升模型性能。

关键引用:

Visualizing and Understanding Transformer Models
An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

后记

2025年2月21日20点43分于上海。在Grok 3 deepsearch 辅助下完成。

相关文章:

Transformer为什么需要多头注意力(Multi-Head Attention)?如果没有多头会怎么样?

直接回答 关键点: Transformer 中的多头注意力(Multi-Head Attention)允许模型同时关注输入数据的不同方面,提升性能。 如果没有多头,模型可能无法捕捉复杂关系,表现会下降。 什么是多头注意力&#xff…...

我们来学人工智能 -- DeepSeek客户端

DeepSeek客户端 题记使用后记系列文章 题记 我选择了 Cherry Studio是国内产品由CherryHQ团队开源是一个平台在这里,有豆包、kimi、通义千问的入口当然,最主要是作为大模型的UI正如标题,这里,作为DeepSeep的客户端 使用 下载本…...

LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)

LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34) 题目描述:输入输出样例:题解:解题思路:思路一(一次二分查找挨个搜索):思路二(两次二…...

洛谷 P1102 A-B 数对(详解)c++

题目链接:P1102 A-B 数对 - 洛谷 1.题目分析 2.算法原理 解法一:暴力 - 两层for循环 因为这道题需要你在数组中找出来两个数,让这两个数的差等于定值C就可以了,一层for循环枚举A第二层for循环枚举B,求一下看是否等于…...

计算机视觉:主流数据集整理

第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…...

2025软件测试面试常问的题(详细解析)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 测试技术面试题 1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平…...

项目POC的作用是什么

在项目管理和开发中,POC(Proof of Concept,概念验证)作为一个关键的步骤,扮演着非常重要的角色。POC的作用主要是验证某个概念、技术或方案的可行性,通过小规模实验或原型验证项目的关键假设,帮…...

初探动态规划--记忆化搜索

记忆化搜索 暴力dfs 记录答案 记忆化搜索是一种优化技术,结合了暴力深度优先搜索 (dfs) 和记录答案的方式。 在动态规划的学习过程中,我们可以将问题划分为以下阶段:dfs暴力搜索,记忆化搜索,以及最终的递推。 动态规…...

java开发——为什么要使用动态代理?

举个例子:假如有一个杀手专杀男的,不杀女的。代码如下: public interface Killer {void kill(String name, String sex);void watch(String name); }public class ManKiller implements Killer {Overridepublic void kill(String name, Stri…...

集合 数据结构 泛型

文章目录 1.Collection集合1.1数组和集合的区别【理解】1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】内部类匿名内部类Lambda表达式 1.4Collection集合的遍历【应用】1.5增强for循环【应用】 2.List集合2.1List集合的概述和特点【记忆】2.2List集合的特有方…...

特征提取:如何从不同模态中获取有效信息?

在多模态学习中,特征提取是一个至关重要的过程。它是将原始数据(如文本、图像、视频和语音等)转化为机器能够理解和处理的特征的核心步骤。不同于传统的单一模态任务,在多模态学习中,如何有效地从每种模态中提取出有意…...

vue-treeselect显示unknown的问题及解决

问题 解决办法 去node-modules包里面找到这个组件的源码,在它dist文件里面找到这个文件,然后搜索unknown,把它删掉就可以解决了。...

代码随想录-训练营-day35

309. 买卖股票的最佳时机含冷冻期 - 力扣(LeetCode) 这个题比起我们的买卖股票二来说多了一个冷冻期的说法,也就是我们卖出股票的第二天无法买入股票。 这样对我们而言,dp数组的含义,或者说dp数组中的状态显然就不能是…...

AI汽车新风向:「死磕」AI底盘,引爆线控底盘新增长拐点

2025开年,DeepSeek火爆出圈,包括吉利、东风汽车、上汽、广汽、长城、长安、比亚迪等车企相继官宣接入,掀起了“AI定义汽车”浪潮。 而这股最火的AI汽车热潮,除了深度赋能智能座舱、智能驾驶等AI竞争更白热化的细分场景&#xff0…...

【Blender】二、建模篇--06,曲线建模/父子级和蒙皮修改器

00:00:03,620 --> 00:00:09,500 前几节可能我们已经做了很多种类型的模型了 但是有一种类型 我们一直避开就是这种管道 1 00:00:10,050 --> 00:00:19,370 藤条头发啊 衣服架子啊这种弯弯绕绕的 需要一定柔软度的模型 那么这节课呢我们都来集中看一下曲线的模型 我们应该…...

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令:本地上传到远端 rz 命令:用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令,它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口,方便用户从本…...

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景 1. CUDA(Compute Unified Device Architecture) 作用: GPU 通用计算:CUDA 是 NVIDIA 的并行计算平台和编程模型,允许开发者直接利用 GPU 的并行计算能力,加速通用计算任…...

【架构】微内核架构(Microkernel Architecture)

微内核架构(Microkernel Architecture) 核心思想 微内核架构(又称插件式架构)通过最小化核心系统,将可扩展功能以插件模块形式动态加载,实现高内聚低耦合。其核心设计原则: 核心最小化:仅封装基础通用能力(如插件管理、通信机制、安全校验)功能插件化:所有业务功能…...

公务员行测之类比推理-新手小白

类比推理 前言学习类比推理1 语义关系1.1 近义1.2 反义1.3 象征、比喻 2 逻辑关系2.1 全同2.2 并列(1)矛盾并列(2)反对并列2.3 包容(1)种属(2)组成部分2.4 交叉2.5 对应关系&#xf…...

详解Nginx 配置

一、Nginx 介绍 Nginx 是一款轻量级的 Web 服务器 / 反向代理服务器及电子邮件(IMAP/POP3)代理服务器。它由俄罗斯的程序设计师 Igor Sysoev 所开发,自 2004 年发布以来,凭借其高性能、低内存消耗、高并发处理能力等特点&#xf…...

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间(静态链接) 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的,也就是说这个.o文件中调用函数的的跳转地址都会被设定为0(当然这个函数是在其他.…...

83_CentOS7通过yum无法安装软件问题解决方案

大家好,我是袁庭新。很多小伙伴在CentOS 7中使用yum命令安装软件时,出现无法安装成功的问题,今天给大家分享一套解决方案~ 在CentOS 7中,yum是一个常用的包管理工具,它基于RPM包管理系统。如果你发现yum无法使用,可能是由于多种原因造成的。以下是一些解决步骤,可以帮…...

在PyTorch中使用插值法来优化卷积神经网络(CNN)所需硬件资源

插值法其实就是在已知数据点之间估计未知点的值。通过已知的离散数据点,构造一个连续的曲线函数,预测数据点之间的空缺值是什么并且自动填补上去。 适用场景: 在卷积神经网络(CNN)中的应用场景中,经常遇到计算资源有限,比如显存不够或者处理速度慢,需要用插值来降低计…...

数据包在客户端和服务端,以及网络设备间如何传输的?

声明:文章中图片来自于网络收集,整体流程自己梳理。 目录 问题:如下socket客户端请求数据包如何传输的? 拓扑环境 数据包在分层间传输 网络分层L2/L3/L4 数据包收发-在各分层间变化 各层头部中-核心信息 数据包在不同设备…...

用Python实现Excel数据同步到飞书文档

目录 一、整体目标 二、代码结构拆解 三、核心逻辑讲解(重点) 1. 建立安全连接(获取access_token) 2. 定位文档位置 3. 数据包装与投递 四、异常处理机制 五、函数讲解 get_access_token() 关键概念解释 1. 飞书API访问…...

25林业研究生复试面试问题汇总 林业专业知识问题很全! 林业复试全流程攻略 林业考研复试真题汇总

25 林业考研复试,专业面试咋准备?学姐来支招! 宝子们,一提到林业考研复试面试,是不是就慌得不行,感觉老师会扔出一堆超难的问题?别怕别怕,其实林业考研复试就那么些套路,…...

js版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]新特性

ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言,本文讲述Javascript[ECMAScript]版本ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13、ES14[2023]的新特性,帮助朋友们更好的熟悉和使用Javascript ES5 1.严格模式 use strict2.Object getPrototypeOf,返回一个对象的原…...

vxe-table实现动态列

vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头,按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列;我的需求是,最初只知道表格的固定两列,查询数…...

尚硅谷爬虫note009

一、jsonpath 1.安装 pip install jsonpath 2.使用 只能解析本地文件 .json文件 {"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century&qu…...

verilog笔记

Verilog学习笔记(一)入门和基础语法BY电棍233 由于某些不可抗拒的因素和各种的特殊原因,主要是因为我是微电子专业的,我需要去学习一门名为verilog的硬件解释语言,由于我是在某西部地区的神秘大学上学,这所…...