一种神经网络数据量化存储方法技术

技术编号:27740424 阅读:20 留言:0更新日期:2021-03-19 13:33
本发明专利技术公开了一种神经网络量化存储方法。本发明专利技术方法首先将长度为L位的数据由高到低逐位判断是否为零,找到第一个非零数值对应的位置;如果数据为无符号数据,设定有效位数n,从第一个非零位置截取长度为n的数据进行存储,如果到第L‑n位依旧为零,保留L‑n位到L‑1位的数据段,添加标志位后进行存储;如果数据为有符号数据,设定有效位数m,从第一个非零位置截取长度为m的数据进行存储,如果到第L‑m+1位依旧为零,保留L‑m+1位到L‑1位的数据段,添加标志位、符号位后进行存储。本发明专利技术方法按照有效位数进行量化存储,过滤了高位为零的数据以及低位对神经网络预测精度影响较小的数据,大幅节约了存储空间和硬件算力。

【技术实现步骤摘要】
一种神经网络数据量化存储方法
本专利技术属于人工智能
,尤其是神经网络
,具体涉及一种神经网络数据量化存储方法。
技术介绍
深度学习自20世纪50年代诞生起,至今已经发展了几十年,历经几起几落,主要的原因都是当时计算机的算力不足,而随着计算机算力突飞猛进的发展,深度学习技术重新火热起来。虽然计算机的算力有了长足的进步,但是对于深度学习来说,其庞大的计算量以及参数量对计算机来说依旧是不小的挑战。通常来说,网络越大,参数越多该网络就有更好的性能,目前已经有非常多的经典网络诞生,这些网络的预测精度已经逐渐逼近人类的预测精度,甚至在某些领域已经超过了人类的预测精度。但是随之而来的问题是,网络过深,参数众多非常难以训练和部署,虽然其预测精度很高,但是这些缺点也限制了神经网络的应用范围,神经网络消耗的内存巨大,难以在小型设备上部署,而有些场景又需要实时预测,所以算力依旧是急需解决的问题之一。针对这一情况,量化是目前最常用也是应用最广泛的手段,量化有着原理简单,公式少,实现方便,性能稳定,技巧多样等特点,量化一般的做法是把高精度的浮点值截断或投影到低精度的浮点值或定点值上,但是量化的缺点也显而易见,直接进行量化会导致神经网络模型精度大幅下降。线性量化是目前最常用的量化方法,其做法是将需要量化的数据归一化到某一个区间,然后直接将数据的末尾进行舍入,从而达到将数据长度缩短的目的。该方法简单易于实现,不过对于神经网络的数据并没有做针对性设计,所以网络精度会受到影响。除此之外,还有众多非线性的量化方法也被提出,与线性量化不同,非线性量化在空间上并不是等间隔分布的,在有限的表示范围内,将对神经网络性能影响较大的数据范围采用较密集的低精度数值表示,而在对神经网络模型预测精度影响不大的数据采用较稀疏的低精度数值的表示。如何在量化数据的同时保证神经网络的性能,并且可以更加节约存储,提出一种满足要求的的神经网络量化方法十分必要。
技术实现思路
本专利技术的目的就是针对现有技术的不足,提供一种神经网络数据量化存储方法,该方法按有效位数针对数据进行截断,保留有效位数长度的数据。本专利技术的技术方案对无符号数据和有符号数据采取了不同的数据截断方法,具体如下:(1).首先取得神经网络需要量化的数据,包括权重、偏置、样本数据;(2).然后将长度为L位的数据d由高到低逐位判断是否为零,找到第一个非零数值对应的位置i;(3).如果数据d为无符号数据,则:根据ceil(log2(L-n))+n=K设定有效位数n,K为硬件存储要求;遍历数据d的第0位至第(L-n)位,从数据d第一个非零位置i,截取长度为有效位数n的数据,即截取di到di+n的数据进行存储,其他数据舍弃不存储;di表示第i位数据;如果到第(L-n)位,dL-n依旧为零,则停止遍历,保留dL-n至dL-1的数据段;在保留的数据段的头部或尾部添加标志位,将保留的数据段和标志位进行存储;(4).如果数据d为有符号数据,则:根据ceil(log2(L-m+1))+m=K设定有效位数m;遍历数据d的第1位至第(L-m+1)位,从数据d第一个非零位置j,截取长度为有效位数m的数据,即截取dj到dj+m的数据段进行存储,其他数据舍弃不存储;如果到第(L-m+1)位,dL-m+1依旧为零,则停止遍历,保留dL-m+1至dL-1的数据段;在保留的数据段的头部或尾部添加标志位,并在整体数据段前添加符号位,将符号位、标志位和保留的数据段进行存储。本专利技术方法按照有效位数进行量化存储,比线性量化效果更好。在存储过程中过滤了高位为零的数据以及低位对神经网络预测精度影响较小的数据,大幅节约了存储空间和硬件算力。对于神经网络权重来说,有大量的接近于零的数值,并且有一定的稀疏性,非常适合使用本方法进行量化存储。本专利技术方法针对稀疏性较好的数据更加良好,并且由于去除的都是对预测精度影响较小的数据,网络性能也能得到有效保证,具有简单实用、性能良好的特点。利用本专利技术方法存储数据,在相同数据位长的情况下性能更好。附图说明图1为本专利技术方法中无符号数据的量化流程示意图;图2为本专利技术方法中有符号数据的量化流程示意图;图3为无符号数据量化的实施例示意图;图4为有符号数据量化的实施例示意图。具体实施方式一种神经网络数据量化存储方法,具体流程如下:(1).首先取得神经网络需要量化的数据,包括权重、偏置、样本数据。(2).然后将长度为L位的数据d由高到低逐位判断是否为零,找到第一个非零数值对应的位置i。(3).如图1所示,如果数据d为无符号数据,则:根据ceil(log2(L-n))+n=K设定有效位数n,K为硬件存储要求,如16位、32位等;遍历数据d的第0位至第(L-n)位,从数据d第一个非零位置i,截取长度为有效位数n的数据,即截取di到di+n的数据进行存储,其他数据舍弃不存储;di表示第i位数据;如果到第(L-n)位,dL-n依旧为零,则停止遍历,保留dL-n至dL-1的数据段;在保留下的数据段的头部或尾部添加标志位,以表示截断前在原数据中的位置,将保留的数据段和标志位进行存储。标志位表示遍历范围[0,L-n],第(L-n)位对应的二进制位数为ceil(log2(L-n)),其中ceil为向上取整操作符,输出的数据总位数为ceil(log2(L-n))+n。(4).如图2所示,如果数据d为有符号数据,则:根据ceil(log2(L-m+1))+m=K设定有效位数m;遍历数据d的第1位至第(L-m+1)位,从数据d第一个非零位置j,截取长度为有效位数m的数据,即截取dj到dj+m的数据段进行存储,其他数据舍弃不存储;如果到第(L-m+1)位,dL-m+1依旧为零,则停止遍历,保留dL-m+1至dL-1的数据段;在保留下的数据段的头部或尾部添加标志位,以表示截断前在原数据中的位置,并在整体数据段前添加符号位,将符号位、标志位和保留的数据段进行存储。标志位表示遍历范围[1,L-m+1],第(L-m+1)位对应的二进制位数为ceil(log2(L-m+1)),其中ceil为向上取整操作符,输出的数据总位数为ceil(log2(L-m+1))+m。图3是针对无符号数据的一个实施实例示意图,数据data长度L为16,需要保留的有效位数n为4,指针i的遍历范围为0到12,对应标志位至少需要4位2进制数来表示,指针i从0遍历至7时遇到首个1,于是截取长度为n的数据,对应二进制数值为1010;标志位需表示i的数值,对应标志位的二进制数值为0111。将标志位与截断后的数据组合,得到量化后的数据data对应二进制数值为01111010。图4是针对有符号数据的一个实施实例示意图,数据data长度L为16,需要保留的有效位数m为3,指针j的遍历范围为1到13,对应标志位至少需要4位2进制数来表示,指针j从1遍历至7时遇到首个1本文档来自技高网
...

【技术保护点】
1.一种神经网络数据量化存储方法,其特征在于,该方法具体如下:/n(1).首先取得神经网络需要量化的数据,包括权重、偏置、样本数据;/n(2).然后将长度为L位的数据d由高到低逐位判断是否为零,找到第一个非零数值对应的位置i;/n(3).如果数据d为无符号数据,则:/n根据ceil(log

【技术特征摘要】
1.一种神经网络数据量化存储方法,其特征在于,该方法具体如下:
(1).首先取得神经网络需要量化的数据,包括权重、偏置、样本数据;
(2).然后将长度为L位的数据d由高到低逐位判断是否为零,找到第一个非零数值对应的位置i;
(3).如果数据d为无符号数据,则:
根据ceil(log2(L-n))+n=K设定有效位数n,K为硬件存储要求;
遍历数据d的第0位至第(L-n)位,从数据d第一个非零位置i,截取长度为有效位数n的数据,即截取di到di+n的数据进行存储,其他数据舍弃不存储;di表示第i位数据;
如果到第(L-n)位,dL-n依旧为零,则停止...

【专利技术属性】
技术研发人员:宋一平梁骏钟宇清宋蕴杨常星
申请(专利权)人:杭州国芯科技股份有限公司
类型:发明
国别省市:浙江;33

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

1