跨层均衡化优化方法、设备及存储介质与流程

未命名 09-13 阅读:97 评论:0


1.本技术涉及人工智能(artificial intelligence,ai)技术领域,尤其涉及一种跨层均衡化优化方法、设备及存储介质。


背景技术:

2.随着科学技术的进步,越来越多的神经网络模型从服务器端迁移到边缘侧等资源有限的电子设备。以智能手机为例,由于智能手机对神经网络模型的执行过程有严格的时间限制,或在长期执行时对功耗有严格的要求,或对神经网络模型的尺寸有严格的要求,因此可以对神经网络模型进行量化,以将复杂的神经网络模型部署在资源有限的智能手机上。
3.目前,在对神经网络模型进行逐张量(tensor-wise)量化时,若量化前后存在明显的误差,则可以使用跨层均衡化(cross-layer equalization,cle)方法对相邻的卷积层进行均衡,以降低量化误差。但是,对于在相邻的卷积层之间插入了注意力模块(attention block)的神经网络模型,注意力模块会破坏前后卷积层的相邻性,导致逐张量量化的误差依然较大。


技术实现要素:

4.本技术提供了一种cle优化方法、设备及存储介质,在对插入了注意力模块的神经网络模型进行逐张量量化时,通过均衡注意力模块前后的卷积层的权重,降低了逐张量量化的误差,提升了量化后的神经网络模型的精度。
5.为达到上述目的,本技术采用如下技术方案:
6.第一方面,本技术实施例提供一种cle优化方法。该方法包括:
7.在对神经网络模型进行逐张量量化时,根据位于注意力模块之前的第一卷积层的权重张量,以及位于注意力模块之后的第二卷积层的权重张量,确定第一缩放因子。采用第一缩放因子,对第一卷积层和第二卷积层进行权重均衡;以及,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换。
8.在上述方案中,通过将位于注意力模块前后的卷积层视为一组相邻的卷积层,并对注意力模块前后的卷积层进行权重均衡,可以降低逐张量量化的误差,提升量化后的神经网络模型的精度。此外,在改变了注意力模块前后卷积层的权重分布后,由于神经网络模型的浮点向前输出不受影响,因此通过对注意力模块所包含的卷积层进行权重变换,可以保证注意力模块前后模型的浮点输出在数学上等价关系,进一步提升量化后的神经网络模型的精度。
9.在一种可能的实现方式中,根据位于注意力模块之前的第一卷积层的权重张量,以及位于注意力模块之后的第二卷积层的权重张量,确定第一缩放因子,包括:根据第一卷积层的权重张量中第i个通道的动态范围,以及第二卷积层的权重张量中第i个通道的动态范围,确定第一缩放因子中的第i缩放因子。相应地,采用第一缩放因子,对第一卷积层和第
二卷积层进行权重均衡,包括:采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡。其中,i为从1到c依次取值的整数,c为卷积层包含的通道数。应理解,由于各个卷积层对应的权重张量包含了多个通道,因此可以分别针对各个通道进行权重均衡。
10.在一种可能的实现方式中,第一卷积层为一个普通卷积层,第二卷积层为一个普通卷积层。或者,第一卷积层为一个普通卷积层和一个深度卷积层,第二卷积层为一个普通卷积层,且深度卷积层位于两个普通卷积层之间。或者,第一卷积层为一个普通卷积层,第二卷积层为一个深度卷积层和一个普通卷积层,且深度卷积层位于两个普通卷积层之间。
11.在一种可能的实现方式中,若第一卷积层为一个普通卷积层,第二卷积层为一个普通卷积层,则具体可以采用下述公式确定第一缩放因子中的第i缩放因子:
[0012][0013]
其中,表示第一卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子。i为从1到c1依次取值的整数。c1为第一卷积层的权重张量中包含的输出通道数,第一卷积层的权重张量中包含的输出通道数等于第二卷积层的权重张量中包含的输入通道数。
[0014]
在一种可能的实现方式中,采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输入通道的动态范围。
[0015]
在一种可能的实现方式中,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换,包括:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0016]
在一种可能的实现方式中,第一卷积层为一个普通卷积层和一个深度卷积层,第二卷积层为一个普通卷积层,第i缩放因子包括两个子缩放因子,则具体可以采用下述公式确定第一缩放因子中的第i缩放因子所包括的两个子缩放因子:
[0017][0018][0019]
其中,表示第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围,表示第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子缩
放因子,表示第i缩放因子所包括的第二个子缩放因子。i为从1到c1依次取值的整数。c1为第一卷积层中普通卷积层的权重张量中包含的输出通道数,第一卷积层的权重张量中普通卷积层包含的输出通道数等于第一卷积层的权重张量中深度卷积层的权重张量中包含的输出通道数、等于第二卷积层的权重张量中包含的输入通道数。
[0020]
在一种可能的实现方式中,采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围;将与第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输入通道的动态范围。
[0021]
在一种可能的实现方式中,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换,包括:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0022]
在一种可能的实现方式中,第一卷积层为一个普通卷积层,第二卷积层为一个深度卷积层和一个普通卷积层,第i缩放因子包括两个子缩放因子,则具体可以采用下述公式确定第一缩放因子中的第i缩放因子所包括的两个子缩放因子:
[0023][0024][0025]
其中,表示第一卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子缩放因子,表示第i缩放因子所包括的第二个子缩放因子。c1为第一卷积层的权重张量包含的输出通道数,第一卷积层的权重张量包含的输出通道数等于第二卷积层中深度卷积层的权重张量包含的输出通道数、等于第二卷积层中普通卷积层的权重张量包含的输入通道数。
[0026]
在一种可能的实现方式中,采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的
第一卷积层的权重张量中第i个输出通道的动态范围;将与第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围。
[0027]
在一种可能的实现方式中,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换,包括:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0028]
在一种可能的实现方式中,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换,包括:将第一缩放因子与注意力模块包括的第一个卷积层的权重张量相乘,得到第一个卷积层变换后的权重张量。
[0029]
在一种可能的实现方式中,采用第一缩放因子,对注意力模块包含的卷积层进行权重变换,还包括:
[0030]
在注意力模块还包括与第一个卷积层相邻的第二个卷积层的情况下,根据第一个卷积层变换后的权重张量,以及第二个卷积层的权重张量,确定第二缩放因子;并采用第二缩放因子,对第一个卷积层和第二个卷积层进行权重均衡;其中,第一个卷积层和第二个卷积层为两个普通卷积层;
[0031]
或者,
[0032]
在注意力模块还包括与第一个卷积层相邻的第二个卷积层和第三个卷积层的情况下,根据第一个卷积层变换后的权重张量、第二个卷积层的权重张量以及第三个卷积层的权重张量,确定第三缩放因子和第四缩放因子;并采用第三缩放因子,对第一个卷积层和第二个卷积层进行权重均衡;以及采用第四缩放因子,对第二个卷积层和第三个卷积层进行权重均衡;其中,第一个卷积层和第三个卷积层为普通卷积层,第二个卷积层为深度卷积层。
[0033]
在一种可能的实现方式中,具体可以采用下述公式确定第二缩放因子:
[0034][0035]
其中,表示第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示第二个卷积层的权重张量中第j个输入通道的动态范围,表示第二缩放因子。j为从1到c2依次取值的整数。c2为注意力模块包括的第一个卷积层的权重张量中包含的输出通道数,该第一个卷积层的权重张量中包含的输出通道数等于第二个卷积层的权重张量中包含的输入通道数。
[0036]
在一种可能的实现方式中,具体可以采用下述公式确定第三缩放因子和第四缩放因子:
[0037][0038][0039]
其中,表示第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示第二个卷积层的权重张量中第j个输出通道的动态范围,表示第三个卷积层的权重张量中第j个输入通道的动态范围,表示第三缩放因子,表示第四缩放因子。j为从1到c2依次取值的整数。c2为注意力模块包括的第一个卷积层的权重张量中包含的输出通道数,该第一个卷积层的权重张量中包含的输出通道数等于第二个卷积层的权重张量中包含的输出通道数、等于第三个卷积层的权重张量中包含的输入通道数。
[0040]
第二方面,本技术提供一种cle优化装置,该装置包括用于执行上述第一方面中任一项的方法的单元/模块。该装置可对应于执行上述第一方面描述的方法,该装置中的单元/模块的相关描述请参照上述第一方面的描述,为了简洁,在此不再赘述。
[0041]
第三方面,提供一种电子设备,包括处理器,该处理器与存储器耦合,该处理器用于执行该存储器中存储的计算机程序或指令,以使得电子设备实现如第一方面中任一项的cle优化方法。
[0042]
第四方面,提供一种芯片,该芯片与存储器耦合,该芯片用于读取并执行该存储器中存储的计算机程序,以实现如第一方面中任一项的cle优化方法。
[0043]
第五方面,提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序在电子设备上运行时,使得电子设备执行如第一方面中任一项的cle优化方法。
[0044]
第六方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面中任一项的cle优化方法。
[0045]
可以理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
[0046]
图1为本技术实施例提供的一种逐张量量化的示意图;
[0047]
图2为本技术实施例提供的一种relu激活函数的示意图;
[0048]
图3为本技术实施例提供的两个相邻普通卷积层按照通道缩放实现权重均衡的示意图;
[0049]
图4为本技术实施例提供的对两类相邻的卷积层进行均衡的示意图;
[0050]
图5为本技术实施例提供的一种cbam的结构示意图;
[0051]
图6为本技术实施例提供的三种插入了注意力模块的多分支结构的示意图;
[0052]
图7为本技术实施例提供的对多分支结构进行cle优化的示意图之一;
[0053]
图8为本技术实施例提供的对多分支结构进行cle优化的示意图之二;
[0054]
图9为本技术实施例提供的对多分支结构进行cle优化的示意图之三;
[0055]
图10为本技术实施例提供的cle优化方法的总流程示意图;
[0056]
图11为本技术实施例提供的cle优化装置的结构示意图;
[0057]
图12为本技术实施例提供的一种电子设备的结构示意图;
[0058]
图13为本技术实施例提供的cpu和npu的示意图。
具体实施方式
[0059]
下面对本技术中涉及的一些名词或者术语进行解释说明。
[0060]
(1)人工神经网络
[0061]
人工神经网络(artificial neural networks,anns),也称为神经网络(nns)、连接模型(connection model)或神经网络模型,是一种资源密集型算法,其不仅需要大量的计算成本,还要消耗大量的内存。当将神经网络模型从服务器端迁移到边缘侧等资源有限的电子设备上时,如何将复杂的神经网络模型部署在资源有限的设备上是当前深度学习技术必须要解决的问题。作为通用神经网络模型的优化方法之一,模型量化可以减小神经网络模型的尺寸大小和模型推理时间,其适用于绝大多数模型和不同的硬件设备。
[0062]
需要说明的是,本技术实施例提供的cle优化方法可以适用于各种在相邻的卷积层之间插入了注意力模块的神经网络模型,比如深度神经网络(deep neural network,dnn),卷积神经网络(convolutional neural network,cnn)、循环神经网络(recurrent neural network,rnn)或长短期记忆网络(long short term memory,ltm)等,本技术实施例不作限定。
[0063]
(2)量化
[0064]
量化(quantization)是将信号的连续取值近似为有限个离散值的过程,属于一种信息压缩的方法。在计算机系统上,量化一般用“低比特”来表示。为了保证较高的精度,计算机中大部分的科学运算通常采用浮点型进行计算,常见的浮点型包括float32和float64等。神经网络模型的量化就是将网络模型的权值、激活值等从高精度的浮点值转化成低精度的定点值的过程,比如将float32转化成int8。由于模型量化是一种近似算法,精度损失是一个严峻的问题,量化的目标是以较小的精度损失代价,获得更少的存储开销和贷款需求、更低的功耗及更快的计算速度,以及降低系统延时等。
[0065]
通常,一个量化器可以包括下述三个参数:
[0066]
1、scale:量化的步长,表示浮点值与定点值之间的比例关系。
[0067]
2、zero_point,以整数值表示的偏移量,表示浮点值中的0.0经过量化后对应的准确值。
[0068]
3、bit_width:量化的位宽。
[0069]
量化粒度分为张量级量化(tensor-wise)和通道级量化(channel-wise)。张量级量化为一个张量指定一个等级(scale),属于一种粗粒度的量化方式。通道级量化为每个通道指定一个scale属于一种细粒度的量化方式。
[0070]
张量级量化的张量可以是激活(activation)和权重(weights)。对于激活而言:在卷积网络中其格式一般为nchw,其中,n为batch_size,表示单次传递给程序用以训练的参数个数(即张量的个数),c为通道数,h为激活特征图的高,w为激活特征图的宽。这时在张量维度上进行量化,将对每个激活值产生对应的scale;对于权重而言:在卷积网络中其格式
一般为oihw,其中,o为输出通道数,i为输入通道数,h为卷积核高,w为卷积核宽,这时在张量维度上进行量化,将对每个权重产生对应的scale。
[0071]
在对张量进行量化时使用的量化公式如下:
[0072][0073]
其中,x为输入,q为量化后的张量。
[0074]
示例性地,图1示出了一种逐张量量化的示意图。如图1所示,对于一个卷积层对应的激活张量,激活张量的高为h,激活张量的宽为w,激活张量的通道数为c。每个卷积核的高和宽均为k,每个卷积核的通道数均为c,卷积核的总数为o,c和o均为正整数。o个卷积核共用相同的scale和zero point。在深度学习中,张量量化也称为逐层量化,由于张量的每一个通道通常代表一类特征,因此可能会出现不同的通道之间数据差异较大的情况,从而导致明显的误差,进而影响了量化精度。
[0075]
(3)cle
[0076]
cle的核心思想是使用激活函数的尺度-同变性特征,即满足f(sx)=sf(x)关系的修正线性单元(rectified linear unit,relu)、参数修正线性单元(parametric rectified linear unit,prelu)等激活函数,来均衡神经网络模型的权重的数值范围。对权重的数值范围大的卷积层(convolutional layer,conv)进行缩小,并对权重的数值范围小的卷积层进行扩大,从而降低量化误差。
[0077]
示例性地,图2示出了一种relu激活函数的示意图。如图2所示,当x》0时,relu(x)=x;当x≤0时,relu(x)=0。在逐张量量化时,通过遍历批处理(batch)每个张量,仅保留x》0的特征。
[0078]
假定神经网络中有两个连续的卷积层:
[0079]
h=f(w
(1)
·
x+b
(1)
);
[0080]
y=f(w
(2)
·
x+b
(2)
)。
[0081]
其中,w
(1)
和w
(2)
为权重(weight)(也称为权重张量),b
(1)
和b
(2)
为偏置量(bias)。
[0082]
通过设置缩放因子s,可以实现跨层的权重均衡:
[0083][0084]
即,两个连续的卷积层的权重变为:
[0085][0086]
以及,
[0087][0088]
传统cle会对相邻的卷积层进行均衡,具体分为下述两类:
[0089]
第一类,针对相邻的两个普通卷积层,也称为常规卷积层,可以把这两个卷积层作为一组(conv,conv)进行均衡。
[0090]
示例性地,图3示出了两个相邻的普通卷积层按照通道缩放实现权重均衡的示意图。如图3所示,对于两个相邻的普通卷积层,通过在两个普通卷积层之间使用relu或prelu
等激活函数,可以将前面一个卷积层对应的权重张量的通道i的系数设置为s-1
,并将后面一个卷积层对应的权重张量的通道i的系数设置为s,从而实现了两个普通卷积层的权重均衡。
[0091]
第二类,针对第一层为普通卷积层,第二层为深度卷积(depthwise convolutional,dw conv)层,先查找与深度卷积层相邻的下一个普通卷积层,然后三个卷积层作为一组(conv,dw conv,conv)进行均衡。
[0092]
示例性地,图4示出了对两类相邻的卷积层进行均衡的示意图。如图4中的(a)所示,relu激活函数是对两个普通卷积层进行权重均衡的必要条件之一。如图4中的(b)所示,第一个relu激活函数和第二个relu激活函数是对三个卷积层进行权重均衡的必要条件之一。
[0093]
需要说明的是,在本技术实施例中,relu激活函数也称为relu层,prelu激活函数也称为prelu层。
[0094]
(4)注意力模块
[0095]
注意力模块为在计算机视觉(computer vision)中采用的一种自注意力机制(self-attention)。比如,注意力模块可以为通道注意力模块(squeeze-and-excitation,se)、卷积块注意力模块(convolutional block attention module,cbam)、ecanet或感受野模块(receptive field block,rfb)等,本技术实施例不作限定。
[0096]
示例性地,图5示出了本技术实施例提供的一种cbam的结构示意图。如图5所示,cbam是由通道(channel)注意力模块和空间(spatial)注意力模块组成。cbam的总体流程包括:输入特征图先经过通道注意力模块,再将通道权重和输入特征图相乘后再送入空间注意力模块,之后将归一化后的空间权重和空间注意力模块的输入特征图相乘,得到最终加权后的特征图。空间注意力模块可使神经网络更加关注图像中对分类起决定作用的像素区域而忽略无关紧要的区域,通道注意力模块用于处理特征图通道的分配关系,同时对两个维度进行注意力分配增强了注意力模块对神经网络模型性能的提升效果。
[0097]
目前,在对神经网络模型进行逐张量量化时,若量化前后存在明显的误差,则可以使用cle方法对相邻卷积层进行均衡,以降低量化误差。但是,在mobilenetv3和efficientnet等神经网络模型结构中,会在相邻的卷积层之间插入注意力模块,而注意力模块破坏了前后卷积层的相邻性,导致传统的cle方法无法均衡注意力模块前后的卷积层,使得逐张量量化的误差依然较大。
[0098]
示例性地,图6示出了三种插入了注意力模块的多分支结构的示意图。
[0099]
如图6中的(a)所示,在插入注意力模块之前,第一个普通卷积层“conv层_1”和第二个普通卷积层“conv层_2”相邻,可以采用传统的cle方法将这两个卷积层作为一组(conv,conv)进行权重均衡。在“conv层_1”和“conv层_2”之间插入了注意力模块后,注意力模块破坏了“conv层_1”和“conv层_2”的相邻性,此时采用传统的cle方法无法对这两个卷积层进行权重均衡。
[0100]
如图6中的(b)所示,在插入注意力模块之前,第一个普通卷积层“conv层_1”和第二个深度卷积层“dw conv层_2”相邻,第二个深度卷积层“dw conv层_2”和第三个普通卷积层“conv层_3”相邻,可以采用传统的cle方法将这三个卷积层作为一组(conv,dw conv,conv)进行权重均衡。在“dw conv层_2”和“conv层_3”之间插入了注意力模块后,注意力模
块破坏了“dw conv层_2”和“conv层_3”的相邻性,此时采用传统的cle方法无法对这三个卷积层进行权重均衡。
[0101]
如图6中的(c)所示,在插入注意力模块之前,“conv层_1”和“dw conv层_2”相邻,“dw conv层_2”和“conv层_3”相邻,可以采用传统的cle方法将这三个卷积层作为一组(conv,dw conv,conv)进行权重均衡。在“conv层_1”和“dw conv层_2”之间插入了注意力模块后,注意力模块破坏了“conv层_1”和“dw conv层_2”的相邻性,此时采用传统的cle方法无法对这三个卷积层进行权重均衡。
[0102]
为了解决上述问题,本技术实施例提供一种cle优化方法,在对神经网络模型进行逐张量量化时,如图6中的(a)、图6中的(b)和图6中的(c)所示,如果在相邻的卷积层之间插入了注意力模块,那么可以对注意力模块前后的卷积层进行权重均衡,从而可以降低逐张量量化的误差,提升量化后的神经网络模型的精度。
[0103]
本技术实施例提供的cle优化方法可以适用于各种部署有神经网络模型的电子设备,特别适用于在神经网络模型的相邻卷积层之间插入了注意力模块的多分支结构。在一些实施例中,电子设备可以为手机、平板电脑、个人数字助理(personal digital assistant,pda)、可穿戴设备、平板电脑(pad)、智能电视(也称为智慧屏或大屏设备)、虚拟现实(virtual reality,vr)设备、增强现实(augmented reality,ar)设备、工业控制(industrial control)中的无线终端、无人驾驶中的无线终端、远程医疗(remote medical)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、以及智慧家庭(smart home)中的无线终端等,或者可以为其他能够对神经网络模型进行跨层均衡化优化的设备或装置。对于电子设备的具体类型,本技术实施例不作任何限制。
[0104]
需要说明的是,在本技术实施例中,相邻的卷积层是指:在两个卷积层(conv,conv)之间没有其他卷积层,或在三个卷积层(conv,dw conv,conv)之间没有其他卷积层;或者,在两个卷积层(conv,conv)之间插入注意力模块后,或在三个卷积层(conv,dw conv,conv)之间插入注意力模块后,将其视为相邻的卷积层。
[0105]
下面以实施例一、实施例二和实施例三为例,对在相邻的卷积层之间插入了注意力模块的多分支结构,提供了三种具体的cle优化方法。
[0106]
实施例一
[0107]
以如图6中的(a)所示的在两个普通卷积层之间插入了注意力模块的多分支结构为例,本技术实施例提供了如图7所示的cle优化方法。
[0108]
首先,对如图7所示的多分支结构进行介绍。
[0109]
如图7所示,该多分支结构从前到后依次包括:普通卷积层“conv层_1”、relu层_1、注意力模块、multiply层和普通卷积层“conv层_2”。注意力模块可以包括以下模块:全局池化层(global average pool,gap)、普通卷积层“conv层_3”、relu层_2、普通卷积层“conv层_4”和sigmoid层。其中,relu层_1是一个relu激活函数,用于对“conv层_1”和“conv层_2”的权重范围进行均衡;全局池化层是将矩阵中[w,h]进行平均池化,变为一个单元,w表示该层的输入特征图的宽,h表示该层的输入特征图的高;relu层_2是一个relu激活函数,用于对“conv层_3”和“conv层_4”的权重范围进行均衡;sigmoid层是一个sigmoid()函数,无论输入什么,都使得输出在0到1之间;multiply层是一个multiply()函数,用于对两个矩阵
中对应元素相乘。
[0110]
示例性地,sigmoid()函数可以为下述公式1:
[0111][0112]
其中,x代表输入,sigmoid(x)代表输出。
[0113]
需要说明的是,本技术实施例的图7至图9中的注意力模块所包含的各个模块仅为示例性说明,其并不形成限定。在实际实现时,可以根据实际使用需求,对注意力模块所包含的各个模块进行调整。比如,将注意力模块包含的卷积层的数量设置为1个、2个,或者3个及以上。又比如,将注意力模块包含的卷积层的类型全部设置为普通卷积层,或设置为普通卷积层和深度卷积层。再比如,在注意力模块中增加其他函数或减少某些函数。
[0114]
在原本相邻的“conv层_1”和“conv层_2”之间插入了注意力模块后,注意力模块破坏了“conv层_1”和“conv层_2”的相邻性,采用传统的cle方法无法对这两个卷积层进行权重均衡,此时可以采用本技术实施例提供的cle优化方法对这两个卷积层进行权重均衡。
[0115]
该cle优化方法的具体流程如下:
[0116]
s71、电子设备将位于注意力模块之前的普通卷积层“conv层_1”和位于注意力模块之后的普通卷积层“conv层_2”视为两个相邻的卷积层,并将这两个卷积层作为一组(conv层_1,conv层_2)进行权重均衡。
[0117]
假设“conv层_1”对应的权重张量包括c1个输出通道,“conv层_2”对应的权重张量包括c1个输入通道,即,“conv层_1”对应的权重张量包括的输出通道的数量等于“conv层_2”对应的权重张量包括的输入通道的数量,则可以用表示“conv层_1”对应的权重张量中的输出通道i的动态范围,以及用表示“conv层_2”对应的权重张量中的输入通道i的动态范围。其中,i=1,2,
……
,c1。
[0118]
电子设备可以根据和采用下述公式2计算得到缩放因子
[0119][0120]
然后,电子设备可以采用缩放因子对“conv层_1”和“conv层_2”进行权重均衡,将乘入“conv层_1”的权重中,将乘入“conv层_2”的权重中。其中,为的倒数。
[0121]
具体地,由于“conv层_1”对应的权重张量包括c1个输出通道,“conv层_2”对应的权重张量包括c1个输入通道,因此电子设备可以将乘以并将乘以其中,i从1到c1依次取值。例如,将“conv层_1”对应的权重张量中的第1个输出通道的动态范围乘以并将“conv层_2”对应的权重张量中的第1个输入通道的动态范围乘以将“conv层_1”对应的权重张量中的第2个输出通道的动态范围乘以并将“conv层_2”对应的权重张量中的第2个输入通道的动态范围乘以
……
;以此类推,将“conv层_1”对应的权重张量中的第c1个输出通道的动态范围乘以并将“conv层_2”对应的权
重张量中的第c1个输入通道的动态范围乘以
[0122]
在电子设备采用cle优化方法改变了注意力模块前后卷积层的权重分布后,由于神经网络模型的浮点向前输出不受影响,为了保证注意力模块前后模型的浮点输出在数学上等价关系,电子设备还可以继续执行下述s72。
[0123]
s72、电子设备采用缩放因子对注意力模块中的卷积层进行权重变换。
[0124]
假设注意力模块包括的第一个卷积层用“conv层_3”表示,“conv层_3”对应的权重张量包括c1个输入通道和c2个输出通道,“conv层_3”所对应的权重张量中的输入通道i的动态范围用表示,“conv层_3”所对应的权重张量中的输出通道j的动态范围用表示,i=1,2,
……
,c1,j=1,2,
……
,c2则可以采用下述公式3计算得到更新后的“conv层_3”所对应的权重张量中的输入通道i的动态范围
[0125][0126]
如此,电子设备可以将“conv层_3”的权重乘以即采用替换应理解,由于“conv层_3”对应的权重张量包括c1个输入通道,因此需要将“conv层_3”对应的权重张量中的每个输入通道均乘以
[0127]
在电子设备对“conv层_3”对应的权重张量中的c1个输入通道的动态范围进行权重变换得到r3'(i)后,“conv层_3”对应的权重张量中的c2个输出通道的动态范围也会相应地发生权重变换,比如变换为
[0128]
需要说明的是,在本技术实施例中,c1和c2可以相同,也可以不同。
[0129]
s83、在电子设备采用缩放因子对注意力模块中的“conv层_3”进行权重变换后,如果注意力模块中还存在相邻的卷积模块,那么电子设备对相邻的卷积模块进行权重均衡。
[0130]
下面以注意力模块中还存在与“conv层_3”相邻的卷积层“conv层_4”,电子设备对“conv层_3”和“conv层_4”进行权重均衡为例进行示例说明。
[0131]
假设“conv层_3”对应的权重张量包括c2个输出通道,“conv层_4”对应的权重张量包括c2个输入通道,即,“conv层_3”对应的权重张量包括的输出通道的数量等于“conv层_4”对应的权重张量包括的输入通道的数量。若权重变换后的“conv层_3”对应的权重张量中的输出通道j的动态范围用表示,“conv层_4”对应的权重张量中的输入通道j的动态范围用表示,j=1,2,
……
,c2,则电子设备可以根据和采用下述公式4计算得到缩放因子
[0132][0132][0133]
然后,电子设备可以采用缩放因子对“conv层_3”和“conv层_4”进行权重均衡,将乘入“conv层_3”的权重中,将乘入“conv层_4”的权重中。其中,为的倒数。
[0134]
具体地,由于“conv层_3”对应的权重张量包括c2个输出通道,“conv层_4”对应的权重张量包括c2个输入通道,因此电子设备可以将“conv层_3”对应的权重张量中的第j个输出通道的动态范围乘以并将“conv层_4”对应的权重张量中的第j个输入通道的动态范围乘以例如,将“conv层_3”对应的权重张量中的第1个输出通道动态范围乘以并将“conv层_4”对应的权重张量中的第1个输入通道的动态范围乘以将“conv层_3”对应的权重张量中的第2个输出通道的动态范围乘以并将“conv层_4”对应的权重张量中的第2个输入通道的动态范围乘以
……
;以此类推,将“conv层_3”对应的权重张量中的第c2个输出通道的动态范围乘以并将“conv层_4”对应的权重张量中的第c2个输入通道的动态范围乘以
[0135]
至此,电子设备完成了对在两个普通卷积层之间插入了注意力模块的多分支结构的cle优化。
[0136]
实施例二
[0137]
以如图6中的(b)所示的在第二个卷积层(即深度卷积层)和第三个卷积层(即普通卷积层)之间插入了注意力模块的多分支结构为例,本技术实施例提供了如图8所示的cle优化方法。
[0138]
首先,对如图8所示的多分支结构进行介绍。
[0139]
如图8所示,该多分支结构从前到后依次包括:普通卷积层“conv层_1”、relu层_1、深度卷积层“dw conv层_2”、relu层_2、注意力模块、multiply层和普通卷积层“conv层_3”。注意力模块可以包括以下模块:全局池化层、普通卷积层“conv层_4”、relu层_3、普通卷积层“conv层_5”和sigmoid层。其中,relu层_1是一个relu激活函数,用于对“conv层_1”和“dw conv层_2”的权重范围进行均衡;relu层_2是一个relu激活函数,用于对“dw conv层_2”和“conv层_3”的权重范围进行均衡;全局池化层是将矩阵中[w,h]进行平均池化,变为一个单元,w表示该层的输入特征图的宽,h表示该层的输入特征图的高;relu层_3是一个relu激活函数,用于对“conv层_4”和“conv层_5”的权重范围进行均衡;sigmoid层是一个sigmoid()函数,无论输入什么,都使得输出在0到1之间;multiply层是一个multiply()函数,用于对两个矩阵中对应元素相乘。
[0140]
在原本相邻的“dw conv层_2”和“conv层_3”之间插入了注意力模块后,注意力模块破坏了“dw conv层_2”和“conv层_3”的相邻性,采用传统的cle方法无法对这组卷积层进行权重均衡,此时可以采用本技术实施例提供的cle优化方法对这组卷积层进行权重均衡。
[0141]
该cle优化方法的具体流程如下:
[0142]
s81、电子设备将位于注意力模块之前的普通卷积层“conv层_1”和深度卷积层“dw conv层_2”,以及位于注意力模块之后的普通卷积层“conv层_3”视为三个相邻的卷积层,并将这两个卷积层作为一组(conv,dw conv,conv)进行权重均衡。
[0143]
假设“conv层_1”对应的权重张量包括c1个输出通道,“dw conv层_2”对应的权重张量包括c1个输出通道,“conv层_3”对应的权重张量包括c1个输入通道,则可以用表示“conv层_1”对应的权重张量中的输出通道i的动态范围,用表示“dw conv层_2”对应的权
重张量中的输出通道i的动态范围,以及用表示“conv层_3”对应的权重张量中的输入通道i的动态范围。其中,i=1,2,
……
,c1。
[0144]
电子设备可以根据和采用下述公式5计算得到缩放因子并采用下述公式6计算得到缩放因子
[0145][0145][0146][0147]
然后,电子设备可以采用缩放因子对“conv层_1”和“dw conv层_2”进行权重均衡,并采用缩放因子对“dw conv层_2”和“conv层_3”进行权重均衡。即,将乘入“conv层_1”的权重中,将乘入“dw conv层_2”的权重中,将乘入“conv层_3”的权重中。其中,为的倒数,为的倒数。
[0148]
具体地,由于“conv层_1”对应的权重张量包括c1个输出通道,“dw conv层_2”对应的权重张量包括c1个输出通道,“conv层_3”对应的权重张量包括c1个输入通道,因此电子设备可以将“conv层_1”对应的权重张量中的输出通道i的动态范围乘以将“dw conv层_2”对应的权重张量中的输入通道i的动态范围乘以将“dw conv层_2”对应的权重张量中的输出通道i的动态范围乘以将“conv层_3”对应的权重张量中的输入通道i的动态范围乘以其中,i从1到c1依次取值。例如,将“conv层_1”对应的权重张量中的第1个输出通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第1个输入通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第1个输出通道的动态范围乘以将“conv层_3”对应的权重张量中的第1个输入通道的动态范围乘以
……
;以此类推,将“conv层_1”对应的权重张量中的第c1个输出通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第c1个输入通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第c1个输出通道的动态范围乘以将“conv层_3”对应的权重张量中的第c1个输入通道的动态范围乘以
[0149]
在电子设备采用cle优化方法改变了注意力模块前后卷积层的权重分布后,由于神经网络模型的浮点向前输出不受影响,为了保证注意力模块前后模型的浮点输出在数学上等价关系,电子设备还可以继续执行下述s82。
[0150]
s82、电子设备采用缩放因子对注意力模块中的卷积层进行权重变换。
[0151]
假设注意力模块包括的第一个卷积层用“conv层_4”表示,“conv层_4”对应的权重张量包括c1个输入通道和c2个输出通道,“conv层_4”所对应的权重张量中的输入通道i的动态范围用表示,“conv层_4”所对应的权重张量中的输出通道j的动态范围用表示,i=
1,2,
……
,c1,j=1,2,
……
,c2,则可以采用下述公式7计算得到权重变换后“conv层_4”的输入通道i的动态范围r4'(i):
[0152][0153]
如此,电子设备可以将“conv层_4”的权重乘以即采用替换应理解,由于“conv层_4”对应的权重张量包括c1个输入通道,因此需要将“conv层_4”对应的权重张量中的每个输入通道均乘以
[0154]
在电子设备对“conv层_4”对应的权重张量中的c1个输入通道的动态范围进行权重变换得到后,“conv层_4”对应的权重张量中的c2个输出通道的动态范围也会相应地发生权重变换,比如变换为
[0155]
需要说明的是,在本技术实施例中,c1和c2可以相同,也可以不同。
[0156]
s83、在电子设备采用缩放因子对注意力模块中的“conv层_4”进行权重变换后,如果注意力模块中还存在相邻的卷积模块,那么电子设备对相邻的卷积模块进行权重均衡。
[0157]
下面以注意力模块中还存在与“conv层_4”相邻的卷积层“conv层_5”,电子设备对“conv层_4”和“conv层_5”进行权重均衡为例进行示例说明。
[0158]
假设“conv层_4”对应的权重张量包括c2个输出通道,“conv层_5”对应的权重张量包括c2个输入通道,即,“conv层_4”对应的权重张量包括的输出通道的数量等于“conv层_5”对应的权重张量包括的输入通道的数量。若权重变换后的“conv层_4”对应的权重张量中的输出通道j的动态范围用表示,“conv层_5”对应的权重张量的输入通道j的动态范围用表示,则电子设备可以根据和采用下述公式8计算得到缩放因子
[0159][0160]
然后,电子设备可以采用缩放因子对“conv层_4”和“conv层_5”进行权重均衡,将乘入“conv层_4”的权重中,将乘入“conv层_5”的权重中。其中,为的倒数。
[0161]
具体地,由于“conv层_4”对应的权重张量包括c2个输出通道,“conv层_5”对应的权重张量包括c2个输入通道,因此电子设备可以将“conv层_4”对应的权重张量中的第j个输出通道的动态范围乘以并将“conv层_5”对应的权重张量中的第j个输入通道的动态范围乘以例如,将“conv层_4”对应的权重张量中的第1个输出通道动态范围乘以并将“conv层_5”对应的权重张量中的第1个输入通道的动态范围乘以将“conv层_4”对应的权重张量中的第2个输出通道的动态范围乘以并将“conv层_5”对应的权重张量中的第2个输入通道的动态范围乘以
……
;以此类推,将“conv层_4”对应的权重张量中的第c2个输出通道的动态范围乘以并将“conv层_5”对应的权
重张量中的第c2个输入通道的动态范围乘以
[0162]
至此,电子设备完成了对在第二个卷积层(即深度卷积层)和第三个卷积层(即普通卷积层)之间插入了注意力模块的多分支结构的cle优化。
[0163]
实施例三
[0164]
以如图6中的(c)所示的在第一个卷积层(即普通卷积层)和第二个卷积层(即深度卷积层)之间插入了注意力模块的多分支结构为例,本技术实施例提供了如图9所示的cle优化方法。
[0165]
首先,对如图9所示的多分支结构进行介绍。
[0166]
如图9所示,该多分支结构从前到后依次包括:普通卷积层“conv层_1”、relu层_1、注意力模块、multiply层、深度卷积层“dw conv层_2”、relu层_3和普通卷积层“conv层_3”。注意力模块可以包括以下模块:全局池化层、普通卷积层“conv层_4”、relu层_2、普通卷积层“conv层_5”和sigmoid层。其中,relu层_1是一个relu激活函数,用于对“conv层_1”和“dw conv层_2”的权重范围进行均衡;全局池化层是将矩阵中[w,h]进行平均池化,变为一个单元,w表示该层的输入特征图的宽,h表示该层的输入特征图的高;relu层_2是一个relu激活函数,用于对“conv层_4”和“conv层_5”的权重范围进行均衡;relu层_3是一个relu激活函数,用于对“dw conv层_2”和“conv层_3”的权重范围进行均衡;sigmoid层是一个sigmoid()函数,无论输入什么,都使得输出在0到1之间;multiply层是一个multiply()函数,用于对两个矩阵中对应元素相乘。
[0167]
在原本相邻的“conv层_1”和“dw conv层_2”之间插入了注意力模块后,注意力模块破坏了“conv层_1”和“dw conv层_2”的相邻性,采用传统的cle方法无法对这组卷积层进行权重均衡,此时可以采用本技术实施例提供的cle优化方法对这组卷积层进行权重均衡。
[0168]
该cle优化方法的具体流程如下:
[0169]
s91、电子设备将位于注意力模块之前的普通卷积层“conv层_1”和深度卷积层“dw conv层_2”,以及位于注意力模块之后的普通卷积层“conv层_3”视为三个相邻的卷积层,并将这两个卷积层作为一组(conv,dw conv,conv)进行权重均衡。
[0170]
假设“conv层_1”对应的权重张量包括c1个输出通道,“dw conv层_2”对应的权重张量包括c1个输出通道,“conv层_3”对应的权重张量包括c1个输入通道,则可以用表示“conv层_1”对应的权重张量中的输出通道i的动态范围,用表示“dw conv层_2”对应的权重张量中的输出通道i的动态范围,以及用表示“conv层_3”对应的权重张量中的输入通道i的动态范围。其中,i=1,2,
……
,c1。
[0171]
电子设备可以根据和采用下述公式9计算得到缩放因子并采用下述公式10计算得到缩放因子
[0172][0173]
[0174]
然后,电子设备可以采用缩放因子对“conv层_1”和“dw conv层_2”进行权重均衡,并采用缩放因子对“dw conv层_2”和“conv层_3”进行权重均衡。即,将乘入“conv层_1”的权重中,将乘入“dw conv层_2”的权重中,将乘入“conv层_3”的权重中。其中,为的倒数,为的倒数。
[0175]
具体地,由于“conv层_1”对应的权重张量包括c1个输出通道,“dw conv层_2”对应的权重张量包括c1个输出通道,“conv层_3”对应的权重张量包括c1个输入通道,因此电子设备可以将“conv层_1”对应的权重张量中的输出通道i的动态范围乘以将“dw conv层_2”对应的权重张量中的输入通道i的动态范围乘以将“dw conv层_2”对应的权重张量中的输出通道i的动态范围乘以将“conv层_3”对应的权重张量中的输入通道i的动态范围乘以其中,i从1到c1依次取值。例如,将“conv层_1”对应的权重张量中的第1个输出通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第1个输入通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第1个输出通道的动态范围乘以将“conv层_3”对应的权重张量中的第1个输入通道的动态范围乘以
……
;以此类推,将“conv层_1”对应的权重张量中的第c1个输出通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第c1个输入通道的动态范围乘以将“dw conv层_2”对应的权重张量中的第c1个输出通道的动态范围乘以将“conv层_3”对应的权重张量中的第c1个输入通道的动态范围乘以
[0176]
在电子设备采用cle优化方法改变了注意力模块前后卷积层的权重分布后,由于神经网络模型的浮点向前输出不受影响,为了保证注意力模块前后模型的浮点输出在数学上等价关系,电子设备还可以继续执行下述s92。
[0177]
s92、电子设备采用缩放因子对注意力模块中的卷积层进行权重变换。
[0178]
假设注意力模块包括的第一个卷积层用“conv层_4”表示,“conv层_4”对应的权重张量包括c1个输入通道和c2个输出通道,“conv层_4”所对应的权重张量中的输入通道i的动态范围用表示,“conv层_4”所对应的权重张量中的输出通道j的动态范围用表示,i=1,2,
……
,c1,j=1,2,
……
,c2,则可以采用下述公式11计算得到权重变换后“conv层_4”的输入通道i的动态范围
[0179][0180]
如此,电子设备可以将“conv层_4”的权重乘以即采用替换应理解,由于“conv层_4”对应的权重张量包括c1个输入通道,因此需要将“conv层_4”对应的权重张量中的每个输入通道均乘以
[0181]
在电子设备对“conv层_4”对应的权重张量中的c1个输入通道的动态范围进行权重变换得到后,“conv层_4”对应的权重张量中的c2个输出通道的动态范围也会相
应地发生权重变换,比如变换为
[0182]
需要说明的是,在本技术实施例中,c1和c2可以相同,也可以不同。
[0183]
s93、在电子设备采用缩放因子对注意力模块中的“conv层_4”进行权重变换后,如果注意力模块中还存在相邻的卷积模块,那么电子设备对相邻的卷积模块进行权重均衡。
[0184]
下面以注意力模块中还存在与“conv层_4”相邻的卷积层“conv层_5”,电子设备还需要对“conv层_4”和“conv层_5”进行权重均衡为例进行示例说明。
[0185]
假设“conv层_4”对应的权重张量包括c2个输出通道,“conv层_5”对应的权重张量包括c2个输入通道,即,“conv层_4”对应的权重张量包括的输出通道的数量等于“conv层_5”对应的权重张量包括的输入通道的数量。若权重变换后的“conv层_4”对应的权重张量中的输出通道j的动态范围用表示,“conv层_5”对应的权重张量中的输入通道i的动态范围用表示,则电子设备可以根据和采用下述公式12计算得到缩放因子
[0186][0187]
然后,电子设备可以采用缩放因子对“conv层_4”和“conv层_5”进行权重均衡,将乘入“conv层_4”的权重中,将乘入“conv层_5”的权重中。其中,为的倒数。
[0188]
具体地,由于“conv层_4”对应的权重张量包括c2个输出通道,“conv层_5”对应的权重张量包括c2个输入通道,因此电子设备可以将“conv层_4”对应的权重张量中的第i个输出通道的动态范围乘以并将“conv层_5”对应的权重张量中的第i个输入通道的动态范围乘以例如,将“conv层_4”对应的权重张量中的第1个输出通道动态范围乘以并将“conv层_5”对应的权重张量中的第1个输入通道的动态范围乘以将“conv层_4”对应的权重张量中的第2个输出通道的动态范围乘以并将“conv层_5”对应的权重张量中的第2个输入通道的动态范围乘以
……
;以此类推,将“conv层_4”对应的权重张量中的第c2个输出通道的动态范围乘以并将“conv层_5”对应的权重张量中的第c2个输入通道的动态范围乘以
[0189]
至此,电子设备完成了对在第一个卷积层(即普通卷积层)和第二个卷积层(即深度卷积层)之间插入了注意力模块的多分支结构的cle优化。
[0190]
示例性地,图10为本技术实施例提供的cle优化方法的总流程示意图。该方法可以应用于对添加有注意力模块的神经网络模型进行逐张量量化时,对注意力模块前后的卷积层进行权重均衡的场景中。如图10所示,该方法可以包括下述的s01至s03。
[0191]
s01、在对神经网络模型进行逐张量量化时,电子设备将位于注意力模块之前的第一卷积层和位于注意力模块之后的第二卷积层作为一组相邻的卷积层,根据第一卷积层的权重张量,以及第二卷积层的权重张量,确定第一缩放因子。
[0192]
在一些实施例中,各个卷积层对应的权重张量包含了多个通道,因此根据位于注意力模块之前的第一卷积层的权重张量,以及位于注意力模块之后的第二卷积层的权重张量,确定第一缩放因子,具体可以包括:根据第一卷积层的权重张量中第i个通道的动态范围,以及第二卷积层的权重张量中第i个通道的动态范围,确定第一缩放因子中的第i缩放因子。其中,i为从1到c依次取值的整数,c为卷积层包含的通道数。
[0193]
需要说明的是,本技术实施例在对相邻卷积层进行权重均衡时,前一卷积层的输出通道的数量等于后一卷积层的输入通道的数量。一个卷积层的输入通道和输出通道的数量可以相等,也可以不等,可以根据实际使用需求进行调整。
[0194]
s02、电子设备采用第一缩放因子,对第一卷积层和第二卷积层进行权重均衡。
[0195]
s03、电子设备采用第一缩放因子,对注意力模块包含的卷积层进行权重变换。
[0196]
示例性地,第一卷积层和第二卷积层可以为下述3种方式中的任意一种:
[0197]

第1种方式
[0198]
如图6中的(a)所示,第一卷积层为一个普通卷积层,第二卷积层为一个普通卷积层。若第一卷积层为一个普通卷积层,第二卷积层为一个普通卷积层,则具体可以采用上述实施例中的公式4,确定第一缩放因子中的第i缩放因子:
[0199][0200]
其中,表示第一卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子。i为从1到c1依次取值的整数。c1为第一卷积层的权重张量中包含的输出通道数,第一卷积层的权重张量中包含的输出通道数等于第二卷积层的权重张量中包含的输入通道数。
[0201]
然后,电子设备可以采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,具体包括:
[0202]
将的倒数,与第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输入通道的动态范围。
[0203]
再然后,电子设备可以将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0204]

第2种方式
[0205]
如图6中的(b)所示,第一卷积层为一个普通卷积层和一个深度卷积层,第二卷积层为一个普通卷积层。若第一卷积层为一个普通卷积层和一个深度卷积层,第二卷积层为一个普通卷积层,则具体可以采用上述实施例中的公式5和公式6,确定第一缩放因子中的第i缩放因子:
[0206]
[0207][0208]
其中,表示第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围,表示第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子缩放因子,表示第i缩放因子所包括的第二个子缩放因子。i为从1到c1依次取值的整数。c1为第一卷积层中普通卷积层的权重张量中包含的输出通道数,第一卷积层的权重张量中普通卷积层包含的输出通道数等于第一卷积层的权重张量中深度卷积层的权重张量中包含的输出通道数、等于第二卷积层的权重张量中包含的输入通道数。
[0209]
然后,电子设备可以采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,具体包括:
[0210]
将的倒数,与第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围;将与第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输入通道的动态范围。
[0211]
再然后,电子设备可以将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0212]

第3种方式
[0213]
如图6中的(c)所示,第一卷积层为一个普通卷积层,第二卷积层为一个深度卷积层和一个普通卷积层。若第一卷积层为一个普通卷积层,第二卷积层为一个深度卷积层和一个普通卷积层,则具体可以采用上述实施例中的公式9和公式10,确定第一缩放因子中的第i缩放因子:
[0214][0215][0216]
其中,表示第一卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子
缩放因子,表示第i缩放因子所包括的第二个子缩放因子。c1为第一卷积层的权重张量包含的输出通道数,第一卷积层的权重张量包含的输出通道数等于第二卷积层中深度卷积层的权重张量包含的输出通道数、等于第二卷积层中普通卷积层的权重张量包含的输入通道数。
[0217]
然后,电子设备可以采用第i缩放因子,分别对第一卷积层的权重张量中第i个通道的动态范围、第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,具体包括:
[0218]
将的倒数,与第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层的权重张量中第i个输出通道的动态范围;将与第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围。
[0219]
再然后,电子设备可以将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0220]
对于上述3种方式的具体实现方式,可以参照上述实施例一、实施例二和实施例三的描述,此处不再赘述。
[0221]
针对上述3种方式,在采用第一缩放因子,对注意力模块包含的第一个卷积层进行权重变换之后,如果注意力模块还包括与第一个卷积层相邻的第二个卷积层,第一个卷积层和第二个卷积层均为普通卷积层,那么本技术实施例提供的cle优化方法还可以采用下述公式,确定第二缩放因子:
[0222][0223]
其中,表示第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示第二个卷积层的权重张量中第j个输入通道的动态范围,表示第二缩放因子。j为从1到c2依次取值的整数。c2为注意力模块包括的第一个卷积层的权重张量中包含的输出通道数,该第一个卷积层的权重张量中包含的输出通道数等于第二个卷积层的权重张量中包含的输入通道数。
[0224]
需要说明的是,根据上述3个实施例的描述,在注意力模块前后相邻的卷积层的数量可能为2个,也可能为3个,因此为了便于统一描述,上述公式采用表示第二缩放因子。应理解,在实际实现时,上述公式中的可以等同于实施例一中的或等同于实施例二和实施例三中的
[0225]
然后,电子设备可以采用第二缩放因子,对第一个卷积层和第二个卷积层进行权
重均衡,即:将的倒数,与注意力模块的第一个卷积层的权重张量中第j个输出通道的动态范围相乘;以及,将与注意力模块的第二个卷积层的权重张量中第j个输入通道的动态范围相乘。可以参照上述实施例一、实施例二和实施例三的描述,此处不再赘述。
[0226]
需要说明的是,上述实施例均是以注意力模块的前两个卷积层为普通卷积层为例进行说明的,本技术实施例还提供另外一种实现方式:如果注意力模块还包括与第一个卷积层相邻的第二个卷积层和第三个卷积层,第一个卷积层和第三个卷积层为普通卷积层,第二个卷积层为深度卷积层,那么本技术实施例提供的cle优化方法还可以采用下述公式,确定第三缩放因子和第四缩放因子:
[0227][0228][0229]
其中,表示第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示第二个卷积层的权重张量中第j个输出通道的动态范围,表示第三个卷积层的权重张量中第j个输入通道的动态范围,表示第三缩放因子,表示第四缩放因子。j为从1到c2依次取值的整数。c2为注意力模块包括的第一个卷积层的权重张量中包含的输出通道数,该第一个卷积层的权重张量中包含的输出通道数等于第二个卷积层的权重张量中包含的输出通道数、等于第三个卷积层的权重张量中包含的输入通道数。
[0230]
然后,电子设备可以采用第三缩放因子,对第一个卷积层和第二个卷积层进行权重均衡,并采用第四缩放因子,对第二个卷积层和第三个卷积层进行权重均衡,即:将的倒数,与注意力模块的第一个卷积层的权重张量中第j个通道的动态范围相乘;将的倒数,与注意力模块的第二个卷积层的权重张量中第j个通道的动态范围相乘;以及,将与注意力模块的第三个卷积层的权重张量中第j个通道的动态范围相乘。
[0231]
应理解,若是注意力模块包括更多的卷积层,则可以参照上述实施例中的cle优化方法,对相邻卷积层进行权重均衡,此处不再赘述。
[0232]
在上述方案中,通过将位于注意力模块前后的卷积层视为一组相邻的卷积层,并对注意力模块前后的卷积层进行权重均衡,可以降低逐张量量化的误差,提升量化后的神经网络模型的精度。此外,在改变了注意力模块前后卷积层的权重分布后,由于神经网络模型的浮点向前输出不受影响,因此通过对注意力模块所包含的卷积层进行权重变换,可以保证注意力模块前后模型的浮点输出在数学上等价关系,进一步提升量化后的神经网络模型的精度。
[0233]
上述实施例主要从电子设备的角度对cle优化方法进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行每一个功能相应的硬件结构或软件模块,或两者结合。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条
件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0234]
本技术实施例可以根据上述方法示例对电子设备进行功能模块的划分,例如,可以对应每一个功能划分每一个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本技术实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以采用对应每一个功能划分每一个功能模块为例进行说明。
[0235]
图11为本技术实施例提供的一种cle优化装置的结构示意图。如图11所示,该cle优化装置110可以包括确定模块111、权重均衡模块112和权重变换模块113。
[0236]
确定模块111,可以用于在对神经网络模型进行逐张量量化时,将位于注意力模块之前的第一卷积层和位于注意力模块之后的第二卷积层作为一组相邻的卷积层,根据第一卷积层的权重张量,以及第二卷积层的权重张量,确定第一缩放因子。
[0237]
权重均衡模块112,可以用于采用第一缩放因子,对第一卷积层和第二卷积层进行权重均衡。
[0238]
权重变换模块113,可以用于采用第一缩放因子,对注意力模块包含的卷积层进行权重变换。
[0239]
在一些实施例中,各个卷积层对应的权重张量包含了多个通道,确定模块111,具体可以用于:根据第一卷积层的权重张量中第i个通道的动态范围,以及第二卷积层的权重张量中第i个通道的动态范围,确定第一缩放因子中的第i缩放因子。
[0240]
在一些实施例中,若第一卷积层为一个普通卷积层,第二卷积层为一个普通卷积层,则确定模块111具体可以采用下述公式确定第一缩放因子中的第i缩放因子:
[0241][0242]
其中,表示第一卷积层的权重张量中第i个输入通道的动态范围,表示第二卷积层的权重张量中第i个输出通道的动态范围,表示第i缩放因子。
[0243]
相应地,权重均衡模块112,具体可以用于:将的倒数,与第一卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第一卷积层的权重张量中第i个输入通道的动态范围;以及,将与第二卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输出通道的动态范围。
[0244]
相应地,权重变换模块113,具体可以用于:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0245]
在一些实施例中,若第一卷积层为一个普通卷积层和一个深度卷积层,第二卷积层为一个普通卷积层,第i缩放因子包括两个子缩放因子,则确定模块111具体可以采用下述公式确定第一缩放因子中的第i缩放因子:
[0246][0247][0248]
其中,表示第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围,表示第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子缩放因子,表示第i缩放因子所包括的第二个子缩放因子。
[0249]
相应地,权重均衡模块112,具体可以用于:将的倒数,与第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围;将与第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层的权重张量中第i个输入通道的动态范围。
[0250]
相应地,权重变换模块113,具体可以用于:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0251]
在一些实施例中,若第一卷积层为一个普通卷积层,第二卷积层为一个深度卷积层和一个普通卷积层,第i缩放因子包括两个子缩放因子,则确定模块111具体可以采用下述公式确定第一缩放因子中的第i缩放因子:
[0252][0253][0254]
其中,表示第一卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围,表示第i缩放因子所包括的第一个子缩放因子,表示第i缩放因子所包括的第二个子缩放因子。
[0255]
相应地,权重均衡模块112,具体可以用于:将的倒数,与第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第一卷积层的权重张量中第i个输出通道
的动态范围;将与第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围。
[0256]
相应地,权重变换模块113,具体可以用于:将与注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的第一个卷积层的权重张量中第i个输入通道的动态范围。
[0257]
在一些实施例中,确定模块111还可以用于:在注意力模块还包括与第一个卷积层相邻的第二个卷积层的情况下,根据第一个卷积层变换后的权重张量,以及第二个卷积层的权重张量,确定第二缩放因子。相应地,权重均衡模块112,还可以用于:采用第二缩放因子,对第一个卷积层和第二个卷积层进行权重均衡。其中,第一个卷积层和第二个卷积层为两个普通卷积层。
[0258]
或者,确定模块111还可以用于:在注意力模块还包括与第一个卷积层相邻的第二个卷积层和第三个卷积层的情况下,根据第一个卷积层变换后的权重张量、第二个卷积层的权重张量以及第三个卷积层的权重张量,确定第三缩放因子和第四缩放因子。相应地,权重均衡模块112,还可以用于:采用第三缩放因子,对第一个卷积层和第二个卷积层进行权重均衡;以及采用第四缩放因子,对第二个卷积层和第三个卷积层进行权重均衡。其中,第一个卷积层和第三个卷积层为普通卷积层,第二个卷积层为深度卷积层。
[0259]
示例性地,图12示出了本技术实施例提供的一种电子设备的结构示意图。如图12所示,电子设备可以包括处理器10,传感器11,外围设备12,射频模块13,外部存储器接口14,以及内部存储器15等。
[0260]
处理器10可以包括一个或多个处理单元,例如:处理器10可以包括如图12所示的中央处理器(central processing unit,cpu)100,神经网络处理器(neural-network processing unit,npu)101,应用处理器(application processor,ap)102,图形处理器(graphics processing unit,gpu)103,数字信号处理器(digital signal processor,dsp)104,基带处理器105,调制解调处理器106,视频编解码器107,图像信号处理器(image signal processor,isp)108等。在一些实施例中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0261]
cpu 100是信息处理、程序运行的最终执行单元,其主要工作包括处理指令、执行操作、控制时间和处理数据等。其中,cpu 100可以包括控制器、运算器、高速缓冲存储器,以及用于连接这些部件的总线。控制器是电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。运算器是指进行各种算术和逻辑运算操作的部件。高速缓冲存储器可以保存处理器10刚用过或循环使用的指令或数据。如果处理器10需要再次使用该指令或数据,可从高速缓冲存储器中直接调用。避免了重复存取,减少了处理器10的等待时间,因而提高了系统的效率。
[0262]
npu 101为神经网络计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经
元之间传递模式,对输入信息快速处理,还可以不断地自学习,通过npu 101可以实现电子设备的智能认知等应用。例如,在对神经网络模型进行逐张量量化时,如果在相邻的卷积层之间插入了注意力模块,那么npu 101通过对注意力模块前后的卷积层进行权重均衡,可以降低逐张量量化的误差,提升量化后的神经网络模型精度。另外,由于cle方法只改变了各个卷积层的权重分布,神经网络模型的浮点向前输出不会受到影响,即cle前后神经网络模型的浮点输出在数学上是等价的,因此为了保持这种输出等价关系,npu 101不但可以对注意力模块前后的卷积层进行权重均衡,还可以对注意力模块的权重进行均衡。
[0263]
ap 102用于运行电子设备的各种上层软件,比如视频应用、相机应用及通话应用等。
[0264]
gpu 103为图像处理的微处理器,连接显示屏121和ap 102。gpu 103用于执行数学和几何计算,用于图形渲染。处理器10可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
[0265]
dsp 104用于处理数字信号,及其他数字信号。例如,当电子设备在频点选择时,dsp 104可以用于对频点能量进行傅里叶变换等。
[0266]
调制解调处理器106可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器105处理。低频基带信号经基带处理器105处理后,被传递给ap 102。
[0267]
视频编解码器107可以用于对数字视频压缩或解压缩。电子设备可以支持一种或多种视频编解码器。这样,电子设备可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,mpeg)1,mpeg2,mpeg3,mpeg4等。
[0268]
isp 108可以用于处理摄像头123反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将电信号传递给isp 108处理,转化为肉眼可见的图像。isp 108还可以对图像的噪点,亮度,肤色进行算法优化。isp还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,isp 108可以设置在摄像头123中。
[0269]
传感器11可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和/或骨传导传感器等。
[0270]
外围设备12可以包括显示屏121,音频模块122和摄像头123等。显示屏121可以用于显示图像和视频等。音频模块122可以包括音频输入模块和音频输出模块,音频输入模块用于采集语音,音频输出模块用于输出语音。摄像头123用于采集图像或视屏等。
[0271]
射频模块13可以包括天线和收发器。收发器用于将天线接收到的电磁波转换为电流,并最终转换为数字信号,相应地,收发器还用于将电子设备将要输出的数字信号据转换为电流然后转换为电磁波,最后通过天线将电磁波发射到自由空间中。射频模块13还可包括至少一个用于放大信号的放大器。通常情况下,可以通过射频模块13进行无线传输,包括无线局域网(wireless local area networks,wlan),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线
通信的解决方案。
[0272]
外部存储器接口14可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口14与处理器10通信,实现数据存储功能。例如将拍摄得到的照片、视频等文件保存在外部存储卡中。
[0273]
内部存储器15可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器10通过运行存储在内部存储器15的指令,从而执行电子设备的各种功能应用以及数据处理。内部存储器15可以包括存储程序区和存储数据区。其中,存储程序区可以存储操作系统,至少一个功能所需的应用程序等。存储数据区可以存储电子设备使用过程中所创建的数据等。此外,内部存储器15可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,ufs)等。
[0274]
在上述实施例中介绍了npu 101。由于npu 101擅长处理视频、图像类的海量多媒体数据,在实际应用中,npu需要cpu的协同处理才能完成特定的任务,也就是npu作为协处理器挂载到主cpu,由主cpu分配任务(即发送任务相关的命令),npu再执行相应任务,并向主cpu返回执行的处理结果。下面结合图13对cpu和npu进行示例介绍。
[0275]
示例性地,图13为本技术实施例提供的cpu和npu的示意图。如图13所示,电子设备包括cpu和npu。cpu上运行有一个或多个应用程序(application,app),比如app1、app2和app3,主cpu还包括ai服务和npu驱动。npu包括npu控制器、运算逻辑单元以及一个或多个寄存器。
[0276]
app:在cpu上运行的应用程序,一个app可对应一个或多个ai模型,这些ai模型可以为预先生成的,比如是由npu对神经网络模型进行逐张量量化后得到的。app在完成初始化后,cpu可以将与app对应的ai模型一次性加载至npu,也可以是在需要用到哪个ai模型时,向npu加载哪个ai模型,具体此处不做限定。若npu上某个已加载的ai模型长时间未使用,也可通过该app指示npu删除该ai模型。
[0277]
ai服务:用于向app提供ai模型的服务接口,如:ai模型加载的接口。具体地,ai服务还用于实现npu相关的软件栈。需要说明的是,app侧的ai模型是一个计算图结构,ai服务还用于将计算图结构进行转换,转换成npu的执行序列结构,一个ai模型对应一个或多个执行序列,每个执行序列有多个执行单元。在ai模型加载成功且app在输入数据准备好之后,向npu发送ai模型的执行命令,使得npu进行ai模型推理,ai模型所有的执行序列中的执行单元都执行完成,则ai模型推理完成,得到ai模型的执行结果。
[0278]
npu驱动:用于向npu提供驱动。
[0279]
npu控制器:用于接收主cpu发送的ai模型、调度ai模型基于准备好的输入数据进行执行、给主cpu上报ai模型的执行结果等。
[0280]
运算逻辑单元:可以是一个或多个,用于接收npu控制器下发的执行命令,并根据该执行命令执行ai模型、向npu控制器返回执行结果等。
[0281]
n个寄存器:用于加载ai模型。
[0282]
可以理解的是,电子设备为了实现本技术实施例中的cle优化方法,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本技术能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是
计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能。
[0283]
需要说明的是,本技术实施例提供的cle优化方法可以由npu来执行,也可以由cpu和npu来执行,还可以由其他处理模块来执行,对此本技术实施例不做具体限定。
[0284]
本技术实施例还提供了一种电子设备,包括处理器,处理器与存储器耦合,处理器用于执行存储器中存储的计算机程序或指令,以使得电子设备实现上述各实施例中的方法。
[0285]
本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令;当该计算机可读存储介质在电子设备上运行时,使得电子设备执行如上所示的方法。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘或磁带),光介质或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0286]
本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机程序代码,当计算机程序代码在计算机上运行时,使得计算机执行上述各实施例中的方法。
[0287]
本技术实施例还提供了一种芯片,该芯片与存储器耦合,该芯片用于读取并执行存储器中存储的计算机程序或指令,以执行上述各实施例中的方法。该芯片可以为通用处理器,也可以为专用处理器。需要说明的是,该芯片可以使用下述电路或者器件来实现:一个或多个现场可编程门阵列(field programmable gate array,fpga)、可编程逻辑器件(programmable logic device,pld)、控制器、状态机、门逻辑、分立硬件部件、任何其他适合的电路、或者能够执行本技术通篇所描述的各种功能的电路的任意组合。
[0288]
上述本技术实施例提供的电子设备、装置、计算机可读存储介质、计算机程序产品以及芯片均用于执行上文所提供的方法,因此,其所能达到的有益效果可参考上文所提供的方法对应的有益效果,此处不再赘述。
[0289]
需要说明的是,本技术的说明书、权利要求书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0290]
应当理解,在本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上,“至少两个”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”或其类似表达,是指这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b或c中的至少一项,可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,
b,c可以是单个,也可以是多个。
[0291]
应理解,在本技术实施例中,“与a对应的b”表示b与a相关联。例如,可以根据a可以确定b。还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。此外,本技术实施例中出现的“连接”是指直接连接或者间接连接等各种连接方式,以实现设备间的通信,本技术实施例对此不做任何限定。
[0292]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0293]
在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0294]
作为分离部件说明的单元可以是或也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0295]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0296]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备,如:可以是单片机,芯片等,或处理器执行本技术各个实施例提供方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或光盘等各种可以存储程序代码的介质。
[0297]
以上内容,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。

技术特征:
1.一种跨层均衡化优化方法,其特征在于,所述方法包括:在对神经网络模型进行逐张量量化时,根据位于注意力模块之前的第一卷积层的权重张量,以及位于所述注意力模块之后的第二卷积层的权重张量,确定第一缩放因子;采用所述第一缩放因子,对所述第一卷积层和所述第二卷积层进行权重均衡;以及,采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换。2.根据权利要求1所述的方法,其特征在于,所述根据位于注意力模块之前的第一卷积层的权重张量,以及位于所述注意力模块之后的第二卷积层的权重张量,确定第一缩放因子,包括:根据所述第一卷积层的权重张量中第i个通道的动态范围,以及所述第二卷积层的权重张量中第i个通道的动态范围,确定所述第一缩放因子中的第i缩放因子;所述采用所述第一缩放因子,对所述第一卷积层和所述第二卷积层进行权重均衡,包括:采用所述第i缩放因子,分别对所述第一卷积层的权重张量中第i个通道的动态范围、所述第二卷积层的权重张量中第i个通道的动态范围进行权重均衡。3.根据权利要求2所述的方法,其特征在于,所述第一卷积层为一个普通卷积层,所述第二卷积层为一个普通卷积层;所述根据所述第一卷积层的权重张量中第i个通道的动态范围,以及所述第二卷积层的权重张量中第i个通道的动态范围,确定所述第一缩放因子中的第i缩放因子,包括:采用下述公式确定所述第i缩放因子:其中,表示所述第一卷积层的权重张量中第i个输出通道的动态范围,表示所述第二卷积层的权重张量中第i个输入通道的动态范围,表示所述第i缩放因子。4.根据权利要求3所述的方法,其特征在于,所述采用所述第i缩放因子,分别对所述第一卷积层的权重张量中第i个通道的动态范围、所述第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与所述第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的所述第一卷积层的权重张量中第i个输出通道的动态范围;以及,将与所述第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的所述第二卷积层的权重张量中第i个输入通道的动态范围。5.根据权利要求3或4所述的方法,其特征在于,所述采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换,包括:将与所述注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的所述第一个卷积层的权重张量中第i个输入通道的动态范围。6.根据权利要求2所述的方法,其特征在于,所述第一卷积层为一个普通卷积层和一个深度卷积层,所述第二卷积层为一个普通卷积层;所述第i缩放因子包括两个子缩放因子;所述根据所述第一卷积层的权重张量中第i个通道的动态范围,以及所述第二卷积层
的权重张量中第i个通道的动态范围,确定所述第一缩放因子中的第i缩放因子,包括:采用下述公式确定所述第i缩放因子所包括的两个子缩放因子:采用下述公式确定所述第i缩放因子所包括的两个子缩放因子:其中,表示所述第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围,表示所述第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示所述第二卷积层的权重张量中第i个输入通道的动态范围,表示所述第i缩放因子所包括的第一个子缩放因子,表示所述第i缩放因子所包括的第二个子缩放因子。7.根据权利要求6所述的方法,其特征在于,所述采用所述第i缩放因子,分别对所述第一卷积层的权重张量中第i个通道的动态范围、所述第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与所述第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的所述第一卷积层中普通卷积层的权重张量中第i个输出通道的动态范围;将与所述第一卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的所述第一卷积层中深度卷积层的权重张量中输入第i个通道的动态范围;将的倒数,与所述第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的所述第一卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与所述第二卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的所述第二卷积层的权重张量中第i个输入通道的动态范围。8.根据权利要求6或7所述的方法,其特征在于,所述采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换,包括:将与所述注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的所述第一个卷积层的权重张量中第i个输入通道的动态范围。9.根据权利要求2所述的方法,其特征在于,所述第一卷积层为一个普通卷积层,所述第二卷积层为一个深度卷积层和一个普通卷积层;所述第i缩放因子包括两个子缩放因子;所述根据所述第一卷积层的权重张量中第i个通道的动态范围,以及所述第二卷积层的权重张量中第i个通道的动态范围,确定所述第一缩放因子中的第i缩放因子,包括:采用下述公式确定所述第i缩放因子所包括的两个子缩放因子:
其中,表示所述第一卷积层的权重张量中第i个输出通道的动态范围,表示所述第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围,表示所述第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围,表示所述第i缩放因子所包括的第一个子缩放因子,表示所述第i缩放因子所包括的第二个子缩放因子。10.根据权利要求9所述的方法,其特征在于,所述采用所述第i缩放因子,分别对所述第一卷积层的权重张量中第i个通道的动态范围、所述第二卷积层的权重张量中第i个通道的动态范围进行权重均衡,包括:将的倒数,与所述第一卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的所述第一卷积层的权重张量中第i个输出通道的动态范围;将与所述第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的所述第二卷积层中深度卷积层的权重张量中第i个输入通道的动态范围;将的倒数,与所述第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围相乘,得到更新后的所述第二卷积层中深度卷积层的权重张量中第i个输出通道的动态范围;以及,将与所述第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围相乘,得到更新后的所述第二卷积层中普通卷积层的权重张量中第i个输入通道的动态范围。11.根据权利要求9或10所述的方法,其特征在于,所述采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换,包括:将与所述注意力模块包括的第一个卷积层的权重张量中的第i个输入通道的动态范围相乘,得到更新后的所述第一个卷积层的权重张量中第i个输入通道的动态范围。12.根据权利要求1至4、6、7、9、10中任意一项所述的方法,其特征在于,所述采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换,包括:将所述第一缩放因子与所述注意力模块包括的第一个卷积层的权重张量相乘,得到所述第一个卷积层变换后的权重张量。13.根据权利要求12所述的方法,其特征在于,所述采用所述第一缩放因子,对所述注意力模块包含的卷积层进行权重变换,还包括:在所述注意力模块还包括与所述第一个卷积层相邻的第二个卷积层的情况下,根据所述第一个卷积层变换后的权重张量,以及所述第二个卷积层的权重张量,确定第二缩放因子;并采用所述第二缩放因子,对所述第一个卷积层和所述第二个卷积层进行权重均衡;其中,所述第一个卷积层和所述第二个卷积层为两个普通卷积层;或者,在所述注意力模块还包括与所述第一个卷积层相邻的第二个卷积层和第三个卷积层的情况下,根据所述第一个卷积层变换后的权重张量、所述第二个卷积层的权重张量以及所述第三个卷积层的权重张量,确定第三缩放因子和第四缩放因子;并采用所述第三缩放
因子,对所述第一个卷积层和所述第二个卷积层进行权重均衡;以及采用所述第四缩放因子,对所述第二个卷积层和所述第三个卷积层进行权重均衡;其中,所述第一个卷积层和所述第三个卷积层为普通卷积层,所述第二个卷积层为深度卷积层。14.根据权利要求13所述的方法,其特征在于,所述根据所述第一个卷积层变换后的权重张量,以及所述第二个卷积层的权重张量,确定第二缩放因子,包括:采用下述公式确定所述第二缩放因子:其中,r4'
(j)
表示所述第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示所述第二个卷积层的权重张量中第j个输入通道的动态范围,表示所述第二缩放因子。15.根据权利要求13所述的方法,其特征在于,所述根据所述第一个卷积层变换后的权重张量、所述第二个卷积层的权重张量以及所述第三个卷积层的权重张量,确定第三缩放因子和第四缩放因子,包括:采用下述公式确定所述第三缩放因子和所述第四缩放因子:采用下述公式确定所述第三缩放因子和所述第四缩放因子:其中,r4'
(j)
表示所述第一个卷积层变换后的权重张量中第j个输出通道的动态范围,表示所述第二个卷积层的权重张量中第j个输出通道的动态范围,表示所述第三个卷积层的权重张量中第j个输入通道的动态范围,表示所述第三缩放因子,表示所述第四缩放因子。16.一种电子设备,其特征在于,包括处理器,所述处理器与存储器耦合,所述处理器用于执行所述存储器中存储的计算机程序或指令,以使得所述电子设备实现如权利要求1至15中任一项所述的跨层均衡化优化方法。17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1至15中任一项所述的跨层均衡化优化方法。

技术总结
本申请实施例提供一种跨层均衡化优化方法、设备及存储介质,涉及人工智能技术领域。在本申请方案中,在对神经网络模型进行逐张量量化时,如果在原本相邻的卷积层之间插入了注意力模块,那么通过将不相邻的卷积层视为一组相邻的卷积层,对注意力模块前后的卷积层进行权重均衡,以及对注意力模块所包含的卷积层进行权重变换,可以降低逐张量量化的误差,提升量化后的神经网络模型的精度。化后的神经网络模型的精度。化后的神经网络模型的精度。


技术研发人员:李晗 王哲 伍国林 廖建文
受保护的技术使用者:荣耀终端有限公司
技术研发日:2022.09.30
技术公布日:2023/9/11
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐