一种量化PRELU激活函数的方法与流程

文档序号:27832025发布日期:2021-12-07 22:31阅读:400来源:国知局
一种量化PRELU激活函数的方法与流程
一种量化prelu激活函数的方法
技术领域
1.本发明涉及神经网络加速技术领域,特别涉及一种量化prelu激活函数的方法。


背景技术:

2.近年来,随着科技的飞速发展,大数据时代已经到来。深度学习以深度神经网络(dnn)作为模型,在许多人工智能的关键领域取得了十分显著的成果,如图像识别、增强学习、语义分析等。卷积神经网络(cnn)作为一种典型的dnn结构,能有效提取出图像的隐层特征,并对图像进行准确分类,在近几年的图像识别和检测领域得到了广泛的应用。
3.特别地,实时量化feature map:将卷积运算出来的结果反量化为全精度数,然后根据实时统计获得的最大最小值完成对feature map的量化。
4.然而,现有技术中对于激活函数为prelu时,并不会对其做量化处理,即对输入到prelu的数据如果是量化后的数据则需要反量化为全精度的数据,prelu内部做浮点运算,这样对于整个量化模型来说这一块需要做浮点运算,会导致模型运行时间增加。
5.此外,现有技术中的常用术语如下:
6.卷积神经网络(convolutional neural networks,cnn):是一类包含卷积计算且具有深度结构的前馈神经网络。
7.量化:量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。
8.低比特:将数据量化为位宽为8bit,4bit或者2bit的数据。
9.推理:神经网络训练结束后,利用保存的数据进行运算的过程。
10.prelu(parametric rectified linear unit):顾名思义:带参数的relu。


技术实现要素:

11.为了解决上述技术问题,本技术提出了一种量化激活函数为prelu的方法,旨在克服上述现有技术中存在的缺陷,提出一种量化prelu的方法,解决现有低比特模型推理过程当激活函数为prelu时采用全精度计算的问题。
12.本发明方法会对prelu函数也做量化处理,即prelu函数的输入为量化后的数据内部做整型运算,从而提高模型的整体运行时间。
13.具体地,本发明提供一种量化激活函数为prelu的方法,所述方法包括以下步骤:
14.s1,数据量化,对于待量化的数据按照下列公式(1)所示进行量化,得到低比特的数据,
15.公式(1)
16.变量说明:w
f
为全精度数据是一个数组,w
q
为量化后的数据,max
w
为全精度数据w
f
中最大值,min
w
为全精度数据w
f
中最小值,b为量化后的位宽;
17.s2,量化prelu激活函数,量化公式如公式(2)所示:
18.公式(2)
19.变量说明:当x
i
取值大于0时,需要将x
i
值乘上参数q1,如果x
i
值小于0时,需要将x
i
值乘上参数a
c
,c为x
i
所在的通道;具体参数说明:x为一个三维数组即{h,w,c},h,w,c分别为该数组的长,宽,通道数;参数a为一个一维数组{c},其中的c和x中的c数值是相等的;q1为1.0的量化;a
c
为参数a中第c个通道的数值。
20.所述的步骤s2的量化进一步包括:
21.s2.1,初始化:将0分别赋值给最小值minvalue、最大值maxvalue;
22.s2.2,将max(c
f
)赋值给cmax;将min(c
f
)赋值给minvalue;
23.其中,max(x)获取数组x的最大值,c
f
为全精度参数c,则max(c
f
)为获取数组c
f
的最大值;
24.min(x)获取数组x的最小值,c
f
为全精度参数c,则min(c
f
)为获取数据c
f
的最小值;
25.s2.3,判断cmax是否大于1.0,如果是,则将cmax赋值给maxvalue;
26.否则将1.0赋值给maxvalue;
27.s2.4,处理量化quantize(c
f
,minvalue,maxvalue)并赋值给q
c

28.处理量化quantize(1.0,minvalue,maxvalue)并赋值给q1;
29.处理量化quantize(x
f
,min(x
f
),max(x
f
))并赋值给q
x

30.处理量化qprelu(q
x
,q
c
,q1)并将量化结果赋值给res;
31.其中,q
c
为量化后的参数c
f
,q1为1.0的量化,x
f
为全精度数据x,q
x
为量化后的数据x
f
,res为经过量化prelu激活函数的结果。
32.所述步骤s2在量化prelu激活时,由于正负半轴的处理方式是不一样,即x>0或x<0的情况不同,采用将正半轴都乘一个1,然后再根据参数c的minvalue,minvalue将1量化,以便保证正负半轴的尺度一致。
33.所述方法还包括确定量化过程中使用prelu激活函数的步骤,所述prelu激活函数是个分段函数,如公式(3)所示,当x
i
取值大于0时直接取x
i
的值,如果x
i
值小于0时,需要将x
i
值乘上参数a
c
,c为x
i
所在的通道,
34.公式(3)
35.具体参数说明:x为一个三维数组即{h,w,c},h,w,c分别为该数组的长,宽,通道数;参数a为一个一维数组{c},其中的c和x中的c数值是相等的;a
c
为参数a中第c个通道的数值。
36.由此,本技术的优势在于:
37.(1)当卷积神经网络中如果激活函数为prelu的话,量化后的模型在推理的时候prelu运算过程中将不存在浮点运算;
38.(2)含有prelu激活函数的模型量化后,模型推理时间的减少。
附图说明
39.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。
40.图1是本发明方法的流程示意图。
41.图2是实现本发明方法中量化的流程示意图。
具体实施方式
42.为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
43.如图1所示,本发明的一种量化激活函数为prelu的方法,所述方法包括以下步骤:
44.s1,数据量化,对于待量化的数据按照下列公式(1)所示进行量化,得到低比特的数据,
45.公式(1)
46.变量说明:w
f
为全精度数据是一个数组,w
q
为量化后的数据,max
w
为全精度数据w
f
中最大值,min
w
为全精度数据w
f
中最小值,b为量化后的位宽;
47.s2,量化prelu激活函数,量化公式如公式(2)所示:
48.公式(2)变量说明:当x
i
取值大于0时,需要将x
i
值乘上参数q1,如果x
i
值小于0时,需要将x
i
值乘上参数a
c
,c为x
i
所在的通道;具体参数说明:x为一个三维数组即{h,w,c},h,w,c分别为该数组的长,宽,通道数;参数a为一个一维数组{c},其中的c和x中的c数值是相等的;q1为1.0的量化;a
c
为参数a中第c个通道的数值。
49.特别地,本技术的方法还可以表述为以下:
50.一种量化激活函数为prelu的方法,包括以下内容:
51.1)prelu激活函数实现原理:prelu激活函数是个分段函数,具体公式如下列公式所示,当x
i
取值大于0时直接取x
i
的值,如果x
i
值小于0时,需要将x
i
值乘上参数a
c
,c为x
i
所在的通道:
[0052][0053]
具体参数说明:x为一个三维数组即{h,w,c},h,w,c分别为该数组的长,宽,通道数;参数a为一个一维数组{c},其中的c和x中的c数值是相等的;a
c
为参数a中第c个通道的数值。
[0054]
2)数据量化:对于待量化的数据按照下列公式所示进行量化,得到低比特的数据。
[0055][0056]
变量说明:w
f
为全精度数据是一个数组,w
q
为量化后的数据,max
w
全精度数据w
f
中最大值,min
w
全精度数据w
f
中最小值,b为量化后的位宽。
[0057]
3)量化prelu:如下列公式所示对于输入的数据x
i
,x
i
的正负会影响数据的运算方式,并且需要考虑到参数a的量化,量化公式如公式(3)所示:
[0058]
公式(3)
[0059]
具体的流程,如图2所示,具体描述如下:
[0060]
1),初始化:将0分别赋值给最小值minvalue、最大值maxvalue;
[0061]
2),将max(c
f
)赋值给cmax;将min(c
f
)赋值给minvalue;
[0062]
其中,max(x)获取数组x的最大值,c
f
为全精度参数c,则max(c
f
)为获取数组c
f
的最大值;
[0063]
min(x)获取数组x的最小值,c
f
为全精度参数c,则min(c
f
)为获取数据c
f
的最小值;
[0064]
3),判断cmax是否大于1.0,如果是,则将cmax赋值给maxvalue;
[0065]
否则将1.0赋值给maxvalue;
[0066]
4),处理量化quantize(c
f
,minvalue,maxvalue)并赋值给q
c

[0067]
处理量化quantize(1.0,minvalue,maxvalue)并赋值给q1;
[0068]
处理量化quantize(x
f
,min(x
f
),max(x
f
))并赋值给q
x

[0069]
处理量化qprelu(q
x
,q
c
,q1)并将量化结果赋值给res;
[0070]
其中,q
c
为量化后的参数c
f
,q1为1.0的量化,x
f
为全精度数据x,q
x
为量化后的数据x
f
,res为经过量化prelu激活函数的结果。
[0071]
在量化prelu激活时,由于正负半轴(即x>0或x<0的情况)的处理方式是不一样,如果直接对负半轴的参数c采用公式(2)直接量化的话会导致正负半轴的尺度不一致,导致最终的结果不对。将正半轴都乘了一个1,然后再根据参数c的minvalue,maxvalue将1量化,这样就可以保证正负半轴的尺度一致。
[0072]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1