【CVPR_2024】:逐元素乘积为什么会产生如此令人满意的结果?

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!


文章目录


前言

自AlexNet以来,出现了无数的深度网络,一系列模型主要是基于混合线性投影(即卷积和线性层)和非线性激活的块。最近,通过逐元素乘法(element-wise multiplication)融合不同的子空间特征获得了较好的性能。论文将其称为“星型操作”,逐元素乘法在各个研究领域都表现出良好的性能和效率,包括自然语言处理(Monarch Mixer、Mamba、Hyena Hierarchy等)、计算机视觉(FocalNet、HorNet、VAN等)。

举个简单的例子:如下图,使用左图构建的网络,逐元素相加和逐元素乘积的性能差异如右图。
在这里插入图片描述

显而易见,在不同的宽度的网络中,逐元素乘积比逐元素相加的性能更好,尤其是在宽度较窄的情况下。因此,建议设计紧凑、高效网络时,推荐使用星形操作。


星形操作非常简单,为什么它会产生如此令人满意的结果?

部分解释:

FocalNet:假设星形操作可以作为调制或门控机制,动态改变输入特征。
HorNet:假设有效利用高阶特征。
VAN、Monarch Mixer:假设其有效性归因于卷积注意。

以上解释主要基于直觉和假设,缺乏全面的分析和有力的证据。

该论文则是通过明确地证明星型运算具有将输入映射到一个非常高维的非线性特征空间的能力,来解释星型运算的强代表性能力。

  • 揭示了星形运算具有将特征投射到极高维隐式特征空间的能力
  • 通过实证结果和理论探索来验证分析以及视觉表现
  • 提出StarNet,超越了许多高效的设计。
  • 该论文的分析可作为一个指导框架,引导研究人员进行的络设计。

论文

论文名: Rewrite the Stars

论文速递: 点我转跳哦

代码通道: GitHub(StarNet)

重写星形运算

主要创新网络
深度可分离卷积MobileNet
特征洗牌ShuffleNet, ShuffleNetv2
特征重用GhostNet, FasterNet
网络架构搜索EfficientNet, MnasNet
重参数MobileOne, FasterViT
混合架构Mobile-Former, EdgeViT
隐式高维StarNet

一层网络

在单层神经网络中,星形运算通常写成 ( W 1 T X + B 1 ) ∗ ( W 2 T X + B 2 ) ( W _ { 1 } ^ { T } X + B _ { 1 } ) * ( W _ { 2 } ^ { T } X + B _ { 2 } ) (W1TX+B1)(W2TX+B2),通过元素乘法实现两个线性变换特征的融合。为方便起见,将权重矩阵和偏差合并为一个实体,记为:
W = [ W B ] , X = [ X 1 ] W = \begin{bmatrix} W \\ B \end{bmatrix} , X = \begin{bmatrix} X \\ 1 \end{bmatrix} W=[WB],X=[X1]

进而,星形运算表示为: ( W 1 T X ) ∗ ( W 2 T X ) ( W _ { 1 } ^ { T } X ) * ( W _ { 2 } ^ { T } X ) (W1TX)(W2TX)

为了简化分析,将重点放在涉及单输出通道转换和单元素输入的场景上。具体定义 w 1 , w 2 , x ∈ R ( d + 1 ) × 1 w _ { 1 } , w _ { 2 },x \in R^{( d + 1 ) \times 1} w1,w2,xR(d+1)×1,其中 d d d为输入通道号。它可以很容易地扩展以适应多个输出通道 W 1 , W 2 ∈ R ( d + 1 ) × ( d ′ + 1 ) W _ { 1 } , W _ { 2 } \in R^{( d + 1 ) \times ( d ^ { \prime } + 1 )} W1,W2R(d+1)×(d+1),并处理多个特征元素,其中 X ∈ R ( d + 1 ) × n X \in R ^ { ( d + 1 ) \times n } XR(d+1)×n

一般来说,重写星号运算:

w 1 T x ∗ w 2 T x w _ { 1 } ^ { T } x \ast w _ { 2 } ^ { T } x w1Txw2Tx
= ( ∑ i = 1 d + 1 w 1 i x i ) ∗ ( ∑ j = 1 d + 1 w 2 j x j ) = ( \sum _ { i = 1 } ^ { d + 1 } w _ { 1 } ^ { i } x ^ { i } ) \ast ( \sum _ { j = 1 } ^ { d + 1 } w _ { 2 } ^ { j } x ^ { j } ) =(i=1d+1w1ixi)(j=1d+1w2jxj)
= ∑ i = 1 d + 1 ∑ j = 1 d + 1 w 1 i w 2 j x i x j = \sum _ { i = 1 } ^ { d + 1 } \sum _ { j = 1 } ^ { d + 1 } w _ { 1 } ^ { i } w _ { 2 } ^ { j } x ^ { i } x ^ { j } =i=1d+1j=1d+1w1iw2jxixj
= α ( 1 , 1 ) x 1 x 1 + ⋯ + α ( 4 , 5 ) x 4 x 5 + ⋯ + α ( d + 1 , d + 1 ) x d + 1 x d + 1 =\alpha _ { ( 1 , 1 ) } x ^ { 1 } x ^ { 1 } + \cdots + \alpha _ { ( 4 , 5 ) } x ^ { 4 } x ^ { 5 } + \cdots + \alpha _ { ( d + 1 , d + 1 ) } x ^ { d + 1 } x ^ { d + 1 } =α(1,1)x1x1++α(4,5)x4x5++α(d+1,d+1)xd+1xd+1

其中 i , j i, j i,j表示来通道索引, α α α是每个项的系数:

α ( i , j ) = { w 1 i w 2 j , i f i = j . w 1 i w 2 j + w 1 j w 2 i , i f i ! = j . } \alpha _ { ( i , j ) } = \left\{ \begin{matrix} w _ { 1 } ^ { i } w _ { 2 } ^ { j }, \: \: \: if \: i \:= \: j. \\ w _ { 1 } ^ { i } w _ { 2 } ^ { j } + w _ { 1 } ^ { j } w _ { 2 } ^ { i }, \: \: \: \:if \: i !=j. \end{matrix} \right\} α(i,j)={w1iw2j,ifi=j.w1iw2j+w1jw2i,ifi!=j.}

如上,星型操作可展开为 ( d + 2 ) ( d + 1 ) 2 \frac { ( d + 2 ) ( d + 1 ) } { 2 } 2(d+2)(d+1)个不同项目的组合,值得注意的是,除 α ( d + 1 , : ) x d + 1 x \alpha _ { ( d + 1 , : ) } x ^ { d + 1 } x α(d+1,:)xd+1x项外,每个项都与x呈非线性关系,表明它们是独立的、隐含的维度。

因此,可使用计算效率高的星形操作在 d d d维空间内执行计算,进而在一个 ( d + 2 ) ( d + 1 ) 2 ≈ ( d 2 ) 2 \frac { ( d + 2 ) ( d + 1 ) } { 2 } \approx ( \frac { d } { \sqrt { 2 } } ) ^ { 2 } 2(d+2)(d+1)(2 d)2(其中 d > > 2 d >> 2 d>>2),隐维特征空间中实现了一个等效表示,显着放大特征维度,而不会在单个层内产生任何额外的计算开销。

推广多层网络

以递归的方式将隐维指数增加到接近无限。考虑初始网络层宽度为 d d d,应用一个星形运算得到 ∑ i = 1 d + 1 ∑ j = 1 d + 1 w 1 i w 2 j x i x j \sum _ { i = 1 } ^ { d + 1 } \sum _ { j = 1 } ^ { d + 1 } w _ { 1 } ^ { i } w _ { 2 } ^ { j } x ^ { i } x ^ { j } i=1d+1j=1d+1w1iw2jxixj,这是在 R ( d 2 ) 2 1 R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { 1 } }} R(2 d)21的隐式特征空间中的表示。

O l O_l Ol表示第 l l l ∗ * 操作的输出,得到:
O 1 = ∑ i = 1 d + 1 ∑ j = 1 d + 1 w ( 1 , 1 ) i w ( 1 , 2 ) j x i x j ∈ R ( d 2 ) 2 1 O _ { 1 } = \sum _ { i = 1 } ^ { d + 1 } \sum _ { j = 1 } ^ { d + 1 } w _ { ( 1 , 1 ) } ^ { i } w _ { ( 1 , 2 ) } ^ { j } x ^ { i } x ^ { j } \: \:\:\:\:\in R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { 1 } }} O1=i=1d+1j=1d+1w(1,1)iw(1,2)jxixjR(2 d)21
O 2 = W 2 , 1 T O 1 ∗ W 2 , 2 T O 1 ∈ R ( d 2 ) 2 2 O _ { 2 } = W _ { 2 , 1 } ^ { T } O _ { 1 } \ast W _ { 2 , 2 } ^ { T } O _ { 1 } \: \:\:\:\:\:\:\:\:\:\:\:\:\:\in R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { 2 } }} O2=W2,1TO1W2,2TO1R(2 d)22
O 3 = W 3 , 1 T O 2 ∗ W 3 , 2 T O 2 ∈ R ( d 2 ) 2 3 O _ { 3 } = W _ { 3 , 1 } ^ { T } O _ { 2 } \ast W _ {3 , 2 } ^ { T } O _ { 2 } \: \:\:\:\:\:\:\:\:\:\:\:\:\:\in R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { 3 } }} O3=W3,1TO2W3,2TO2R(2 d)23
. . . ... ...
O l = W l , 1 T O l − 1 ∗ W l , 2 T O l − 1 ∈ R ( d 2 ) 2 l O _ { l } = W _ { l , 1 } ^ { T } O _ { l-1 } \ast W _ { l , 2 } ^ { T } O _ { l-1 } \: \:\:\:\:\:\:\:\:\:\:\in R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { l } }} Ol=Wl,1TOl1Wl,2TOl1R(2 d)2l

意味着, l l l层网络即可隐式地获得一个属于 R ( d 2 ) 2 l R^{ ( \frac { d } { \sqrt { 2 } } ) ^ { 2 ^ { l } }} R(2 d)2l的特征空间。

如给定宽度为128的10层各向同性网络,通过星形运算获得的隐式特征维数约为 9 0 1024 90^{1024} 901024,可以合理地近似为无限维。因此,通过堆叠多层,甚至只是几层,星型运算可以以指数方式大幅放大隐含维度。

特殊情况

并非所有星型操作都遵循上述公式,其中每个分支都要进行转换。例如,VAN和SENet包含一个恒等分支,而GENet不进行任何可学习变换。

W 1 W_1 W1和/或 W 2 W_2 W2的非线性性质
  • 在实际场景中,大量的研究(如Conv2Former、FocalNet等)通过合并激活函数将变换函数 W 1 W_1 W1 W 2 W_2 W2实现为非线性。尽管如此,一个关键的方面是对通道通信的维护。重要的是,隐式维度的数量保持不变(约为 d 2 2 \frac { d ^ { 2 } } { 2 } 2d2)。
W 1 T X ∗ X W _ { 1 } ^ { T } X * X W1TXX
  • 当去掉变换 W 2 W_2 W2时,隐维数从大约 d 2 2 \frac { d ^ { 2 } } { 2 } 2d2减小到 2 d 2d 2d.
X ∗ X X * X XX
  • 星形运算将特征从特征空间 { x 1 , x 2 , ⋯ , x d } ∈ R d \left\{ x ^ { 1 } , x ^ { 2 } , \cdots , x ^ { d } \right\} \in R ^ { d } {x1,x2,,xd}Rd转换为特征为 { x 1 x 1 , x 2 x 2 , ⋯ , x d x d } ∈ R d \left\{ x ^ { 1 } x ^ { 1 } , x ^ { 2 } x ^ { 2 } , \cdots , x ^ { d } x ^ { d } \right\} \in R ^ { d } {x1x1,x2x2,,xdxd}Rd的新空间。

有几个值得注意的方面需要考虑。星型操作及其特殊情况通常与空间相互作用相结合,通常通过池化或卷积实现,如VAN所示。这些方法中有许多都强调扩大接受域的好处,但往往忽略了隐含的高维空间所带来的好处。其次,将这些特殊情况结合起来是可行的。


实验

为了证实和验证分析,从不同的角度对明星运营进行了广泛的研究。

性能优势

在这里插入图片描述
在这里插入图片描述
从表2和表3可以看出,无论网络深度和宽度如何,星型运算始终优于求和运算。这种现象验证了明星运营的有效性和优越性。此外,观察到,随着网络宽度的增加,星型运算带来的性能增益逐渐减少。然而,在不同深度的情况下没有观察到类似的现象。

这种差异提出了两个关键的见解:

  • 表2所示的星型运算带来的收益逐渐减少并不是模型尺寸扩大的结果;
  • 星型操作在本质上确实扩大网络的维度,降低了网络扩大的增量效益。

决策边界比较

在2D Noisy Moon数据集上可视化这两种操作的决策边界,该数据集由两组月球形状的2D点组成。在模型配置方面,从演示块中消除了归一化层和卷积层。考虑到该数据集相对简单的性质,将模型配置为宽度为100,深度为4。
在这里插入图片描述

图2(上行)显示了求和和星型操作划定的决策边界。很明显,星形运算比求和运算更精确、更有效地描绘了一个决策边界。值得注意的是,观察到的决策边界的差异并非源于非线性,因为两种操作都在各自的构建块中包含激活函数。主要的区别在于星形运算能够达到极高的维度。

如上所述,星型运算类似于核函数,特别是多项式核函数。为了证实这一点,还用高斯和多项式来说明支持向量机的决策边界内核(使用scikit-learn包实现),见图2(下一行)。与预期一致,星型运算产生的决策边界与多项式核的决策边界非常接近,而与高斯核有明显的偏离。

扩展到无激活函数的网络

激活函数是神经网络中必不可少的基本组成部分。然而,常用的ReLU和GELU等激活方法存在一定的缺陷,如“均值偏移”和信息丢失等。如果没有激活函数,传统的神经网络会因为缺乏非线性而崩溃为单层网络。

在本研究中,虽然主要关注的是通过星型运算获得的隐式高维特征,但非线性方面也具有深远的重要性。为了研究这一点,通过从DemoNet(第一张图)中删除所有激活来进行实验,从而创建一个无激活的网络。
在这里插入图片描述

如上表,去除所有激活后,求和操作的性能明显恶化,从66.2%降至32.4%。与之形成鲜明对比的是,星形操作仅受到消除激活的最小影响,精度仅下降1.2%。该实验不仅证实理论分析,而且为未来的研究开辟了广阔的道路。

公开讨论和更广泛的影响

虽然基于简单的操作,本文的分析为探索深度学习的基本挑战奠定了基础。下面,概述了几个有希望和有趣的研究问题,值得进一步研究,其中恒星操作可能发挥关键作用。

激活函数真的不可或缺吗?

在本文研究中,主要集中在星型运算引入的隐式高维方面。值得注意的是,星型运算还包含非线性,这是核函数区别于其他线性机器的一个特点。研究的初步实验证明了在神经网络中消除激活层的潜在可行性。

星型运算与自注意力和矩阵乘法有什么关系?

自注意利用矩阵乘法在 R n × n R ^ { n \times n } Rn×n空间中生成矩阵。可以证明,自注意中的矩阵乘法与元素乘法具有相似的属性(非线性和高维)。值得注意的是,与元素乘法相比,矩阵乘法促进了全局交互。然而,矩阵乘法改变了输入形状,需要额外的操作(例如,池化,另一轮矩阵乘法等)来调和张量形状,这是通过元素乘法避免的复杂性。本文分析可以为自注意力的有效性提供新的见解,并有助于重新审视神经网络中的“动态”特征。

如何优化隐式高维空间中的系数分布?

传统的神经网络可以为每个通道学习一组不同的权重系数,但是星形运算中每个隐含维度的系数是固定的,类似于核函数。例如,在多项式核函数 k ( x 1 , x 2 ) = ( γ x 1 ⋅ x 2 + c ) d k ( x _ { 1 } , x _ { 2 } ) = ( \gamma x _ { 1 } \cdot x _ { 2 } + c ) ^ { d } k(x1,x2)=(γx1x2+c)d中,可以通过超参数调整系数分布。

在星形运算中,虽然权重 W 1 W_1 W1 W 2 W_2 W2是可学习的,但它们只提供了有限的范围来微调分布,而不像传统神经网络那样允许为每个通道定制系数。这个约束可以解释为什么极高的维度只能带来适度的性能改进。值得注意的是,跳跃连接似乎有助于平滑系数分布,密集连接(如DenseNet)可能提供额外的好处。此外,采用指数函数可以直接映射到隐式无限维,类似于高斯核函数。

StarNet

鉴于星型运算的独特优势——它能够在低维空间中进行计算,同时产生高维特征——确定了它在高效网络架构领域的实用性。因此,本文引入StarNet作为概念验证模型。StarNet的特点是极简的设计和显著减少人为干预。尽管它很简单,但StarNet展示了卓越的性能,强调了星型操作的有效性。

StarNet的结构为4阶段分层架构,利用卷积层进行下采样,并利用改进的演示块进行特征提取。为了满足效率的要求,用批归一化代替层归一化,并将其置于深度卷积之后(可以在推理过程中融合)。从MobileNeXt中汲取灵感,在每个块的末尾合并深度卷积。通道扩展因子始终设置为4,网络宽度在每个阶段加倍。演示块中的GELU激活被ReLU6取代,遵循MobileNetv2设计。StarNet框架如下图,仅通过改变块号和输入嵌入通道号来构建不同大小的StarNet。
在这里插入图片描述

虽然许多先进的设计技术(如重新参数化、与注意力集成、SE-block等)可以在经验上提高性能。通过刻意避开这些复杂的设计元素并尽量减少人为设计干预,强调星型操作在StarNet概念化和功能中的关键作用。

实验

实验设置

  • 优化器:AdamW
  • batch size: 2048
  • 学习率:3e−3
  • epoch:300

实验结果

在这里插入图片描述
实验结果见上表。与许多其他最先进的高效模型相比,StarNet具有最小的手工设计,能够提供有希望的性能。值得注意的是,StarNet在iPhone 13设备上的准确率仅为0.7秒,达到了73.5%的第一名,超过了mobileone - 50 2.1% (73.5% vs 71.4%),在相同的延迟。当将模型缩放到1G FLOPs预算时,StarNet继续表现出卓越的性能,比MobileOne-S2高出1.0%,比EdgeViT-XS高出0.9%,同时速度提高了三倍(1.0 ms vs 3.5 ms)。
在这里插入图片描述

StarNet的简洁设计,主要归功于星型操作的基本作用。图4进一步说明了各种模型之间的延迟-精度权衡。能否进一步推动StarNet的性能再上一个台阶? 通过仔细的超参数优化,利用表1的见解,并应用训练增强,如更多的时代或蒸馏,可以对StarNet的性能进行实质性的改进。


消融实验

星型操作被认为是模型高性能的唯一贡献者。为了从经验上验证这个断言,在实现中系统地用求和取代了星号运算。具体来说,这需要用模型架构中的“+”替换“*”操作符。
在这里插入图片描述
结果如上表所示。取消所有星型作业导致性能显著下降,精度下降3.1%。有趣的是,在模型的第一和第二阶段,星型操作对性能的影响似乎很小。这种观察是合乎逻辑的。在非常窄的宽度下,ReLU6激活会导致一些特征变为零。在星形运算的背景下,这导致其隐含的高维空间中的许多维度也变为零,从而限制了其全部潜力。然而,它的贡献在最后两个阶段(更多的渠道)变得更加明显,分别导致1.6%和1.6%的改进。
在这里插入图片描述
星型操作的延迟影响,如上表。从理论上讲,与简单的求和运算相比,乘法运算被认为具有更高的计算复杂度,正如几篇相关著作所指出的那样。然而,实际的延迟结果可能并不总是与理论预测一致。本文进行了基准测试,比较了用求和替换所有星型操作的延迟。从表中,观察到延迟影响取决于硬件。在实践中,星型操作并不会导致GPU和iPhone设备上相对于求和操作的任何额外延迟。然而,在CPU上,求和运算比星型运算效率略高(例如,StarNet-S4的求和运算为8.4ms,星型运算为9.4 ms)。考虑到相当大的性能差距,CPU上的这个小延迟开销可以忽略不计。
在这里插入图片描述

激活函数放置的研究。对网络块中激活函数(ReLU6)的位置进行了全面的分析。为清晰起见,用x1和x2表示两个分支的输出,以StarNet-S4作为示范模型。研究了在StarNet中实现激活功能的四种方法:1)不使用激活,2)激活两个分支,3)激活后星型操作,以及4)激活单个分支。表明只激活一个分支产生最高的准确率,达到78.4%。令人鼓舞的是,完全去除来自StarNet的激活(除了在茎层中的激活)导致准确率仅降低2.8%,使其降至75.6%,这一性能仍然与表6中一些强大的基线具有竞争力。强调了无激活网络的潜力。

在这里插入图片描述
在这里插入图片描述

星形操作块的设计研究。在StarNet中,星形运算通常被实现为 a c t ( W 1 T X ) ∗ ( W 2 T X ) a c t ( W _ { 1 } ^ { T } X ) * ( W _ { 2 } ^ { T } X ) act(W1TX)(W2TX),使StarNet-S4的准确率达到84.4%。然而,替代实现是可能的。本文尝试了一个变化: ( W 2 T a c t ( W 1 T X ) ) ∗ X ( W _ { 2 } ^ { T } a c t ( W _ { 1 } ^ { T } X ) ) * X (W2Tact(W1TX))X,其中 W 1 ∈ R d × d ′ W _ { 1 } \in R ^ { d \times d ^ { \prime } } W1Rd×d被设计为扩展宽度,而 W 2 ∈ R d ′ × d W _ { 2 } \in R ^ { d ^ { \prime } \times d } W2Rd×d将其恢复为 d d d。这种调整导致仅转换一个分支,而另一个分支保持不变。改变 d ′ d' d以确保与StarNet-S4相同的计算复杂度。因此,性能从78.4%下降到74.4%。虽然更好和更仔细的设计可能会减轻这种性能差距,但准确性的显着差异强调了在利用星型操作能力方面的初始实施的有效性,并强调了在星型操作中转换两个分支的关键重要性。


总结

总结: 对星形操作进行了重新语境化,发现它们强大的表征能力来源于隐含的高维空间。在许多方面,星号运算反映了多项式核函数的行为。在此基础上,将star操作定位于高效网络设计领域,并推出了简单的原型网络StarNet。StarNet令人印象深刻的表现,在没有依赖复杂的设计或精心选择的超参数的情况下取得的,证明了星型操作的有效性。


致谢

欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。


参考

[1]. Ma, Xu, **yang Dai, Yue Bai, Yizhou Wang, and Yun Fu. “Rewrite the Stars.” arxiv preprint arxiv:2403.19967 (2024).
[2]. Markdown常见语法

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

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

相关文章

JDK版本特性(JDK8\11\17\21版本)

JDK版本特性 Oracle官网https://www.oracle.com/java/technologies/java-se-support-roadmap.html Oracle官网中JDK版本的说明,Java SE 8、11、17和21是LTS版本。也就是长期支持版本。 我们针对这几个版本了解学习下对应版本的新特性。 JDK8版本 正式发布于2014…

Facebook的创新实验室:人工智能与新技术探索

Facebook作为全球领先的社交媒体平台之一,一直在不断探索和应用最新的技术来改善用户体验、推动创新和拓展业务边界。其创新实验室更是探索人工智能(AI)和新技术的前沿,为未来的社交媒体发展开辟了新的可能性。本文将深入探讨Face…

【题解 | 分享】2023年十四届蓝桥杯国赛(Java B组)

互质 答案:640720414 参考: public class Main {static int mod 1000000007;public static void main(String[] args) {long sum power(2023, 2023);long p1 ((sum % mod) * power( 7, mod - 2)) % mod;long p2 ((sum % mod) * power( 17, mod -…

【ZYNQ】SCU 与 GIC

在多 CPU 架构中,处理器之间可以对共享数据进行操作。Snoop control uint (SCU) 模块用于确保每个处理器都在最新的数据拷贝上运行,从而保持缓存一致性。通用中断控制器 Generic interrupt controller (GIC) 使用优先级的思想,管理 CPU 中断信…

Spring系统学习 - Spring入门

什么是Spring? Spring翻译过来就是春天的意思,字面意思,冠以Spring的意思就是想表示使用这个框架,代表程序员的春天来了,实际上就是让开发更加简单方便,实际上Spring确实做到了。 官网地址:ht…

【Mac】XMind for mac(XMind思维导图)v24.04.10311软件介绍和安装教程

软件介绍 XMind for Mac是一款功能强大的思维导图软件。它具有以下主要特点: 1.多样化的思维导图功能:XMind for Mac提供了丰富的思维导图编辑功能,用户可以创建各种类型的思维导图,包括组织结构图、逻辑图、时间轴图等&#xf…

fluent UI v9版本Dialog右上角x按钮聚焦问题解决

右上角x按钮聚焦效果展示 第一次点击不会聚焦,第二次或多次点击会出现这种情况。如果多个地方公用一个页面里,这个页面包含这个组件,那其它页面刚打开弹框就是聚焦状态,是个样式的问题。 解决: import * as React fr…

【Vue3】自定义组件directiveapp.use()

历史小剧场 崇祯很勤政,崇祯并非王国之君,弘光很昏庸,弘光活该倒霉,几百年来,我们都这样认为。 但我们之所以一直这样认为,只是因为有人这样告诉我们。 之所以有人这样告诉我们,是因为他们希望我…

比较与深浅克隆

1.比较 (1)Comparable接口:(重写compareTo方法) 由于它是一个接口,而且在这个接口中只有一个compareTo方法,所以所有实现该接口的类都需要重写。这个compareTo方法相当于制定一个比较标准&…

pyinstaller将py文件打包成exe

pyinstaller将py文件打包成exe 一、为什么需要将python文件打包成exe文件?二、具体操作步骤一、为什么需要将python文件打包成exe文件? python文件需要在python环境中运行,也就是需要安装python解释器。有时我们自己写的python程序需要分享给自己的朋友、同事或者合作伙伴,…

封装一个websocket,支持断网重连、心跳检测,拿来开箱即用

封装一个websocket,支持断网重连、心跳检测 代码封装 编写 WebSocketClient.js import { EventDispatcher } from ./dispatcherexport class WebSocketClient extends EventDispatcher {constructor(url) {console.log(url, urlurl)super()this.url url}// #soc…

STM32_FSMC_HAL(介绍)

FSMC(Flexible Static Memory Controller)是STM32微控制器中的一种内存控制器,它允许微控制器与外部存储器接口,如SRAM、NOR Flash、NAND Flash和PSRAM等。FSMC特别适用于需要高速数据交换和大量数据存储的应用场景。 典型应用&a…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

【机器学习】让大模型变得更聪明

文章目录 前言1. 理解大模型的局限性1.1 理解力的挑战1.2 泛化能力的挑战1.3 适应性的挑战 2. 算法创新&#xff1a;提高模型学习和推理能力2.1 自监督学习2.2 强化学习2.3 联邦学习 3. 数据质量与多样性&#xff1a;增强模型的泛化能力3.1 高质量数据的获取3.2 数据多样性的重…

#1 深度优先搜索

深搜思想 DFS其实是针对图论的一种搜索算法&#xff0c;由一个节点出发&#xff0c;不撞南墙不回头式的遍历所有的节点。 如先遍历1&#xff0c;沿&#xff08;1,2&#xff09;遍历2&#xff0c;再沿&#xff08;2,4&#xff09;遍历4&#xff0c;撞南墙&#xff08;边界条件…

XSS另类攻击(四)kali系统beef-xss安装和使用

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、环境说明 kali系统&#xff0c;ip&#xff1a;192.1…

k8s的ci/cd实践之旅

书接上回k8s集群搭建完毕&#xff0c;来使用它强大的扩缩容能力帮我们进行应用的持续集成和持续部署&#xff0c;整体的机器规划如下&#xff1a; 1.192.168.8.156 搭建gitlab私服 docker pull gitlab/gitlab-ce:latest docker run --detach --hostname 192.168.8.156 --publ…

SAP 生产订单批量报工(代码分享)

最近公司一直在对成本这块的业务进行梳理,影响比较大的就是生产这块的报工,经常会要求要批量的冲销报工,然后在继续报工,来调整生产订单的实际工时,前面的博客中已经给大家分享了批量冲销生产订单的代码, 下面给大家分享一下生产订单批量报工的代码 首先流程制造和离散制…

【算法】过桥

✨题目链接&#xff1a; 过桥 ✨题目描述 ✨输入描述: 第一行一个数n(2≤n≤2000) 接下来一行n个数a[i](1≤|a[i]|≤2000)表示浮块上的数字 ✨输出描述: 输出一行&#xff0c;表示对应的答案 ✨示例1 &#x1f4cd;输入 4 2 2 -1 2 &#x1f4cd;输出 2 &#x1f4cd;说明 1…

HNCTF 2024 ez_pecp 冰蝎+CS流量分析

考点:冰蝎webshell流量分析CS4.x流量解密 给了两个 流量包 第一个 ctf1.pcapng 查看其HTTP请求 而在CS中流量特征是基于tls协议 http-beacon 通信中&#xff0c;默认使用 GET 方法向 /dpixel 、/__utm.gif 、/pixel.gif 等地址发起请求&#xff0c;而且下发指令的时候会请求 …