一种降低低比特卷积神经网络推理运算复杂度的方法与流程

文档序号:27832017发布日期:2021-12-07 22:31阅读:283来源:国知局
一种降低低比特卷积神经网络推理运算复杂度的方法与流程

1.本发明涉及神经网络加速技术领域,特别涉及一种降低低比特卷积神经网络推理运算复杂度的方法。


背景技术:

2.近年来,随着科技的飞速发展,大数据时代已经到来。深度学习以深度神经网络(dnn)作为模型,在许多人工智能的关键领域取得了十分显著的成果,如图像识别、增强学习、语义分析等。卷积神经网络(cnn)作为一种典型的dnn结构,能有效提取出图像的隐层特征,并对图像进行准确分类,在近几年的图像识别和检测领域得到了广泛的应用。
3.特别地,乘移位实现32bit量化为低比特:将量化卷积运算出来的结果保存为32bit整形,然后再根据之前预先计算出来的参数,做乘法和移位操作来实现32bit转低比特。
4.然而,现有技术中对32bit量化为低比特时,由于需要保证量化后的精度,所以在做量化的过程还需要做一系列的加法和比较运算,这样会大大增加计算复杂度和计算资源特别对于量化到2bit的时候,这种代价往往太大。
5.此外,现有技术中的常用术语如下:
6.卷积神经网络(convolutional neural networks,cnn):是一类包含卷积计算且具有深度结构的前馈神经网络。
7.量化:量化指将信号的连续取值(或者大量可能的离散取值)近似为有限多个(或较少的)离散值的过程。
8.低比特:将数据量化为位宽为8bit,4bit或者2bit的数据。
9.推理:神经网络训练结束后,利用保存的数据进行运算的过程。


技术实现要素:

10.本技术提出了一种降低低比特卷积神经网络推理运算复杂度的方法,旨在克服上述现有技术中存在的缺陷,解决现有低比特模型推理过程计算复杂度和计算资源需求大的问题。
11.具体地,本发明提供一种降低低比特卷积神经网络推理运算复杂度的方法,所述方法包括以下步骤:
12.s1,神经网络训练结束后,利用保存的数据进行量化,
13.假设第i层的量化如下所示:
[0014][0015][0016]
其中δ
i
为激活函数,q
a
为feature map的量化公式,q
w
为权重的量化公式;
[0017]
s2,当s1中公式的参数符合以下条件:
[0018]
1)、用浮点标量缩放的定点数来表示即w
int
是用整数表示的定点数;
[0019]
2)、用浮点标量缩放的定点数来表示即x
int
是用整数表示的定点数;
[0020]
3)、δ
i
为单调函数;
[0021]
则,量化通过定点数的运算来获得,即:
[0022][0023][0024]
s3,从feature map的量化确定阈值:
[0025]
feature map的量化公式为:
[0026][0027]
由上式feature map的量化公式可以直接推出阈值为(0.5,1.5

(2
k-0.5)),其中k是量化的比特位宽;
[0028]
因为阈值之间的距离都是1.0,所以在最终量化时只需保存其中则阈值n∈{0,1

(2
k-1
)}其中k是量化的比特位宽;
[0029]
s4,由于量化为低比特时,量化后feature map的数值已经确定下来,并且q
a
为均匀量化,所以s2中的δ
i
(s
w
s
x
s
bn
(w
int
·
x
int
+b
i
/(s
w
s
x
s
bn
)))通过和步骤s3中一系列的所述阈值(t1,t2…
t
n
)比较来获得最终的量化结果。
[0030]
所述步骤s2中当量化为低比特2bit时,量化后feature map的取值为0,1,2,3。
[0031]
所述步骤s2中由于δ
i
为单调函数,s
w
s
x
>0,所以也可以通过(w
int
·
x
int
+b
i
/(s
w
s
x
s
bn
))和之间的比较来获得量化后的结果。
[0032]
所述步骤s4中由于s
bn
每个通道是不一样的,所以保存阈值时需要每个通道都需要保存一个。
[0033]
由此,本技术的优势在于:
[0034]
1.直接通过阈值比较了实现32bit量化为低比特,从而降低了运算的复杂度;
[0035]
2.减少了量化模型的整体运行时间;
[0036]
3.减少了运算资源的需求;
[0037]
避免了64bit乘64bit的运算。
附图说明
[0038]
此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,并不构成对本发明的限定。
[0039]
图1是本发明方法的流程示意图。
具体实施方式
[0040]
为了能够更清楚地理解本发明的技术内容及优点,现结合附图对本发明进行进一步的详细说明。
[0041]
如图1所示,本发明的一种降低低比特卷积神经网络推理运算复杂度的方法,所述方法包括以下步骤:
[0042]
s1,神经网络训练结束后,利用保存的数据进行量化,
[0043]
假设第i层的量化如下所示:
[0044][0045][0046]
其中δ
i
为激活函数,q
a
为feature map的量化公式,q
w
为权重的量化公式;
[0047]
s2,当s1中公式的参数符合以下条件:
[0048]
1)、用浮点标量缩放的定点数来表示即w
int
是用整数表示的定点数;
[0049]
2)、用浮点标量缩放的定点数来表示即x
int
是用整数表示的定点数;
[0050]
3)、δ
i
为单调函数;
[0051]
则,量化通过定点数的运算来获得,即:
[0052][0053]
s3,从feature map的量化确定阈值:
[0054]
feature map的量化公式为:
[0055][0056]
由上式feature map的量化公式可以直接推出阈值为(0.5,1.5

(2
k-0.5)),其中k是量化的比特位宽;
[0057]
因为阈值之间的距离都是1.0,所以在最终量化时只需保存
其中则阈值n∈{1,2

(2
k-1
)}其中k是量化的比特位宽;
[0058]
s4,由于量化为低比特时,量化后feature map的数值已经确定下来,并且q
a
为均匀量化,所以s2中的δ
i
(s
w
s
x
s
bn
(w
int
·
x
int
+b
i
/(s
w
s
x
s
bn
)))通过和步骤s3中一系列的所述阈值(t1,t2…
t
n
)比较来获得最终的量化结果。
[0059]
特别地,本技术的方法还可以表述为以下:
[0060]
假设第i层的量化计算如下所示:
[0061][0062][0063]
其中δ
i
为激活函数,q
a
为feature map的量化公式,q
w
为权重的量化公式
[0064]
上式中的参数符合以下条件:
[0065]
1、可以用浮点标量缩放的定点数来表示即w
int
是用整数表示的定点数
[0066]
2、可以用浮点标量缩放的定点数来表示即x
int
是用整数表示的定点数
[0067]
3、δ
i
为单调函数
[0068]
所以计算最终的可以通过定点数的运算来求得即:
[0069][0070]
由于量化为低比特时,量化后feature map的数值其实就已经确定下来了(以2bit为例,feature map的取值为0,1,2,3),并且q
a
为均匀量化,所以δ
i
(s
w
s
x
s
bn
(w
int
·
x
int
+b
i
/(s
w
s
x
s
bn
))可以通过和一系列的阈值(t1,t2…
t
n
)比较来获得量化结果,由于δ
i
为单调函数,s
w
s
x
>0,所以也可以通过(w
int
·
x
int
+b
i
/(s
w
s
x
s
bn
))和之间的比较来获得量化后的结果。
[0071]
阈值的确定需要从feature map的量化公式入手。
[0072]
feature map的量化公式为:
[0073][0074]
由上式可以直接推出阈值为(0.5,1.5

(2k-0.5)),其中k是量化的比特位宽。因
为阈值之间的距离都是1.0,所以我们在最终量化时只需保存其中则阈值阈值n∈{0,1

(2
k-1
)}其中k是量化的比特位宽;由于s
bn
每个通道是不一样的,所以保存阈值时需要每个通道都需要保存一个。
[0075]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1