一种用于深度神经网络高速实时量化结构和运算实现方法与流程

文档序号:16631552发布日期:2019-01-16 06:37阅读:198来源:国知局
一种用于深度神经网络高速实时量化结构和运算实现方法与流程
本发明为一种深度神经网络量化结构和方法。深度神经网络可以应用在图像识别,语音识别,大数据分析等方面。
背景技术
:深度神经网络是基于学习的方法的一种,其通过逐层抽象特征,组合底层抽象形成高层特征抽象,来发现数据的特征,解决不同的数据表示问题。其拓扑结构和计算方式模拟人脑神经系统,事实证明可准确地感知数据特征。深度神经网络包括cnn,dnn,rnn等结构。近年基于深度神经网络的方法的目标图像识,语音识别,大数据分析等方面别得到很好的效果。在2006年多伦多大学教授hinton基于深度网络提出了一种快速逐层非监督训练算法,为多层神经网络训练方法做出了革命性的进展,hinton也因此被称为深度学习之父。2012年,alexkrishevsky与来自多伦多大学(universityoftoronto)的其他研究人员提出了一种基于cnn的深度架构alexnet,赢得了当年的ilsvrc冠军(错误率16.4%使用额外数据可达15.3%)。他们竞争对手以及之前几年的模型相比在识别性能方面取得了实质性的提升。随后,ilsvrc的top-5错误率在近几年取得重大突破,而主要的突破点都是在深度学习和卷积神经网络,成绩的大幅提升几乎都伴随着卷积神经网络的层数加深。现在,国际的google,ibm,百度,intel等领先的科技互联网和硬件公司都将深度网络人工智能方向作为重点发展方向。但是深度神经网络结构复杂,规模大,计算量高,对应用深度神经网络的使用条件提出较高要求,这成为现在主要问题之一。传统深度神经网络中主要运算是乘法运算和加法运算,其中乘法运算是占用整个资源中的最大部分,经研究发现,神经网络对低精度权重值具有非常高的容忍度,极度粗略的权重值并不会大幅降低预测精度。新兴趋势是采用远低于32位的紧凑型低精度数据类型,研究人员已经对极低精度的2位三进制和1位二进制dnn进行了持续的精度改进,其中值分别约束为(0,+1,-1)的三值网络或(+1,-1)的二值网络。在二值网络和三值网络中将原有的乘法运算简化为加法运算,大大加速了运算过程,压缩网络结构。但是在imagenet这种库上面,还是不够准确。技术实现要素:针对上述技术不足,本发明提出一种用于深度神经网络高速实时量化结构和运算实现方法,可以简化计算所消耗的资源,降低系统需求。本发明解决其技术问题所采用的技术方案是:一种用于深度神经网络高速实时量化结构和运算实现方法,被处理数据通过深度神经网络得到处理结果,在深度神经网络选取部分或全部节点作为计算模块,计算模块内的节点参数为或量化为2的整数倍次幂形式的参数,将计算模块的输入数据与2的整数倍次幂形式的参数进行运算得到输出结果。所述2的整数倍次幂形式的参数包括绝对值大于1的数。所述计算模块的输入数据与2的整数倍次幂形式的参数进行运算具体为:计算模块的输入数据与2的整数倍次幂形式的参数相乘时在处理器中采用位移运算。所述2的整数倍次幂形式的参数为计算模块提出公共系数后,进行量化所得结果。所述2的整数倍次幂形式的参数为直接通过训练约束所得结果。所述量化包括以下步骤:6)设定量化参数个数m,占全体量化参数个数的a%个数值中,选取绝对值最大的n个参数值fm-n…fm;7)计算fm-n…fm的平均值fma;8)设fma为量化最大值;9)设量化为k级,即2的0次幂至2的k次幂,并将fma与2的k次幂的比例作为公共系数;10)根据2的0次幂至2的k次幂的比例关系,确定量化其他级所对应的中间数值,将量化参数与中间数值进行比较,根据临近点法取得量化参数对应的幂的大小,进而得到量化结果。所述计算模块输入数据为或量化为2的整数倍次幂形式,输入数据与参数的乘法运算转化为指数的加法运算。当计算模块的输入为深度神经网络的中间结果时,将中间结果量化提出公共系数,将中间结果量化为2的整数倍次幂形式大小,公共系数在计算模块以后的网络层参与运算。所述将计算模块的输入数据与2的整数倍次幂形式的参数进行运算具体为将计算模块的输入数据与2的整数倍次幂形式的参数进行卷积运算,包括以下步骤:计算模块的输入数据与2的整数倍次幂形式的参数相乘,即指数相加,得到h个相乘结果m1,…,mh,统计相乘结果中相同数值的数值个数,将数值个数输入到对应译码器得到实际数值;将所有实际数值相加,得到输出结果。深度神经网络的输入接收被处理数据;计算模块的输出结果至下一级的计算模块或者网络层,深度神经网络输出处理结果。本发明具有以下有益效果及优点:1.本发明计算模块输入数据量化为2的整数倍次幂形式,可以简化计算所消耗的资源,降低系统需求。2.本发明计算模块的输入数据与2的整数倍次幂形式的参数进行卷积运算,这样可以进一步简化所消耗资源。附图说明图1为实施例一中系数提取示例图。图2为2的整数倍次幂形式的输入数据与2的整数倍次幂形式的参数卷积和的计算流程示意图。具体实施方式下面结合实施例对本发明做进一步的详细说明。一种用于深度神经网络高速实时量化结构和运算实现方法在深度神经网络选取部分或全部节点作为计算模块,计算模块内的节点参数为或量化为2的整数倍次幂形式的参数,将计算模块的输入数据与2的整数倍次幂形式的参数进行运算得到输出结果。参数为2的整数倍次幂形式即参数为1,-1,2,-2,4,-4,8,-8等2的整数倍次幂形式。计算机中数值均由2进制表示,计算机中2的整数倍次幂形式的参数的有效数字为一位,并且可表示不同大小,可以有不同于其他数字的运算形式,所以可以简化算法与深度网络结构。选取的所述部分或全部节点作为计算模块为同一层的临近的一些节点为一个计算模块,也可以将几个临近层之间对应位置的一些节点作为一个计算模块。深度神经网络的输入数据可以为图像灰度数据,音频数据,金融数据等数据形式。一种用于深度神经网络高速实时量化结构和运算实现方法,所述2的整数倍次幂形式的参数包括绝对值大于1的数。2的整数倍次幂形式的参数包括绝对值大于1的数,即参数不局限于1,-1,0范围内。一种用于深度神经网络高速实时量化结构和运算实现方法,所述计算模块的输入数据与2的整数倍次幂形式的参数进行运算具体为:计算模块的输入数据与2的整数倍次幂形式的参数相乘时在处理器中采用位移运算。计算模块的输入数据与2的整数倍次幂形式的参数相乘时,乘法运算可以转化为位移运算。计算机处理数据为二进制计算,浮点乘法是转化为通过有效数据与参数分别整数相乘得到。整数相乘过程如下两个无符号二进制数x和y,x为m位宽,y为n位宽其中xi,和yj为0或者1,那么x和y的乘法定义如下z为x和y的积,zk为第k位有效数值。例如x=101010,y=1011计算过程如下:被乘数与乘数的第一个位相乘(实际为“与”操作)产生积,并且根据乘数相应位的位置对部分积进行左移(例如,被乘数与乘数的第0位相乘不移位;与第1位相乘,部分积左移1位,以此类推),最终将所有的部分积相加得到乘法运算的结果。m位被乘数与n位乘数相乘得到的乘积是m+n位的。一次乘法运算包括多次加法运算与位移运算,所以多位数乘法运算的复杂度要较加法与位移运算高一至几个数量级。一次2的整数倍次幂形式的参数乘法,例如101010与4(100)相乘只需一次位移运算我们将量化级别定义为1,-1,2,-2,4,-4,8,-8……等2的整数倍次幂形式的参数,这些参数特殊之处在于与其他整数数据相乘只会产生一次位移运算,但量化精度与二值网络和三值网络仅用1,-1,0表示的精度相比却有了大幅提高,也就是将原来的1表示为多量化级别的1,2,4,8…,原来的-1表示为多量化级别的-1,-2,-4,-8…,特别是在参数值较低时保持较高的量化精度。也就是说,我们的方法可以在二值网络或三值网络的计算的速度量级下拥有更高精度的深度神经网络。一种用于深度神经网络高速实时量化结构和运算实现方法,所述2的整数倍次幂形式的参数为计算模块提出公共系数后,进行量化所得结果。2的整数倍次幂形式的参数可以是同一计算模块内的相对关系。计算模块参数不需要绝对值为2的整数倍次幂形式的参数,只需要提出公共系数后量化结果为2的整数倍次幂形式的参数,即同一计算模块内参数之间的相对关系为2的整数倍次幂形式即可。2的整数倍次幂形式的参数为直接通过训练约束所得结果。深度神经网络参数的产生是设置约束条件,通过大量的样本反复迭代训练,直至达到约束条件产生的。通过样本训练模型时,我们直接约束参数为2的整数倍次幂形式的精度来计算参数,生成的网络直接就为2的整数倍次幂形式的参数。量化包括以下步骤:1)设定量化参数个数m,占全体量化参数个数的a%个数值中,选取绝对值最大的n个参数值fm-n…fm;2)计算fm-n…fm的平均值fma;3)设fma为量化最大值;4)设量化为k级,即2的0次幂至2的k次幂,并将fma与2的k次幂的比例作为公共系数;5)根据2的0次幂至2的k次幂的比例关系,确定量化其他级所对应的中间数值,将量化参数与中间数值进行比较,根据临近点法取得量化参数对应的幂的大小,进而得到量化结果。计算模块输入数据为或量化为2的整数倍次幂形式,输入数据与参数的乘法运算转化为指数的加法运算。当输入为数据和参数同时为2的整数倍次幂形式时,参数与输入数据相乘转化为指数相加。当计算模块的输入为深度神经网络的中间结果时,将中间结果量化提出公共系数,将中间结果量化为2的整数倍次幂形式大小,公共系数在计算模块以后的网络层参与运算。中间结果量化计算步骤提出公共系数后,将中间结果量化为2的整数倍次幂形式大小,公共系数可在计算的后续结果或最终结果处进行相乘等运算。一种用于深度神经网络高速实时量化结构和运算实现方法,将所述计算模块的输入数据与2的整数倍次幂形式的参数进行卷积运算包括以下步骤(如图2):计算模块的输入数据与2的整数倍次幂形式的参数相乘,即指数相加,得到h个相乘结果m1,…,mh,统计相乘结果中相同数值的数值个数,将数值个数输入到对应译码器得到实际数值;将所有实际数值相加,得到输出结果。其中统计相乘结果m1,…,mh中相同数值的数值个数,例如分别统计相乘结果中大小为1对应的数的个数p1,相乘结果中大小为2对应的数的个数p2,相乘结果中大小为4对应的数的个数p3,相乘结果中大小为8对应的数的个数p4。将p1,p2,p3,p4分别送入到对应的译码其中得到实际数值大小。译码过程为对应权值与输入的p1,p2,p3,p4相乘过程,即p1,p2,p3,p4进行相应位移运算。一种用于深度神经网络高速实时量化结构和运算实现方法,深度神经网络的输入接收被处理数据;计算模块的输出结果至下一级的计算模块或者网络层,深度神经网络输出处理结果,输出的结果为对图像、声音、金融数据的分类结果。其被处理数据为图像数据,声音数据,金融数据等,输出处理结果为对图像声音,金融的判别分类等。实现图像、声音、金融数据的分类。实施例一深度神经网络可以应用在图像处理的图像识别中,深度神经网络有多层网络构成,这里举例其中一层与图像运算的结果,输入数据为图像的灰度数值,如表3所示,表3为2进制数值,数值大小对应为图像灰度值大小。深度神经网络完成对图像的卷积等运算,根据计算结果对图像进行识别分类。深度神经网络如图1所示,参数的整数倍次幂形式的参数的表达可以在一个运算比较集中的单元(同一层)内表示,也就是单元内的参数只要相对关系为整数倍次幂形式的参数,提出共享的权值,就可以使用整数倍次幂形式的参数。参数如图一暂时采用2的4次幂为最大对应参数中最大数值的方法进行量化,及2的4次幂对应2.12,2的3次幂对应1.06,2的2次幂对应0.53,2的1次幂对应0.265,2的0次幂对应0.1325,提出公用系数0.1325。未量化原始数据如表1,量化后数据如表2。表12.090.980.480.090.15-0.14-1.082.12-0.911.920-1.030.8700.530.49表243200-0-34-34*-33*22结果可见提出公共系数后,表格2中存储系数的2的幂数。网络结构大幅简化,而且后续计算只需位移与相加计算即可,可大幅提高运算速度。输入数据如表3,表310001011100111101101011010001010111111101100101001100011110111101110011110输入数据与参数对应位相乘后所得结果如表4:表41000100000111001000111011000101101000101011110001110000011001000010010000011110100011101000011001000所得计算结果为图像传给下一层网络的结果,输出对应数据相乘结果。实施例二同样为在图像识别中应用。深度网络未量化原始数据如表5。参数的整数倍次幂形式的参数的表达可以在一个运算比较集中的单元(同一层)内表示,也就是单元内的参数只要相对关系为整数倍次幂形式的参数,提出共享的权值,就可以使用整数倍次幂形式的参数。参数如表暂时采用2的4次幂为最大对应参数中最大数值的方法进行量化,及2的4次幂对应6.84,2的3次幂对应3.42,2的2次幂对应1.71,2的1次幂对应0.855,2的0次幂对应0.4275,提出公用系数0.4275。量化后结果如表6所示。图像输入原始数据如表7所示,数值大小对应图像灰度值大小。量化后如表8所示。量化后表6与量化后表8实际数据相乘计算即为指数相加,计算结果为表9。表53.173.986.784.881.542.684.625.511.655.430.155.532.784.586.845.24表63343223424043344表70.545.786.482.554.953.541.559.643.687.753.110.224.882.143.560.12表80332331434203230表93675554558246574结果可见提出公共系数后,表格6中存储参数的2的幂数。网络结构大幅简化,而且后续计算只需相加计算即可得到表9,可大幅提高运算速度,输出对应数据相乘结果。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1