Informer:高效长序列时间序列预测模型(更新中)

文章行文思路:
在这里插入图片描述

目录

  • 一、背景:
    • 1.时间序列介绍:
    • 2.LSTF介绍:
    • 3.Transformer与Informer的关系:
  • 二、Transformer:
    • 1.Transformer简介:
    • 2.Transformer整体架构:
    • 3.模型输入:
      • 3.1第一层Encoder输入:
        • 3.11 细节说明:
          • 3.111 “token”解释:
          • 3.112 Embedding原理:
          • 3.113 Positional Encoding原理:
          • 3.114 “特征”解释:
      • 3.2 第一层Decoder输入:
        • 3.21 细节说明:
          • 3.211 “标签列”解释:
    • 4.Encoder:
      • 4.1 Encoder组成与功能:
      • 4.2 Self-Attention:
      • 4.3 Multi-Head Attention:
      • 4.4 Add残差连接:
      • 4.5 Norm层归一化:
      • 4.6 Feed-Forward Networks:
      • 4.7 Encoder堆叠:
    • 5.Decoder:
      • 5.1 Decoder组成与功能:
      • 5.2 Masked Multi-Head Attention:
      • 5.3 Multi-Head Attention:
      • 5.4 Decoder堆叠:
    • 6.模型输出:
    • 7.Transformer训练和预测过程总结:
  • 三、Informer:
    • 1.简介:
    • 2.传统Transformer在时序预测方面缺点和Informer改进方法:
    • 3.Informer整体架构:
    • 4.Informer优化详解:
      • 4.1 ProbSparse Self-attention:
      • 4.2 Self-attention Distilling:
      • 4.3 Generative Style Decoder:
      • 4.4 Positional Encoding:
    • 5.模型输入输出角度理解Informer训练和预测过程:
      • 5.1 Encoder Embedding输入:
      • 5.2 Decoder Embedding输入:
      • 5.3 Embedding输入输出:
        • 5.31 输入:
        • 5.32 输出:
      • 5.4 ProbSparse Self-attention输入输出:
        • 5.41 输入:
        • 5.42 Active输出:
        • 5.43 Active+Lazy输出:
        • 5.43 多头注意力合并:
      • 5.5 Encoder输入输出:多个Encoder和蒸馏层的组合
        • 5.51 输入:
        • 5.52 输出:
      • 5.6 Decoder输入输出:
        • 5.61 输入:
        • 5.62 输出:
  • 四、Informer代码介绍:
  • 五、实验

一、背景:

1.时间序列介绍:

时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。

时间序列分析的主要目的是根据已有的历史数据对未来数据进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。

2.LSTF介绍:

LSTF(Long Sequence Time-Series Forecasting)即长序列时间序列预测。

它是时间序列预测问题的一种特殊场景,要求模型具有很高的预测能力,即能够有效地捕捉输出和输入之间精确的长程相关性耦合。在实际应用中,如用电量使用规划等问题中,需要对长序列时间序列进行预测。

3.Transformer与Informer的关系:

Informer和Transformer都是神经网络架构
Informer是在Transformer的基础上进行了改进和优化,旨在提高处理长序列的速度和效率。

因此学习Informer前提是掌握Transformer。故我们在本文中首先详细讲解Transformer,然后在讲解Informer时主要讲解其在Transformer上的改进。

二、Transformer:

在这里插入图片描述

论文地址:Transformer论文地址

1.Transformer简介:

目前,在NLP领域当中,主要存在三种特征处理器——CNN、RNN以及Transformer,当前Transformer的流行程度已经大过CNN和RNN,它抛弃了传统CNN和RNN神经网络,整个网络结构完全由Attention机制以及前馈神经网络组成。

BERT算法(进击的巨人)的最重要的部分便是Transformer的概念,它本质上是Transformer的编码器部分。自从Transformer使用了抛弃RNN、CNN的纯Attention机制之后,各种基于Transformer结构的预训练模型都如雨后春笋般雄起,本文中Informer便是其中一员。

2.Transformer整体架构:

在这里插入图片描述
Transformer的结构图,拆解开来,主要分为图上4个部分,接下来我将按照1,2,3,4的顺序逐步介绍上图中Transformer的网络结构,这样既能够弄清楚结构原理,又能够方便理解Transformer模型的工作流程。

3.模型输入:

3.1第一层Encoder输入:

在这里插入图片描述
第一步: 以用电量时间序列预测为例,Inputs为n个时间步长(实验中以96h为例)的用电量数据,经过Embedding后将每个小时的用电量数据升维成d维(实验中以512维为例)的向量,因此Embedding的输出是一个包含n个token的序列,每个token用一个d维(512)向量表示,可以用矩阵x表示(x的大小是d×n)
在这里插入图片描述

第二步: inputs执行embedding后需要给每个token添加位置编码positional encoding,因为时间序列的时间特征也很重要,例如用电量数据往往具有周期性(周一至周五家庭用电量少,周六至周日家庭用电量多),所以我们需要对每个token进行位置编码,生成矩阵y(y的大小是d×n)。
在这里插入图片描述

第三步: 矩阵x与y进行相加,作为Encoder的输入。

在这里插入图片描述

注:仅第一层Encoder输入同上,后续Encoder的输入不再同上,而是上一层Encoder的输出。

3.11 细节说明:
3.111 “token”解释:

在时间序列预测的上下文中,token通常指的是输入序列中的一个基本单元或元素,对于用电量时间序列数据,每个token代表一个时间步长(小时)的用电量数据。例如,如果你有一个按小时记录的用电量数据集,每个token可能就是一个小时的用电量值。

3.112 Embedding原理:

Embedding对低维数据进行升维时,会把一些特征给放大,或者把笼统的特征给分开。

原理就是矩阵乘法,其中被乘数是时间序列数据,乘数是嵌入矩阵Embedding Matrix,Embedding Matrix在训练过程中根据反向传播算法和优化器进行更新,使得时间序列数据在乘Embedding Matrix后能更好地放大其数据中的特征

因此,这个Embedding层一直在学习优化,使得整个数据升维过程慢慢形成一个良好的观察点,即Embedding Matrix。

3.113 Positional Encoding原理:

Transformer使用的是正余弦位置编码。位置编码通过使用不同频率的正弦、余弦函数生成,然后和对应的位置的词向量相加,位置向量维度必须和词向量的维度一致。
在这里插入图片描述

3.114 “特征”解释:

特征即数据中有用的数据信息,例如每个时间步的用电量值…

3.2 第一层Decoder输入:

在这里插入图片描述
Decoder的输入与Encoder的输出处理方法步骤是一样的,区别是Encoder输入为特征数据,而Decoder输入为标签target数据。

注意Decoder在训练阶段target为真实值,并且用到了mask机制(详见Decoder层),而在预测阶段target为空,即模型不接收target输入。

对应到上面例子里面就是:在多变量预测单变量的用电量预测中,使用图书馆、办公楼的用电量数据预测信息楼的用电量数据。

  • 模型训练阶段 Encoder输入的是图书馆、办公楼的用电量数据,Decoder输入的是执行mask机制后信息楼的用电量数据真实值(因为mask所以每层输入的真实值个数是递增的)。
  • 模型预测阶段 Encoder输入的是图书馆、办公楼的用电量数据,第一层Decoder输入为Null。Decoder每次输入是上一时刻Transformer的输出。例如,输入"“,输出"信息楼1/1用电量预测”,输入"信息楼1/1用电量预测",输出"信息楼1/1与1/2用电量预测"…
3.21 细节说明:
3.211 “标签列”解释:

在多变量预测单变量的用电量预测中,使用图书馆、办公楼的用电量数据预测信息楼的用电量数据。特征列即为图书馆、办公楼的用电量数据,标签列即为被预测的数据列,即信息楼的用电量数据。

4.Encoder:

在这里插入图片描述

4.1 Encoder组成与功能:

Encoder由多头注意力机制Multi-Head Attention和前馈神经网络Feed Forward Network组成,用于捕捉输入序列中的上下文关系和特征表示。Encoder重复堆叠N层有助于提取输入序列中的深层特征表示。

举例来说:用269栋建筑的用电量数据预测第270栋建筑的用电量数据时,Encoder部分负责计算269栋建筑用电量的相关性信息,并通过跨注意力机制将这些信息(编码矩阵)传递给Decoder。

4.2 Self-Attention:

简单来说,注意力Attention就是:输入序列较重要点获得较高的权重(更多的注意力),不重要的点获得较低权重(更少的注意力)

注意力机制函数入参:查询向量 Q、键向量 K、值向量 V通过对输入序列的线性变换(矩阵乘法)得到,其中X为Encoder输入的矩阵,X的每行为一个token,X通过乘三个权值矩阵WQ,WK,WV ,转变成为计算Attention值所需的Query,Keys,Values向量。其中矩阵WQ,WK,WV 为三个超参数,在模型训练阶段不断更新。
在这里插入图片描述
Q,K,V第n行代表的是X第n行的token的数据信息。 得到Q,K,V之后,接下来就是计算Attention值了。
在这里插入图片描述
在这里插入图片描述

  • QKT是为了计算查询矩阵Q中每个行向量q(代表之前的每个token)与键矩阵K中每个行向量k之间的相关性,获得每个查询向量q与每个键向量k之间的注意力分数。
  • 除根号√dk是归一化操作,目的是确保注意力权重的分布更加均匀、训练时梯度能够稳定,其中dk就是K的维度。
  • Softmax()回归将输入的向量转化为具有和为1的概率分布,用概率分布更好的体现查询向量q与每个键向量k之间的相关性
  • 乘值矩阵V做加权目的是得到最终的注意力,为了突出与每个查询向量q更相关的序列部分。

注意力机制的目的是:突出查询向量q与每个键向量k之间的相关性,从而强调输入序列中与该查询向量更相关的部分。

4.3 Multi-Head Attention:

单一的注意力机制能挖掘到的信息有限,通过多次自注意力计算来关注序列不同位置的子空间表示信息,同时不同的头可以关注序列的不同特征表示,从而更好地提取输入序列中的特征

self-attention只使用了一组WQ,WK,WV来进行变换得到Query,Keys,Values。而Multi-Head Attention使用多组WQ,WK,WV得到多组Query,Keys,Values,然后每组分别计算得到一个Z矩阵,最后将得到的多个Z矩阵进行拼接,合并输出全局特征Z。Transformer里面是使用了8组不同的WQ,WK,WV

在这里插入图片描述

  • 每个头Head有单独的WQ,WK,WV,所有WQ,WK,WV在模型训练阶段都做为超参数不断更新。

4.4 Add残差连接:

防止在深度神经网络训练中发生退化问题,即深度神经网络通过增加网络的层数,Loss逐渐减小,然后趋于稳定达到饱和,然后再继续增加网络层数,Loss反而增大。

4.5 Norm层归一化:

能够加快训练的速度、提高训练的稳定性。归一化使得使每一行的概率和为1,归一化后的数据在进行梯度下降寻找最优参数时,更容易找到最优解。

4.6 Feed-Forward Networks:

在这里插入图片描述这里的全连接层是一个两层的神经网络,先线性变换,然后ReLU非线性,再线性变换。

这两层网络就是为了将输入的Z映射到更加高维的空间中,然后通过非线性函数ReLU进行筛选,筛选完后再变回原来的维度。
在这里插入图片描述
通过这种前馈网络的设计,Transformer 模型能够学习到输入序列中的更复杂的特征和模式, 从而提高模型的表达能力和泛化能力。

4.7 Encoder堆叠:

Feed-Forward Networks输出经过Add&Normalize,输入下一个Encoder中,经过6个Encoder后最终输出的是每个输入token对应的上下文向量表示,也称为"编码矩阵"(encoding),其中包含了每个token与其余token的关系(全局相关性)信息最后输入到decoder中

5.Decoder:

在这里插入图片描述

5.1 Decoder组成与功能:

每个Decoder有两个Multi-Head Attention层和一个Feed Forward Network组成。第一个Multi-Head Attention层采用了Masked操作。第二个Multi-Head Attention层的K、V矩阵输入源来自Encoder的输出编码矩阵,而Q矩阵是由经过Add & Norm层之后的输出计算来的。Decoder在训练过程中通过Encoder的编码矩阵和带预测值的真实值来生成预测序列,并通过损失函数和优化算法来优化模型的预测能力。这样,模型就可以学会利用编码矩阵来预测标签列。

举例来说:用269栋建筑的用电量数据预测第270栋建筑的用电量数据时,Decoder利用Encoder的编码矩阵以及第270栋建筑的真实用电量数据来生成预测序列,并通过损失函数和优化算法来优化模型的预测能力。这样,模型就可以学会利用其他建筑的用电量数据来预测第270栋建筑的用电量。

5.2 Masked Multi-Head Attention:

Masked Multi-Head Attention的功能是为了得到之前已经预测输出的真实值信息。

mask 表示掩码,它对某些值进行掩盖,使其在参数更新时不产生效果。对于一个序列,我们的解码输出应该只能依赖于 t 时刻之前的输出,而不能依赖 t 之后的输出。因此我们需要想一个办法,把 t 之后的信息给隐藏起来。实现思路为:产生一个上三角矩阵,上三角的值全为0。把这个矩阵作用在每一个序列上,就可以达到我们的目的。

这在训练的时候有效,因为训练的时候采用Teacher Forcing的训练方式,每次我们是将target真实数据 (答案) 完整输入进Decoder中的,预测时不需要,预测的时候我们只能得到前一时刻预测出的输出。
在这里插入图片描述

5.3 Multi-Head Attention:

Decoder中Multi-Head Attention的功能是通过当前的输入与经过Encoder提取过的编码矩阵来预测输出。

它的输入Query来自于Masked Multi-Head Attention的输出,Keys和Values来自于Encoder中最后一层的输出。为了让Decoder能够利用Encoder中的信息,学习到输入序列的全局依赖关系和重要特征,从而更好地生成输出序列。

5.4 Decoder堆叠:

经过第二个Multi-Head Attention之后的Feed Forward Network与Encoder中一样,然后就是输出作为下一个Decoder的输入,如此经过6层Decoder之后到达最后的输出层。

6.模型输出:

在这里插入图片描述
首先经过一次线性变换,然后Softmax得到输出的概率分布,然后通过词典,输出概率最大对应的值作为我们的预测输出。

7.Transformer训练和预测过程总结:

用269栋建筑的用电量数据预测第270栋建筑的用电量数据为例:

  • 训练阶段:
    • Encoder部分负责计算269栋建筑用电量的相关性信息,并通过跨注意力机制将这些信息(编码矩阵)传递给Decoder。
    • Decoder利用Encoder的编码矩阵以及第270栋建筑的真实用电量数据(注意使用mask机制)来生成预测序列,并通过损失函数和优化算法来优化模型的预测能力,获取最优超参数。这样,模型就可以学会利用其他建筑的用电量数据来预测第270栋建筑的用电量。
  • 预测阶段:
    • 预测阶段所有超参数已经确定,且为已知常数值。
    • Encoder部分负责计算269栋建筑用电量的相关性信息,并通过跨注意力机制将这些信息(编码矩阵)传递给Decoder。
    • Decoder利用Encoder的编码矩阵以及模型来生成预测序列(例如模型为y=ax+b,ab为超参数已知,通过传入编码矩阵x到模型中计算第270栋建筑的预测值y),具体来说,预测值的生成不是一次完成的,而是一个一个的,首先会给Decoder输入开始标志(第一层Decoder输入为Null),然后经过Decoder会预测出第270栋建筑11/1日的用电量预测值,然后拿着第270栋建筑11/1日的用电量预测值作为Decoder输入去预测第270栋建筑11/2日的用电量预测值,但后拿着第270栋建筑11/1、11/2日的用电量预测值作为Decoder输入去预测第270栋建筑11/3日的用电量预测值,以此类推。

三、Informer:

在这里插入图片描述

论文地址:Informer论文地址PDF点击即可阅读
代码地址:论文官方代码地址点击即可跳转下载GIthub链接

1.简介:

Informer是一种专为 长序列时间序列预测(LSTF) 设计的Transformer模型。相较于传统的Transformer,Informer具备了三个独特特点。首先,他采用ProbSparse自注意力机制,具有O(LlogL)的时间复杂度和内存使用。能够有效捕获序列中的长期依赖关系。其次,通过自注意力蒸馏技术,Informer能够高效处理极长的输入序列。最后,Informer的生成式解码器可以一次性预测整个长时间序列,在预测过程中大幅提高了效率。经过大规模数据集的实验验证,Informer在LSTF问题上表现优秀,为长序列时间序列预测提供了一种高效准确的解决方案,克服了传统Transformer模型的限制。

2.传统Transformer在时序预测方面缺点和Informer改进方法:

Transformer的缺点Informer的改进
self-attention平方级的计算复杂度提出ProbSparse Self-attention筛选出最重要的Q,降低计算复杂度
堆叠多层网络,内存占用瓶颈提出Self-attention Distilling进行下采样操作,减少维度和网络参数的数量
step-by-step解码预测,速度较慢提出Generative Style Decoder,一步可以得到所有预测的

3.Informer整体架构:

在这里插入图片描述

4.Informer优化详解:

4.1 ProbSparse Self-attention:

在这里插入图片描述
通过以上图可以看到,并不是每个q与k之间都具有很高的相关性(内积),即不是所有q都具有很高的活跃度,我们不需要花很多时间在处理这些弱活跃度的q上,因为这些q提取不出数据间的相关性和好的特征。这就是该算法改进的突破口。

改进算法如下:
(1)输入序列长度为96,首先在K中进行采样,随机选取25个k
(2)计算每个q与25个k的内积,现在一个q一共有25个得分。
(3)每个q在25个得分中,选取最高分的与均值算差异
(4)这样我们输入的96个q都有对应的差异得分,我们将差异从大到小排列,选出差异前25大的q
(5)其他淘汰掉的q使用V向量的平均来代替

4.2 Self-attention Distilling:

在这里插入图片描述
在相邻的Attention Block之间加入卷积池化操作,来对特征进行降采样。对输入维度进行修剪,堆叠n层,每层输入序列长度减半,从而将空间复杂度降低到O(nlogn)

4.3 Generative Style Decoder:

在这里插入图片描述
源码中的decoder输入长度为72,其中前48是真实值,后24是预测值。我们可以理解为一段有效的标签值(48个真实值)带着一群预测值(24个待预测值)进行学习,这种方法可以一步到位生成目标序列,不需要再使用动态解码。

4.4 Positional Encoding:

在这里插入图片描述
Informer在Transformer位置编码(Local Time Stamp)的基础上,加入了Global Time Stamp,可以更好的提取输入序列中的时间特征。

Encoder输入改进如下:

  • Scalar:Embedding升维
  • Local Time Stamp:位置编码
  • Global Time Stamp:提取时间特征

5.模型输入输出角度理解Informer训练和预测过程:

数据集:BDG2
(小时维度的数据) 数据规格:17420 * 320
Batch_size:32

5.1 Encoder Embedding输入:

在这里插入图片描述
Xenc = 32 × 96 × 320

  • 32为batch大小,一个batch有32个样本,一个样本代表96个时间点的数据。
  • 320为每个数据的维度,表示每个时间点数据(每行)有320列。

Xmark = 32 × 96 × 4

  • 32 × 96同上,表示每个时间点的数据都要有一个位置编码,Xmark与Xenc每行一一对应。
  • 4为时间戳,例如我们用小时维度的数据,那么4分别代表年、月、日、小时,

5.2 Decoder Embedding输入:

在这里插入图片描述
Xdec = 32 × 72 × 320
Xmark = 32 × 72 × 4

  • 72=48+24,其中48为Encoder96的后48个时间点数据,用这些真实值来带一带预测值,24为待预测值。
  • 48为绿色部分,24为白色部分填充0(mask机制)

5.3 Embedding输入输出:

将维度为320/7的一个时间点的数据投影成维度为512的数据。

5.31 输入:

32 × 96/72 × 320
32 × 96/72 × 4

5.32 输出:

32 × 96/72 × 512

5.4 ProbSparse Self-attention输入输出:

5.41 输入:

32 × 8 × 96 × 64 (8 × 64 = 512,这也是多头的原理,即8个头)

5.42 Active输出:

32 × 8 × 25 × 64 (只取25个活跃q)

5.43 Active+Lazy输出:

32 × 8 × 96 × 64 (除了25个活跃q,其余q用V向量的平均来代替)

5.43 多头注意力合并:

32 × 96 × 512

5.5 Encoder输入输出:多个Encoder和蒸馏层的组合

5.51 输入:

32 × 96 × 512(来自上面embedding 长度为96的部分)

5.52 输出:

32 × 51 × 512(这里的51应该是conv1d卷积取整导致的,因为源码要自行调整,所以是这样的)

5.6 Decoder输入输出:

5.61 输入:

32 × 51 × 512 & 32 × 72 × 512(32 × 51 × 512是Encoder输出,32 × 72 × 512是Decoder Embedding后的输入)

5.62 输出:

32 × 72 × 512

四、Informer代码介绍:

五、实验

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

nodejs+vue+ElementUi废品废弃资源回收系统

系统主要是以后台管理员管理为主。管理员需要先登录系统然后才可以使用本系统,管理员可以对系统用户管理、用户信息管理、回收站点管理、站点分类管理、站点分类管理、留言板管理、系统管理进行添加、查询、修改、删除,以保障废弃资源回收系统系统的正常…

实施工程师前后端项目部署流程一次完成

目录 一、jdk安装具体步骤 二、tomcat安装具体步骤 三、MySql具体步骤 修改密码 登录 四、nginx安装 4.1、Nginx 4.2、操作步骤 安装ssl证书(https) 开80端口 测试 设置自启动 五、后端部署tomcat负载均衡 5.1、为什么要使用 5.2、搭建ngin…

【 buuctf--菜刀 666】

需要用wireshark打开,在此之间,先用binwalk看看有什么隐藏内容 发现有 zip 压缩包,并且加密了,还有个 flag.txt ,binwalk 提取一下,是个真加密,估计爆破密码也是出不来了,所以只好打…

【小沐学QT】QT学习之资源文件qrc的使用

文章目录 1、简介2、qrc添加2.1 向导方式添加2.2 代码方式添加2.3 动态方式添加 3、qrc使用结语 1、简介 Qt 资源系统(Qt Resource System)是一种将图片、数据存储在二进制文件中的一套系统。 Qt 资源系统是独立于平台的,因为无论是图片还…

【C语言】linux内核ipoib模块 - ipoib_tx_poll

一、中文注释 这段代码是 Linux 内核网络栈中与 InfiniBand 协议相关的一个部分,特别是与 IP over InfiniBand (IPoIB)相关。该函数负责去处理IPoIB的发送完成队列(发送CQ)上的工作请求(work completions)。以下是对这…

“花式提涨薪,结果被套路”!怎么跟老板正确提加薪?

加薪想必是所有职场人的共同愿望,但大部分人想要向领导提出加薪时,都会遇到这些问题。 第一种人:想要加薪,但是却提都不敢提; 第二种人:想要加薪,但是却不知道怎么提; 第三种人&a…

springboot215基于springboot技术的美食烹饪互动平台的设计与实现

美食烹饪互动平台的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统美食信息管理难度大&…

C# 使用onnxruntime部署夜间雾霾图像的可见度增强

目录 介绍 模型信息 效果 项目 代码 下载 C# Onnx 使用onnxruntime部署夜间雾霾图像的可见度增强 介绍 github地址:GitHub - jinyeying/nighttime_dehaze: [ACMMM2023] "Enhancing Visibility in Nighttime Haze Images Using Guided APSF and Gradien…

Linux部署前后端分离项目

目录 一、jdk安装 二、tomcat安装 三、MySQL安装 四、nginx安装 五、配置多个tomcat负载,部署后端项目 六、前端部署 一、jdk安装 1. 上传jdk安装包 jdk-8u151-linux-x64.tar.gz 进入opt目录,将安装包拖进去 2. 解压安装包 这里需要解压到usr/loc…

中科大计网学习记录笔记(十五):可靠数据传输的原理

前前言:看过本节的朋友应该都知道本节长度长的吓人,但其实内容含量和之前的差不多,老师在本节课举的例子和解释比较多,所以大家坚持看完是一定可以理解透彻的。本节课大部分是在提出问题和解决问题,先明确出现的问题是…

解密看板管理的奥秘!持续提升研发效能的关键

看板管理近年来变得越来越流行,许多企业在他们的项目中采用了这种精益工作流程方法。但是看板管理在研发项目中的可持续性如何呢?在本文中,我们将从可持续性的角度探讨在研发项目中使用看板管理的好处和挑战。 一、研发的看板管理如何持续? …

【EAI 025】Ego4D: Around the World in 3,000 Hours of Egocentric Video

Paper Card 论文标题:Ego4D: Around the World in 3,000 Hours of Egocentric Video 论文作者:Kristen Grauman, Andrew Westbury, Eugene Byrne, et al. 作者单位:UC Berkeley, CMU, Google 论文原文:https://arxiv.org/abs/2110…

Java 过滤器深入了解学习

Java 过滤器深入了解学习 生活不能等待别人来安排,要自己去争取和奋斗;而不论其结果是喜是悲,但可以慰藉的是,你总不枉在这世界上活了一场。有了这样的认识,你就会珍重生活,而不会玩世不恭;同时…

Git笔记——3

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、合并模式和分支策略 二、bug分支 三、强制删除分支 四、创建远程仓库 五、克隆远程仓库_HTTPS和_SSH 克隆远程仓库_HTTPS 克隆远程仓库_SSH 六、向远程仓库…

MCU独立按键单控LED实现

##江科大视频学习,并且对具体的一些小细节进行更详细的分析。 什么是独立按键? 轻触按键:相当于是一种电子开关,按下开头接通,松开时开头断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 注意…

【大厂AI课学习笔记NO.53】2.3深度学习开发任务实例(6)数据采集

这个系列写了53期了,很多朋友收藏,看来还是觉得有用。 后续我会把相关的内容,再次整理,做成一个人工智能专辑。 今天学习到了数据采集的环节。 这里有个问题,数据准备包括什么,还记得吗? 数…

Unity使用的GC方式——贝姆GC(BOEHM GC)

Unity合作的Mono版本为Mono的早期版本,此时还没有使用SGen GC,后来Mono将默认GC方式改为SGen GC,Unity并没有继续购买,因此Unity使用的GC方式仍然是老的贝姆GC。 贝姆GC官方网页:https://www.hboehm.info/gc/index.htm…

15.4K Star,超强在线编辑器

Hi,骚年,我是大 G,公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目,一分钟 get 一个优秀的开源项目,挖掘开源的价值,欢迎关注。 今天推荐一款非常棒的开源实时协作编辑器,可用于多人同时编…

SQLServer 格式化数据的方法

格式化数据一般考虑使用FORMAT 或者CONVERT ​​​​​​​函数,FORMAT 函数是在 SQL Server 2012 中引入的,如果你使用的是较早版本的 SQL Server,则可能需要考虑使用其他方法,如 CONVERT 函数。 在 SQL Server 中,FO…

【C++ QT项目5】——基于HTTP与JSON数据流的天气预报界面设计

【C QT项目5】——基于HTTP与JSON数据流的天气预报界面设计 一、项目概述二、UI设计与stylesheet样式表三、天气预报数据接口四、JSON数据4.1 概述4.2 QT生成JSON数据4.3 QT解析JSON数据4.4 将JSON数据解析到QMap中 五、软件开发网络通信架构5.1 BS架构/CS架构5.2 HTTP基本概念…