一种基于查表计算的高精度的神经网络工程化方法技术

技术编号:20026714 阅读:30 留言:0更新日期:2019-01-06 05:27
本发明专利技术公开的是一种基于查表计算的高精度的神经网络工程化方法,属于于人工智能神经网络深度学习技术领域,该方法包括步骤:以输出精度作为评价指标,采用自适应搜索策略,对神经网络进行稀疏化;对神经网络的权值参数采用非线性量化,对数据进行索引量化;采用查表法来快速实现神经网络的前向计算,本发明专利技术通过稀疏率自动分配策略在达到设定稀疏率的情况下最大可能的保留的网络精度,使用权值参数非线性量化和数据索引量化策略,将量化宽度压缩到8bit及其以下的同时保存很高的计算精度,最后通过构造一个256x256的32bit高精度快速计算表,实现前向过程的加速并减少运算过程中的精度没有丢失,计算精度高、运算速度快。

【技术实现步骤摘要】
一种基于查表计算的高精度的神经网络工程化方法
本专利技术涉及一种神经网络工程化方法,更具体一点说,涉及一种基于查表计算的高精度的神经网络工程化方法,属于人工智能神经网络深度学习

技术介绍
人工神经网络(ArtificialNeuralNetwork,即ANN)是一种运算模型,它是20世纪80年代以来人工智能领域兴起的研究热点,主要由大量的节点(称神经元相互联接构成,其中每个节点代表一种特定的输出函数,称为激励函数(activationfunction),每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依赖网络的连接方式,权重值和激励函数的不同而不同。典型的神经网络由输入层、隐藏层和输出层构成,而深度学习指的是含有多个隐藏层的神经网络结构,堆叠的隐藏层层数就是所谓的网络深度。研究发现网络模型深度越深,相应理解力就越强,现在的深度学习神经网络已经达到几百层至上千层的规模。深度神经网络中从输入层开始,根据输入数据和对应连接线上的权值参数,算出其后隐藏层的所有节点单元的输出值,在算完前一个隐藏层后,继续计算后一个隐藏层,这样从前往后逐渐一层一层的计算神经元节点值,直到最后一层输出层为止,也就是说,把网络正向的走一遍:输入层--->隐藏层--->输出层,计算每个结点,这个过程叫做前向计算。深度学习网络模型的层数深、参数多、计算量大,往往需要借助于GPU才能够运行,所以在嵌入式终端设备上部署的时候,在存储空间、计算资源和内存消耗等多个方面都遇到瓶颈,要想让深度学习网络模型可以在嵌入式终端设备上落地,通常需要对网络模型进行稀疏化、量化、计算加速,这个过程叫做工程化。工程化中的稀疏化是指把神经网络模型中绝对值值较小的元素置为零的操作。近年来,广泛的研究表明,通过训练得到的神经网络模型矩阵中,仅有部分权值较大的元素代表着重要连接,而其他权值较小的元素置为零(不参与计算),对神经网络精度的影响比较小。工程化中的量化是指把模型中的权值参数和节点数据从浮点转成定点的过程。基本步骤如下:首先,统计数据范围;其次,根据数据范围计算定点Qn,其中Q格式表示为Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要m+n+1位来表示这个数据;再次,采用公式xq=(int)x·2Q将浮点数据转成对应的定点数据。工程化中的计算加速是指根据量化的定点数,对神经网络的进行前向计算的过程。传统的工程化方案可以实现将深度学习网络模型设置在嵌入式终端设备上,但是传统的工程化方案存在以下问题:1)严重的网络精度损失,尤其是在浮点转定点的量化过程中,当位宽大于16bit的时候和浮点版本误差不大,效果尚可,但当位宽小于8bit时则和浮点版本相差误差已经较大,在效果上也下降明显;2)计算精度低和运算速度慢。
技术实现思路
本专利技术目的在于解决传统工程化过程中的网络精度损失的问题,提供具有计算精度高、运算速度快,并且在降低量化宽度的同时还可以保存较高的计算精度等技术特点的一种基于查表计算的高精度的神经网络工程化方法。为了实现上述目的,本专利技术通过以下技术方案:一种基于查表计算的高精度的神经网络工程化方法,该方法包括如下步骤:S1:基于原始的浮点网络模型,选取部分样本数据作为测试集输入的神经网络,对该神经网络从输入层到隐藏层再到输出层前向计算一遍,并将输出层获得的精度作为基准精度,根据实际需要设定精度损失门限值A,并设定稀疏率B作为下降的搜索步长;S2:采用步骤S1中设定的搜索步长,将作为测试集输入的神经网络从输入层到隐藏层再到输出层正向完成一次稀疏率下调,以完成一次稀疏率下调后的神经网络作为输入,从该神经网络的输入层到隐藏层再到输出层前向计算一遍,并从输出层获得稀疏精度,将所述稀疏精度与基准精度进行比较,若精度损失小于设定的精度损失门限值A,则重复上述步骤,直至精度损失大于设定的精度损失门限值A;S3:将完成稀疏化处理后的神经网络的权值参数聚类成256个不同的权值质心,将256个权值质心构成一个长度为256的质心队列,并且将每一个权值参数用一个8bit的索引来表明其对应的质心队列中的位置,获得256个权值参数索引;S4:基于原始的浮点网络模型,以步骤S1中作为测试集输入的神经网络作为输入,分别统计神经网络每一层数据的数据范围,获得神经网络每一层数据中的最大值fmax、最小值fmin,根据神经网络每一层数据中的最大值fmax、最小值fmin以及量化位宽计算出量化步长fstep,再通过神经网络每一层数据的量化步长fstep以及最大值fmax与最小值fmin间的浮点值fdata计算获得该浮点值fdata对应的量化索引index,其中所述神经网络每一层数据中量化位宽均为8bit,获得256个数据索引;S5:通过对权值参数非线性量化以及神经网络每一层数据的量化索引,构造一个256x256快速计算的表,所述表中的水平方向0-255为步骤S4获得的数据索引,垂直方向0-255为步骤S3获得的权值参数索引,所述表中的值为数据索引和权值参数索引所对应的真实浮点值相乘计算后的结果,并采用浮点数保存计算结果以最大化的保留了精度;S6:根据权值参数索引定位查找快速计算表中对应的值,根据数据索引定位查找计算表中对应的值,针对查找到的值进行累积获得累积值,对累积值进行量化以作为下一层神经网络层的输入数据,实现了基于查表计算的高精度的神经网络。作为一种改进,所述精度损失门限值A为0.05%-0.5%,所述稀疏率B为1%。作为一种改进,步骤S4中采用Kmeans聚类算法将权值参数聚类成256个不同的权值质心。作为一种改进,将步骤S3中每一个权值质心均采用高精度浮点表示以最大化的保留权值参数的精度。作为一种改进,所述量化步长fstep计算公式为fstep=(fmax-fmin)/256,所述浮点值fdata对应的量化索引index计算公式为index=(fdata-fmin)/fstep。有益效果:通过稀疏率自动分配策略在达到设定稀疏率的情况下最大可能的保留的网络精度,使用权值参数非线性量化和数据索引量化策略,将量化宽度压缩到8比特及其以下的同时保存很高的计算精度,最后通过构造一个256x256的32bit高精度快速计算表,可以实现前向过程的加速并减少运算过程中的精度丢失,对最终网络精度的影响非常小,可以保存很高的计算精度和很快的运算速度。附图说明图1是本专利技术稀疏率自动分配流程图。图2是本专利技术基于查表的快速计算流程图。具体实施方式以下结合说明书附图,对本专利技术作进一步说明,但本专利技术并不局限于以下实施例。如图1-2所示为一种基于查表计算的高精度的神经网络工程化方法的具体实施例,该实施例一种基于查表计算的高精度的神经网络工程化方法,该方法包括如下步骤:S1:基于原始的浮点网络模型,选取部分样本数据作为测试集输入的神经网络,对该神经网络从输入层到隐藏层再到输出层前向计算一遍,并将输出层获得的精度作为基准精度,根据实际需要设定精度损失门限值A,并设定稀疏率B作为下降的搜索步长,所述精度损失门限值A优选0.05%或0.5%或0.25%或0.35%,所述稀疏率B优选1%;S2:采用步骤S1中设定本文档来自技高网
...

【技术保护点】
1.一种基于查表计算的高精度的神经网络工程化方法,其特征在于该方法包括如下步骤:S1:基于原始的浮点网络模型,选取部分样本数据作为测试集输入的神经网络,对该神经网络从输入层到隐藏层再到输出层前向计算一遍,并将输出层获得的精度作为基准精度,根据实际需要设定精度损失门限值A,并设定稀疏率B作为下降的搜索步长;S2:采用步骤S1中设定的搜索步长,将作为测试集输入的神经网络从输入层到隐藏层再到输出层正向完成一次稀疏率下调,以完成一次稀疏率下调后的神经网络作为输入,从该神经网络的输入层到隐藏层再到输出层前向计算一遍,并从输出层获得稀疏精度,将所述稀疏精度与基准精度进行比较,若精度损失小于设定的精度损失门限值A,则重复上述步骤,直至精度损失大于设定的精度损失门限值A;S3:将完成稀疏化处理后的神经网络的权值参数聚类成256个不同的权值质心,将256个权值质心构成一个长度为256的质心队列,并且将每一个权值参数用一个8bit的索引来表明其对应的质心队列中的位置,获得256个权值参数索引;S4:基于原始的浮点网络模型,以步骤S1中作为测试集输入的神经网络作为输入,分别统计神经网络每一层数据的数据范围,获得神经网络每一层数据中的最大值fmax、最小值fmin,根据神经网络每一层数据中的最大值fmax、最小值fmin以及量化位宽计算出量化步长fstep,再通过神经网络每一层数据的量化步长fstep以及最大值fmax与最小值fmin间的浮点值fdata计算获得该浮点值fdata对应的量化索引index,其中所述神经网络每一层数据中量化位宽均为8bit,获得256个数据索引;S5:通过对权值参数非线性量化以及神经网络每一层数据的量化索引,构造一个256x256快速计算的表,所述表中的水平方向0‑255为步骤S4获得的数据索引,垂直方向0‑255为步骤S3获得的权值参数索引,所述表中的值为数据索引和权值参数索引所对应的真实浮点值相乘计算后的结果,并采用浮点数保存计算结果以最大化的保留了精度;S6:根据权值参数索引定位查找快速计算表中对应的值,根据数据索引定位查找计算表中对应的值,针对查找到的值进行累积获得累积值,对累积值进行量化以作为下一层神经网络层的输入数据,实现了基于查表计算的高精度的神经网络。...

【技术特征摘要】
1.一种基于查表计算的高精度的神经网络工程化方法,其特征在于该方法包括如下步骤:S1:基于原始的浮点网络模型,选取部分样本数据作为测试集输入的神经网络,对该神经网络从输入层到隐藏层再到输出层前向计算一遍,并将输出层获得的精度作为基准精度,根据实际需要设定精度损失门限值A,并设定稀疏率B作为下降的搜索步长;S2:采用步骤S1中设定的搜索步长,将作为测试集输入的神经网络从输入层到隐藏层再到输出层正向完成一次稀疏率下调,以完成一次稀疏率下调后的神经网络作为输入,从该神经网络的输入层到隐藏层再到输出层前向计算一遍,并从输出层获得稀疏精度,将所述稀疏精度与基准精度进行比较,若精度损失小于设定的精度损失门限值A,则重复上述步骤,直至精度损失大于设定的精度损失门限值A;S3:将完成稀疏化处理后的神经网络的权值参数聚类成256个不同的权值质心,将256个权值质心构成一个长度为256的质心队列,并且将每一个权值参数用一个8bit的索引来表明其对应的质心队列中的位置,获得256个权值参数索引;S4:基于原始的浮点网络模型,以步骤S1中作为测试集输入的神经网络作为输入,分别统计神经网络每一层数据的数据范围,获得神经网络每一层数据中的最大值fmax、最小值fmin,根据神经网络每一层数据中的最大值fmax、最小值fmin以及量化位宽计算出量化步长fstep,再通过神经网络每一层数据的量化步长fstep以及最大值fmax与最小值fmin间的浮点值fdata计算获得该浮点值fdata对应的量化索引index,其中所述神经...

【专利技术属性】
技术研发人员:葛益军
申请(专利权)人:杭州雄迈集成电路技术有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1