transformer知识汇总
transformer结构是google在2017年的《Attention Is All You Need》论文中提出,在NLP的多个任务上取得了非常好的效果。其最大特点是抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。
《Attention Is All You Need》论文地址:https://arxiv.org/abs/1706.03762
1. Transformer模型的思想
1.1. RNN的缺陷
在没有Transformer以前,大家做神经机器翻译用的最多的是基于RNN的Encoder-Decoder模型:
Encoder-Decoder模型有很强的能力,但只要是RNN,就会有梯度消失问题,核心原因是有递归的方式,作用在同一个权值矩阵上,使得如果这个矩阵满足条件的话,其最大的特征值要是小于1的话,那就一定会出现梯度消失问题。后来的LSTM和GRU也仅仅能缓解这个问题。
1.2. Transformer为何优于RNN
Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。 作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:
- 时间片ttt的计算依赖t−1t-1t−1时刻的计算结果,这样限制了模型的并行能力
- 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
Transformer的提出解决了上面两个问题:
- 首先它使用了Attention机制,将序列中的任意两个位置之间的距离缩小为一个常量;
- 其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。
2. Transformer模型架构
Transformer模型总体的样子如下图所示:总体来说,和Encoder-Decoder模型有些相似,左边是Encoder部分,右边是Decoder部分。
Encoder :输入是单词的Embedding,再加上位置编码,然后进入一个统一的结构,这个结构可以循环很多次(N次),也就是说有很多层(N层)。每一层又可以分成Attention层和全连接层,再额外加了一些处理,比如Skip Connection,做跳跃连接,然后还加了Normalization层。其实它本身的模型还是很简单的。
Decoder: 第一次输入是前缀信息,之后的就是上一次产出的Embedding,加入位置编码,然后进入一个可以重复很多次的模块。该模块可以分成三块来看,第一块也是Attention层,第二块是cross Attention,不是Self-Attention,第三块是全连接层。也用了跳跃连接和Normalization。
输出: 最后的输出要通过Linear层(全连接层),再通过softmax做预测。
再换用另一种简单的方式来解释Transformer的网络结构。
上图的Decoder的第一个输入,就是output的前缀信息。
3. Encoder模块
3.1. Self-Attention机制
上图的网络简化一下,理论上Encoder和Decoder只有一个模块,那也算是Transformer。
重点是看Encoder和Decoder里面的Attention机制是怎么运作的。
绿色的框(Encoder #1)就是Encoder里的一个独立模块。下面绿色的输入的是两个单词的embedding。这个模块想要做的事情就是想把x1x_{1}x1转换为另外一个向量r1r_{1}r1,这两个向量的维度是一样的。然后就一层层往上传。
转化的过程分成几个步骤,第一个步骤就是Self-Attention,第二个步骤就是普通的全连接神经网络。但是注意,Self-Attention框里是所有的输入向量共同参与了这个过程,也就是说,x1x_{1}x1和x2x_{2}x2通过某种信息交换和杂糅,得到了中间变量z1z_{1}z1和z2z_{2}z2。而全连接神经网络是割裂开的,和各自独立通过全连接神经网络,得到了r1r_{1}r1和r2r_{2}r2。
x1x_{1}x1和x2x_{2}x2互相不知道对方的信息,但因为在第一个步骤Self-Attention中发生了信息交换,所以 r1r_{1}r1和r2r_{2}r2各自都有从x1x_{1}x1和x2x_{2}x2得来的信息了 。
如果用直觉的方式来理解Self-Attention,假设左边的句子就是输入x1,x2,...,x14x_{1},x_{2},...,x_{14}x1,x2,...,x14,然后通过Self-Attention映射为z1,z2,...,z14z_{1},z_{2},...,z_{14}z1,z2,...,z14,为什么叫Self-Attention呢,就是一个句子内的单词,互相看其他单词对自己的影响力有多大。 比如单词it,它和句子内其他单词最相关的是哪个,如果颜色的深浅来表示影响力的强弱,那显然我们看到对it影响力最强的就是The和Animal这两个单词了。所以Self-Attention就是说,句子内各单词的注意力,应该关注在该句子内其他单词中的哪些单词上。
Attention和self-attention的区别
- 以Encoder-Decoder框架为例,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attention发生在Target的元素Query和Source中的所有元素之间。
- Self Attention,指的不是Target和Source之间的Attention机制,而是Source内部元素之间或者Target内部元素之间发生的Attention机制,也可以理解为Target=Source这种特殊情况下的Attention。
- 两者具体计算过程是一样的,只是计算对象发生了变化而已。
下图就是Self-Attention的计算机制。已知输入的单词embedding,即x1x_{1}x1和x2x_{2}x2,想转换成r1r_{1}r1和r2r_{2}r2。
转换方式如下:
先把转换成三个不一样的向量,分别叫做q1q_{1}q1、k1k_{1}k1、v1v_{1}v1,然后把转换成三个不一样的向量,分别叫做q2q_{2}q2、k2k_{2}k2、v2v_{2}v2。那把一个向量变换成另一个向量的最简单的方式就是乘以矩阵进行变换了。所以,需要三个不同的矩阵WQW^{Q}WQ、WKW^{K}WK、WvW^{v}Wv,即
可以注意到,上述过程中,不同的xix_{i}xi分享了同一个WQW^{Q}WQ、WKW^{K}WK、WvW^{v}Wv,通过这个操作,x1x_{1}x1和x2x_{2}x2已经发生了某种程度上的信息交换 。也就是说,单词和单词之间,通过共享权值,已经相互发生了信息的交换。
然后,有了q1q_{1}q1、k1k_{1}k1、v1v_{1}v1和q2q_{2}q2、k2k_{2}k2、v2v_{2}v2,用v1v_{1}v1和v2v_{2}v2两个向量的线性组合,来得到z1z_{1}z1和z2z_{2}z2,即:
进而得到组合的权重θ\thetaθ:
通过上述的整个流程,就可以把输入的x1x_{1}x1和x2x_{2}x2转换成了z1z_{1}z1和z2z_{2}z2。这就是Self-Attention机制。有了z1z_{1}z1和z2z_{2}z2,再通过全连接层,就能输出该Encoder层的输出r1r_{1}r1和r2r_{2}r2。
q、k、vq、k、vq、k、v 向量的思路自于比较早的信息检索领域,就是query,就是key,就是值,(k,v)就是键值对、也就是用query关键词去找到最相关的检索结果。
为了得到query,key,value,一个xxx就得做3次乘法,那n个xxx就得做3n3n3n次乘法。为了比较高效的实现矩阵乘法,要进行类似matlab中的向量化操作,因为因为GPU中矩阵运算的复杂度是O(1)O(1)O(1)不是O(N2)O(N^{2})O(N2)。如果我们能把上面的操作变为矩阵操作,那我们就能很好的利用GPU做并行计算。具体的矩阵操作用公式表示为:
为什么这里要用矩阵而不是神经网络呢?因为矩阵运算能用GPU加速,会更快,同时参数量更少,更节省空间。
注意,上式中dkd_{k}dk的是向量qqq或kkk的维度,这两个向量的维度一定是一样的,因为要做点积。但是的维度和向量或的维度不一定相同。
上式为什么要除以dk\sqrt{d_{k}}dk呢?因为为了防止维数过高时QKTQK^{T}QKT的值过大导致softmax函数反向传播时发生梯度消失。
那为什么是dk\sqrt{d_{k}}dk而不是呢?这就是个经验值,从理论上来说,就是还需要让QKTQK^{T}QKT的值适度增加,但不能过度增加,如果是的话,可能就不增加了。
3.2. multi-headed Attention
如果用不同的WQW^{Q}WQ、WKW^{K}WK、WvW^{v}Wv,就能得到不同的QQQ、KKK、VVV。multi-headed Attention就是指用了很多个不同的WQW^{Q}WQ、WKW^{K}WK、WvW^{v}Wv。
这样的好处是可以让Attention有更丰富的层次。有多个Q、K、VQ、K、VQ、K、V的话,可以分别从多个不同角度来看待Attention。这样的话,输入xxx,对于不同的multi-headed Attention,就会产生不同的zzz。
将多个版本的xxx拼接称为一个长向量,然后用一个全连接网络,即乘以一个矩阵,就能得到一个短的xxx向量。
把multi-headed输出的不同的zzz,组合成最终想要的输出的zzz,这就是multi-headed Attention要做的一个额外的步骤。
multi-headed Attention用公式表示:
现在从直觉上理解为什么需要multi-headed Attention。
下图是有八个Attention,先看右图,这八个Attention用八种不同的颜色表示,从蓝色到灰色。然后我们可以看到一个单词,在这八个Attention上对句子里每个单词的权重,颜色越深,代表权重越大。我们只挑出橙色和绿色(即第二个和第三个色块),看它们分别是怎样的注意力。然后把橙色和绿色的色块拉长就得到了左边这个图。
我们现在看左边,先看橙色部分,单词it连接的权重最重的是animal,这是从某一个侧面来看,那从另一个侧面来看,看绿色部分,it最关注的是tired。橙色的注意力主要表明it是个什么东西,从东西的角度说明它是一种动物,而不是苹果或者香蕉。如果我们从状态这个层面来看,it这个动物现在是在怎么样的一个状态,它的状态是tired,而不是兴奋。所以不同的Self-Attention Head是不同方面的理解。
词向量Embedding输入
Encoder输入的是单词的embedding,通常有两种选择:
- 使用Pre-trained的embeddings并固化,这种情况下实际就是一个Lookup Table。
- 对其进行随机初始化(当然也可以选择Pre-trained的结果),但设为Trainable。这样在training过程中2不断地对embeddings进行改进。 即End2End训练方式。
Transformer选择后者。
3.3. 位置编码
输入的时候,不仅有单词的向量xxx,还要加上Positional Encoding,即输入模型的整个Embedding是Word Embedding与Positional Embedding直接相加之后的结果。 这是想让网络知道这个单词所在句子中的位置是什么,是想让网络做自注意力的时候,不但要知道注意力要聚焦在哪个单词上面,还想要知道单词之间的互相距离有多远。
为什么要知道单词之间的相对位置呢? 因为Transformer模型没有用RNN也没有卷积,所以为了让模型能利用序列的顺序,必须输入序列中词的位置。所以我们在Encoder模块和Decoder模块的底部添加了位置编码,这些位置编码和输入xxx的向量的维度相同,所以可以直接相加,从而将位置信息注入。
想要知道单词之间的距离,就得知道单词的坐标。有很多不同衡量距离的方式,
这里使用不同频率的sinsinsin和coscoscos函数:
下面举例说明该公式的用法。
为什么这样做?用图形的方式可以直觉上理解。下图为一个长度为50,维度是128的句子的Positional Encoding(每一行为一个Encoding向量)。下图中一行就是一个单词的Positional Encoding。
上图可以看出,不同位置的Positional Encoding是独特的。 但是计算Positional Encoding的方式不是唯一的,甚至**Positional Encoding也可以是train出来的,并不是必须用作者说的sin cos。**只要能相互计算距离就可以。但是训练出来的不鲁棒,选择正弦曲线版本是因为它可以使模型外推到比训练过程中遇到的序列更长的序列长度。
Positional Encoding的物理意义 是:把50个Positional Encoding两两互相做点击,看相关性。其特点是Encoding向量的点积值对称,随着距离增大而减小。
3.4. skip connection和Layer Normalization
Add & Norm模块接在Encoder端和Decoder端每个子模块的后面,其中Add表示残差连接,Norm表示LayerNorm,残差连接来源于论文Deep Residual Learning for Image Recognition,LayerNorm来源于论文Layer Normalization,因此Encoder端和Decoder端每个子模块实际的输出为:
其中,Sublayer(x)Sublayer(x)Sublayer(x) 为子模块的输出。
skip connection最早是在计算机视觉的ResNet里面提到的,主要是想解决当网络很深时,误差向后传递会越来越弱,训练就很困难,那如果产生跳跃连接,如果有误差,可以从不同路径传到早期的网络层,这样的话误差就会比较明确地传回来。这就是跳跃层的来历。
跳跃层不是必须的,但在Transformer中,作者建议这样做,在Selft-Attention的前后和每一个Feed Forwar前后都用了跳跃层,如下图中的虚线所示。
如上图所示,同时,还用了Normalize,用的是一种新的Layer Normalize,不是常用的Batch Normalize。是一种正则化的策略,避免网络过拟合。
Layer Normalize就是对每一层的ttt所有向量进行求均值ulu^{l}ul和方差σl\sigma^{l}σl,然后归一化到正态分布后,再学习到合适的均值bbb和方差ggg进行再次缩放,即
下图为一个对不同样本做Layer Normalization的实例。
3.5. Encoder模块汇总
Encoder模块各部分及相关流程如下所示。
4. Decoder模块
Encoder与Decoder有三大主要的不同:
- Decoder SubLayer-1使用的是 “Masked” Multi-Headed Attention机制,防止为了模型看到要预测的数据,防止泄露。
- SubLayer-2是一个Encoder-Decoder Multi-head Attention。
- LinearLayer和SoftmaxLayer作用于SubLayer-3的输出后面,来预测对应的word的probabilities 。
4.1. Mask-Multi-Head-Attention输入端
模型训练阶段:
- Decoder的初始输入:训练集的标签YYY,并且需要整体右移(Shifted Right)一位
- Shifted Right的原因:T-1时刻需要预测T时刻的输出,所以Decoder的输入需要整体后移一位
举例说明 :我爱中国 → I Love China
位置关系:
0-“I”
1-“Love”
2-“China”
操作:整体右移一位(Shifted Right)
0-</s>【起始符】目的是为了预测下一个Token
1-“I”
2-“Love”
3-“China”
具体步骤
- Time Step 1
- 初始输入: 起始符 + Positional Encoding
- 中间输入:(我爱中国)Encoder Embedding
- Decoder:产生预测
I
- Time Step 2
- 初始输入:起始符
</s>
+I
+ Positonal Encoding - 中间输入:(
我爱中国
)Encoder Embedding - Decoder:产生预测
Love
- 初始输入:起始符
- Time Step 3
- 初始输入:起始符
</s>
+I
+Love
+ Positonal Encoding - 中间输入:(
我爱中国
)Encoder Embedding - Decoder:产生预测
China
- 初始输入:起始符
4.2. Msak
mask表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。Transformer模型里面涉及两种mask,分别是 padding mask和sequence mask。 其中,padding mask在所有的scaled dot-product attention 里面都需要用到,而sequence mask只有在Decoder的Self-Attention里面用到。
4.2.1. Padding Mask
什么是padding mask呢?因为每个批次输入序列长度是不一样的也就是说,我们要对输入序列进行对齐。具体来说,就是给在较短的序列后面填充0。但是如果输入的序列太长,则是截取左边的内容,把多余的直接舍弃。因为这些填充的位置,其实是没什么意义的,所以我们的Attention机制不应该把注意力放在这些位置上,所以我们需要进行一些处理。
具体的做法是,把这些位置的值加上一个非常大的负数(负无穷),这样的话,经过softmax,这些位置的概率就会接近0! 而我们的padding mask 实际上是一个张量,每个值都是一个Boolean,值为false的地方就是我们要进行处理的地方。
4.2.2. Sequence mask
sequence mask是为了使得Decoder不能看见未来的信息。也就是对于一个序列,在time_step为t的时刻,我们的解码输出应该只能依赖于t时刻之前的输出,而不能依赖t之后的输出。因此我们需要想一个办法,把t之后的信息给隐藏起来。 那么具体怎么做呢?也很简单:产生一个上三角矩阵,上三角的值全为0。把这个矩阵作用在每一个序列上,就可以达到我们的目的。
sequence mask的目的是防止Decoder “seeing the future”,就像防止考生偷看考试答案一样。这里mask是一个下三角矩阵,对角线以及对角线左下都是1,其余都是0。下面是个10维度的下三角矩阵:
[[1, 0, 0, 0, 0, 0, 0, 0, 0, 0],[1, 1, 0, 0, 0, 0, 0, 0, 0, 0],[1, 1, 1, 0, 0, 0, 0, 0, 0, 0],[1, 1, 1, 1, 0, 0, 0, 0, 0, 0],[1, 1, 1, 1, 1, 0, 0, 0, 0, 0],[1, 1, 1, 1, 1, 1, 0, 0, 0, 0],[1, 1, 1, 1, 1, 1, 1, 0, 0, 0],[1, 1, 1, 1, 1, 1, 1, 1, 0, 0],[1, 1, 1, 1, 1, 1, 1, 1, 1, 0],[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
对于Decoder的Self-Attention,里面使用到的scaled dot-product attention,同时需要padding mask和sequence mask作为attn_mask,具体实现就是两个mask相加作为attn_mask。
其他情况,attn_mask一律等于padding mask。
举个例子:
假设最大允许的序列长度为10,先令padding mask为
[0 0 0 0 0 0 0 0 0 0]
然后假设当前句子一共有5个单词(加一个起始标识),在输入第三个单词的时候,前面有一个开始标识和两个单词,则此刻的sequence mask为
[1 1 1 0 0 0]
然后padding mask和sequence mask相加,得
[1 1 1 0 0 0 0 0 0 0]
4.3. Encode-Decode注意力层
Attention的预测流程和和普通的Encoder-Decoder的模式是一样的,只是用Self-Attention替换了RNN。
在这一层(Decoder中的第二个注意力层),输入不仅有前一层的输出,还有来自Encoder的输出mmm,然后把Encoder产生的向量mmm作为Decoder的key和value,Decoder的xxx作为query,然后进行Self-Attention。相当于是,Encoder告诉我key和value是什么,我现[]在要做的就是产生query。即有
4.4. Decoder的输出
从上图可以看出,Decoder和Encoder唯一的区别就是多了一个Encode-Decode注意力层,然后最后一层接了个linear+softmax层,损失函数就是交叉熵损失。
Decoder的最后一个部分是过一个linear layer将decoder的输出扩展到与vocabulary size一样的维度上。经过softmax 后,选择概率最高的一个word作为预测结果。假设我们有一个已经训练好的网络,在做预测时,步骤如下:
- 给Decoder输入Encoder对整个句子embedding的结果和一个特殊的开始符号
</s>
。Decoder 将产生预测,在我们的例子中应该是 ”I”。 - 给Decoder输入Encoder的embedding结果和
</s> I
,在这一步Decoder应该产生预测am
。 - 给Decoder输入Encoder的embedding结果和
</s> I am
,在这一步Decoder应该产生预测a
。 - 给Decoder输入Encoder的embedding结果和
</s> I am a
,在这一步Decoder应该产生预测student
。 - 给Decoder输入Encoder的embedding结果和
</s> I am a student
, Decoder应该生成句子结尾的标记,Decoder 应该输出</eos>
。 - 然后Decoder生成了
</eos>
,翻译完成。
这里有两个训练小技巧,第一个是label平滑,第二个就是学习率要有个worm up过程,然后再下降。
1、Label Smoothing(regularization)
由传统的
变为
注:KKK表示多分类的类别总数,ϵ\epsilonϵ是一个较小的超参数
2、Noam Learning Rate Schedule
学习率不按照这样可能就得不到一个好的Transformer。
5.Transformer动态流程图
Encoder通过处理输入序列开启工作。Encoder顶端的输出之后会变转化为一个包含向量KKK(键向量)和VVV(值向量)的注意力向量集 ,这是并行化操作。这些向量将被每个Decoder用于自身的“Encoder-Decoder注意力层”,而这些层可以帮助Decoder关注输入序列哪些位置合适:
在完成Encoder阶段后,则开始Decoder阶段。Decoder阶段的每个步骤都会输出一个输出序列(在这个例子里,是英语翻译的句子)的元素。接下来的步骤重复了这个过程,直到到达一个特殊的终止符号,它表示Transformer的解码器已经完成了它的输出。每个步骤的输出在下一个时间步被提供给底端Decoder,并且就像Encoder之前做的那样,这些Decoder会输出它们的Decoder结果 。
5. Transformer特点
5.1. 优点
- 每层计算复杂度比RNN要低。
- 可以进行并行计算。
- 从计算一个序列长度为n的信息要经过的路径长度来看, CNN需要增加卷积层数来扩大视野,RNN需要从1到n逐个进行计算,而Self-attention只需要一步矩阵计算就可以。Self-Attention可以比RNN更好地解决长时依赖问题。当然如果计算量太大,比如序列长度N大于序列维度D这种情况,也可以用窗口限制Self-Attention的计算数量。
- 从作者在附录中给出的例子可以看出,Self-Attention模型更可解释,Attention结果的分布表明了该模型学习到了一些语法和语义信息。
5.2. 缺点
- 有些RNN轻易可以解决的问题Transformer没做到,比如复制String,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding)
- 理论上:transformers不是computationally universal(图灵完备),而RNN图灵完备。这种非RNN式的模型是非图灵完备的的,无法单独完成NLP中推理、决策等计算问题(包括使用transformer的bert模型等等)
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- C语言第六循环结构
第六章 循环结构 6.1 循环结构的程序设计 6.1.1 while 语句 while (表达式) //表达式中可以是任意类型的表达式语句; //循环体//while后面的表达式可以是任意类型的表达式,但一般是条件表达式或逻辑表达式. 表达式的值是循环的控制条件.执行过程: 首先判断表达式…...
2024/4/15 20:42:37 - 云服务器的概念(云服务器年度最低价来了,就要抓住双11)
什么是腾讯云云服务器? 腾讯云云服务器(Cloud Virtual Machine,CVM)是腾讯云提供的可扩展的计算服务。使用云服务器 CVM 避免了使用传统服务器时需要预估资源用量及前期投入,帮助您在短时间内快速启动任意数量的云服务…...
2024/4/16 22:52:34 - python变量及数据类型简述
一、python简介 了解一个事务首先你要知道它是什么、它的历史以及它与它相关的不同。 Python(计算机编程语言)_百度百科 (baidu.com) 有什么比直接上链接更方便?(dog.jpg) 注:python是一门弱数据语言!!&…...
2024/4/15 20:15:38 - Google Earth Engine——将shadow影像运用案例分析
直接线上结果图:...
2024/4/15 20:08:32 - VMware vRealize Network Insight 6.4 下载 - 网络和安全可视化分析
vRealize Network Insight 6.4 | 2021 年 10 月 12 日 | 内部版本 1633067610 vRealize Network Insight 6.3 | 2021 年 7 月 13 日 | 内部版本 1625072760 vRealize Network Insight 6.2 | 2021 年 4 月 15 日 | 内部版本 1617345572 vRealize Network Insight 6.1 | 2021 年 …...
2024/4/15 20:08:37 - GPRS电力系统远程抄表系统解决方案
第一部分 系统概述 GPRS---General Packet Radio Service,通用无线分组业务,是一种基于GSM系统的无线分组交换技术,提供端到端的、广域的无线IP连接。通俗地讲,GPRS是一项高速数据处理的技术,方法是以“分组”的形式传送资料到用户手上。用户上网可以免受断线的痛苦。香港…...
2024/4/6 6:15:47 - 网页学习笔记(四)
Day 04 其他可学习 Sass、Less、BFC (二十一)定位简介 .box{/* 定位:static(静态)relative(相对定位)absolute(绝对定位)fixed(固定定位)*/position: static; }其中静…...
2024/4/19 5:06:21 - activiti部署流程实例
部署流程实例各个方式 //创建实例DeploymentBuilder deployment rep.createDeployment();//资源文件地址deployment.addClasspathResource("");//输入流文件 name 资源InputStream inputStream new InputStream() {Overridepublic int read() throws IOException …...
2024/4/15 20:09:17 - 查找树-- 2-3-4树原理图解及与红黑树的关系
2-3-4 树 概念 2-3-4 树 是一棵4阶的B树。 大体上同B树一样,2-3-4 树是可以用做字典的一种自平衡数据结构。 它可以在O(logn)时间内查找、插入和删除,这里的n是树中元素的数目。 2-3-4树和红黑树是完全等价的,且性能…...
2024/4/20 0:25:08 - 【100个 Unity小知识点】 | 启动unity应用时的 Unity Logo 删除/替换的三种方案
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。Unity 平台提供一整套完善的软件解决方案ÿ…...
2024/4/17 22:05:36 - 2021年最新版品牌数据银行分析师考试认证题库
2021年最新版品牌数据银行分析师考试认证题库 作为做运营喵的你是否还在为拿不到阿里认证证书烦恼呢?小编而为你排忧解难,亲手试水的呕心整理的题库奉上, 答案连续用户名,愿小伙伴们都能顺利拿到证书~~升职加薪,走向人生高峰! 自定义人群设置更新的周期…...
2024/4/18 4:37:09 - 华为hcip认证考试要多少钱 华为认证有几个级别
现在很多企业在进行招聘的时候,都要求从业者拥有相关的资格证书,例如会计证书、人力资源证书等。而在互联网、通讯行业,如果拥有华为认证证书的话,对于未来的职业发展是很有帮助的,而且能让大家加薪。现在国内很多ICT从…...
2024/4/15 20:09:22 - 实验名称:用户与组群管理-linux虚拟机环境
福建农林大学计算机与信息学院实验报告 系: 计算机与信息学院 专业: 年级: 姓名: 学号: 实验室号 …...
2024/4/15 20:09:32 - VMware vRealize Orchestrator 8.6 下载 - 数据中心工作流自动化
请访问原文链接:https://sysin.org/blog/vmware-vro-8/,查看最新版。原创作品,转载请保留出处。 作者:gc(at)sysin.org,主页:www.sysin.org 什么是 vRealize Orchestrator? vRealize Orchest…...
2024/4/6 6:15:44 - LeetCode 445 两数相加II 题解
LeetCode 445 两数相加II 题解 区别于第二题 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 进阶: 如果…...
2024/4/17 23:22:46 - 记录学习每一天-day24
1.1 Thread 类 join join : 合并线程,多个线程合并为一个线程 public static void main(String[] args) { Thread t1new Thread(new Processer_1()); Thread t2new Thread(new Processer_1()); t1.setName("t1"); t2.setName("…...
2024/4/15 20:09:17 - 【LeetCode】买卖股票
问题1:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 题目链接:剑指 Offer 63. 股票的最大利润 贪心:强调只买卖一次,因此只需要记录一个当前的最小值即可…...
2024/4/15 20:09:27 - 关于指针,你不得不懂(C语言)
指针关于指针小知识点指针运算取址运算符取值运算符*和&的结合赋值运算指针与整数的加减关系运算指针与数组指针与一维数组指针与二维数组函数指针二级指针指针是一种变量,它的值是一个地址。通过指针我们可以简化一些C编程任务的执行,但它也是C语言…...
2024/4/18 9:44:19 - 《JavaScript逆袭指北》第二章 2.1 字符集 格式介绍
来自专栏《JavaScript逆袭指北》 📢 博客主页:https://blog.csdn.net/AcssGood 📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正 ! 📢 本文由 DianC 原创,首发于 CSDN 🙉 📢 个性签名: 愿你出走半生,归来仍是少年 ✨ 目录放在下方,小伙伴请根据自己的需求跳…...
2024/4/16 18:28:59 - 本周学习内容(banner第一周)
以下是我对本周学习内容总结: 1.本周着重对JAVA流程控制的学习,初步掌握了if语句switch语句while语句do-while语句for语句。 import java.util.*; public class A {public static void main(String[] args) {int grade;Scanner readernew Scanner(Syst…...
2024/4/15 21:01:52
最新文章
- 【笔记】编写cmakelist的常用命令含义及使用
文章目录 命令projectfilesetconfigure_filelistadd_libraryset_target_propertiestarget_link_directoriestarget_link_librariestarget_compile_definitionsadd_subdirectoryfunction 持续更新 命令 project 用于定义一个项目,它是 CMakeLists.txt 文件中的第一个…...
2024/4/20 3:40:49 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 【LeetCode】手撕系列—92. 反转链表 II
目录 1-思路2-题解⭐反转链表 II——题解思路 3-ACM模式 原题链接:92. 反转链表 II 1-思路 先定义一个 dummyHead定义三个指针 **pre**:定位到需要被翻转的区间的前一个元素,实现头插**cur**:定位到当前需要被翻转的元素**next**…...
2024/4/18 23:28:43 - 腾讯云轻量服务器流量不够用了会怎么样?
腾讯云轻量应用服务器是限制月流量的,如果当月流量不够用了,流量超额了怎么办?流量超额后,需要另外支付流量费,如果你的腾讯云账号余额,就会自动扣除对应的流量费,如果余额不足,轻量…...
2024/4/16 20:19:31 - 【VTKExamples::Meshes】第七期 TableBasedClipDataSetWithPolyData
很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TableBasedClipDataSetWithPolyData,并解析接口vtkTableBasedClipDataSet,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你…...
2024/4/20 2:34:27 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/19 14:24:02 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/19 18:20:22 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/19 11:57:31 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/19 11:57:31 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/19 11:57:52 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/19 11:57:53 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/19 11:58:14 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/19 11:58:20 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/19 23:45:49 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/19 11:58:39 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/19 11:58:51 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/20 3:12:02 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/19 11:59:15 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/19 11:59:23 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/4/19 11:59:44 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/19 11:59:48 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/19 12:00:06 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/19 16:57:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/19 12:00:25 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/19 12:00:40 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57