一种prelu和leaky_relu激活的量化实现方法与流程
- 国知局
- 2024-09-14 14:48:01
本发明属于神经网络,特别涉及一种prelu和leaky_relu激活的量化实现方法。
背景技术:
1、卷积神经网络在图像、视频、语音领域有着广泛的应用,随着神经网络越变越复杂,需要大量资源来训练和评估,然而硬件加速器性能增长和通用性提高日趋缓慢。卷积神经网络主要由输入层、卷积层、池化层和全连接层组成,其中卷积层是构成卷积神经网络的核心层,网络中绝大部分计算量由它产生,因此卷积神经网络的运行速度基本上取决于卷积层的运算速度。nna(neural network accelerator)是一种用于处理卷积计算的高性能低功耗的神经网络加速器,拥有自己的指令集,具有灵活的可编程特性,可适用于不同类型的神经网络,还支持激活函数为relu的快速量化。通过配置nna寄存器可以实现卷积计算加速和量化加速,从而减少神经网络运行时间,在实际应用中实时性更高,用户体验更好。
2、现有技术的主要缺陷在于:
3、由于nna只支持激活函数为relu的快速量化,在实际应用中通用性不高。此外,卷积结果用32比特表示,运算速度慢,存储消耗大,在实际应用中不具备实时性。而nna仅支持激活函数为relu时将32比特卷积结果转化为8比特输出的快速量化。当激活函数为prelu和leaky_relu时,无法通过nna对量化过程进行加速。
4、此外,现有技术中的常用术语包括:
5、1、神经网络:模仿生物神经网络结构和功能的数学模型,通过学习训练样本数据的内在规律,获得分析或者表达样本数据的能力,可应用于目标检测、场景分类、文字识别等多种应用领域。
6、2、深度学习:训练神经网络的过程和方法。
7、3、图像卷积:对于输入图像的每一个像素点,计算它的邻域像素和卷积核对应元素的乘积后累加,然后加上偏置bias,最后经过激活函数映射得到输出图像对应位置的像素值。通过不断滑动卷积核矩阵,得到输出图像所有位置的像素值。
8、4、nna:神经网络加速器。
9、5、激活函数:输入图像和卷积核的乘累加结果加上偏置bias后通过激活函数映射得到最终卷积层输出,用来提升网络的非线性,增强网络的表征能力。
10、6、量化:卷积结果用32比特表示,为了提高运算速度,降低功耗,减少存储消耗,需要将卷积结果通过相应计算转化为8比特进行存储,量化就是将32比特转化为8比特的过程。
11、7、prelu和leaky_relu:神经网络常用激活函数。
技术实现思路
1、为了解决上述问题,本申请的目的在于:提出一种激活函数为prelu和leaky_relu的量化实现方法,提高卷积的运算速度。
2、具体地,本发明提供一种prelu和leaky_relu激活的量化实现方法,所述方法包括在卷积量化过程中,通过将32比特的卷积结果和量化参数进行相应计算得到8比特输出数据;将卷积的乘累加结果加上偏置bias后,通过激活函数映射得到最终卷积输出,对prelu和leaky_relu激活函数输出进行量化,需要提供正负半轴的量化参数,分别为positive_threshold和negative_threshold;
3、所述prelu和leaky_relu激活函数公式为:
4、
5、其中x为激活函数输入,f(x)为激活函数输出,a为常数;
6、当激活函数为prelu和leaky_relu时,需要前后进行两次卷积量化过程,先将正半轴量化参数写入nna的ram空间,启动nna量化得到正半轴的量化结果,然后将负半轴量化参数写入nna的ram空间,启动nna量化得到负半轴的量化结果,分别得到正负半轴的量化结果,再根据卷积乘累加结果和偏置bias相加后的结果w*x+b的正负选择相应的量化结果,得到最终的量化输出。
7、所述卷积量化过程:输入图像和卷积核对应元素乘累加,然后加上偏置bias,最后经过激活函数得到最终卷积输出,用公式表示为:
8、y=f(w*x+b)
9、其中f表示激活函数,w表示卷积核数据,x表示输入数据,b表示偏置,y表示输出数据;
10、要对输出数据量化到8比特,需要乘以相应的scale,公式表示为:
11、o=y·scale
12、令threshold=1/scale,公式表示为:
13、
14、其中y为32比特输出数据,o为8比特输出数据;
15、最终公式表示为:
16、
17、其中,positive_threshold=threshold,
18、negative_threshold=threshold/a。
19、所述方法进一步包括以下步骤:
20、s1,将卷积核数据w,输入图像数据x,偏置b和正半轴量化参数positive_threshold写入nna的ram空间,配置好nna寄存器之后启动nna,进行卷积的乘累加计算和量化操作,得到卷积结果的正半轴量化输出yp:
21、yp=(w·x+b)/positive_threshold
22、(w·x+b)为32比特有符号输出,yp为8比特无符号输出,0≤yp≤255;nna内部通过将(w·x+b)和positive_threshold进行比较,实现量化操作,当(w·x+b)≥0时,128≤yp≤255,当(w·x+b)<0时,0≤yp<128;
23、s2,将卷积核数据w,输入图像数据x,偏置b和负半轴量化参数negative_threshold写入nna的ram空间,配置好nna寄存器之后启动nna,进行卷积的乘累加计算和量化操作,得到卷积结果的负半轴量化输出np:
24、np=(w·x+b)/negative_threshold
25、(w·x+b)为32比特有符号输出,np为8比特无符号输出,0≤np≤255。nna内部通过将(w·x+b)和negative_threshold进行比较,实现量化操作。当(w·x+b)≥0时,128≤np≥255,当(w·x+b)<0时,0≤np<128。
26、s3,卷积乘累加结果和偏置bias相加后的结果(w·x+b)的正负可以通过将正半轴的量化输出yp和128进行比较而得到,然后便可以根据(w·x+b)的正负选择正负半轴的量化结果,得到最终的量化输出,如下式所示:
27、
28、其中o为最终的量化输出。
29、由此,本申请的优势在于:
30、1、量化:通过将32比特的卷积结果和量化参数进行相应计算得到8比特输出数据,从而提高运算速度,降低功耗,减少存储消耗。
31、2、激活函数:将卷积的乘累加结果加上偏置bias后,通过激活函数映射得到最终卷积输出,可以提升网络的非线性,增强网络的表征能力。
技术特征:1.一种prelu和leaky_relu激活的量化实现方法,其特征在于,所述方法包括在卷积量化过程中,通过将32比特的卷积结果和量化参数进行相应计算得到8比特输出数据;将卷积的乘累加结果加上偏置bias后,通过激活函数映射得到最终卷积输出,对prelu和leaky_relu激活函数输出进行量化,需要提供正负半轴的量化参数,分别为positive_threshold和negative_threshold;
2.根据权利要求1所述的一种prelu和leaky_relu激活的量化实现方法,其特征在于,所述卷积量化过程:输入图像和卷积核对应元素乘累加,然后加上偏置bias,最后经过激活函数得到最终卷积输出,用公式表示为:
3.根据权利要求2所述的一种prelu和leaky_relu激活的量化实现方法,其特征在于,所述方法进一步包括以下步骤:
技术总结本发明提出一种prelu和leaky_relu激活的量化实现方法,所述方法包括在卷积量化过程中,通过将32比特的卷积结果和量化参数进行相应计算得到8比特输出数据;将卷积的乘累加结果加上偏置bias后,通过激活函数映射得到最终卷积输出,对prelu和leaky_relu激活函数输出进行量化,需要提供正负半轴的量化参数,分别为positive_threshold和negative_threshold;所述prelu和leaky_relu激活函数公式为:其中x为激活函数输入,f(x)为激活函数输出,a为常数;当激活函数为prelu和leaky_relu时,需要进行两次NNA卷积量化过程,分别得到正负半轴的量化结果,再根据卷积乘累加结果和偏置bias相加后的结果W*X+B的正负选择相应的量化结果,得到最终的量化输出。提高卷积的运算速度。技术研发人员:刘子航受保护的技术使用者:合肥君正科技有限公司技术研发日:技术公布日:2024/9/12本文地址:https://www.jishuxx.com/zhuanli/20240914/295967.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表