一种神经网络量化方法、装置及计算机可读存储介质
技术领域
本发明属于神经网络计算领域,具体涉及一种神经网络量化方法、装置及计算机可读存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
近年来,随着深度学习的迅速发展,深度学习已被证明在包括图像分类(ImageClassification),目标检测(Object Detection),自然语言处理(Natural LanguageProcessing)等任务上具有很好的效果。深度学习采用大量的数据训练出具有分析和预测等功能的神经网络模型,然而随着神经网络模型的规模增大,所需的存储资源、带宽资源和运算资源也就越多。尤其难以将训练好的复杂神经网络模型部署在内存和计算资源都不充分的边缘设备上。
基于上述问题,通常采用在尽量不影响性能的提前下,对经训练的浮点类型的神经网络模型的参数和激活输出进行定点化处理,这样可以有效减小存储空间和所需的传输带宽,并提高神经网络运算速度。然而现有技术中,对神经网络执行量化处理所采用的量化参数可能导致较多不必要的精度损失,影响量化性能。
发明内容
针对上述现有技术执行神经网络的量化过程中所采用的量化参数导致较多不必要的精度损失的问题。本发明实施例提出了一种神经网络量化方法、装置及计算机可读存储介质,利用这种方法、装置及计算机可读存储介质,能够解决上述问题。
本发明的实施例中提供了以下方案。
第一方面,提供了一种神经网络量化方法,包括:根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;根据分布数据确定目标网络层的目标量化范围;根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
在一些可能的实施方式中,根据分布数据确定目标网络层的目标量化范围,包括:在分布数据的两端分别确定目标网络层的激活输出的最大值区间和最小值区间;以最大值区间中每个激活输出作为上边界,以最小值区间中的每个激活输出作为下边界,确定多个第一量化范围;根据多个第一量化范围和目标量化位宽确定目标网络层的激活输出的多个第一量化分布;根据多个第一量化分布与分布数据的相对熵确定目标量化范围。
在一些可能的实施方式中,根据分布数据确定目标网络层的目标量化范围,包括:确定以分布数据中的最小激活输出作为下边界的多个第二量化范围;根据多个第二量化范围和目标量化位宽确定目标网络层的激活输出的多个第二量化分布;根据多个第二量化分布与分布数据的相对熵确定目标量化范围的上边界;确定与目标量化范围的上边界重合的多个第三量化范围;根据多个第三量化范围和目标量化位宽确定目标网络层的激活输出的多个第三量化分布;根据多个第三量化分布与分布数据的相对熵确定目标量化范围的下边界。
在一些可能的实施方式中,根据分布数据确定目标网络层的目标量化范围,包括:确定以分布数据中的最大激活输出作为上边界的多个第四量化范围;根据多个第四量化范围和目标量化位宽确定目标网络层的激活输出的多个第四量化分布;根据多个第四量化分布与分布数据的相对熵确定目标量化范围的下边界;确定与目标量化范围的下边界重合的多个第五量化范围;根据多个第五量化范围和目标量化位宽确定目标网络层的激活输出的多个第五量化分布;根据多个第五量化分布与分布数据的相对熵确定目标量化范围的上边界。
在一些可能的实施方式中,根据分布数据确定目标网络层的目标量化范围,还包括:确定分布数据中针对校正数据集中每个校正数据的激活输出的最大值和最小值;确定激活输出的最大值均值作为目标量化范围的上边界,确定激活输出的最小值均值作为目标量化范围的下边界。
在一些可能的实施方式中,在根据分布数据确定目标网络层的目标量化范围之前,还包括:采用平滑窗对目标网络层的激活输出的分布数据进行滑动滤波处理。
第二方面,提供一种神经网络量化装置,包括:第一确定单元,用于根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;第二确定单元,用于根据分布数据确定目标网络层的目标量化范围;量化单元,用于根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
在一些可能的实施方式中,第二确定单元,还用于:在分布数据的两端分别确定目标网络层的激活输出的最大值区间和最小值区间;以最大值区间中每个激活输出作为上边界,以最小值区间中的每个激活输出作为下边界,确定多个第一量化范围;根据多个第一量化范围和目标量化位宽确定目标网络层的激活输出的多个第一量化分布;根据多个第一量化分布与分布数据的相对熵确定目标量化范围。
在一些可能的实施方式中,第二确定单元,还用于:确定以分布数据中的最小激活输出作为下边界的多个第二量化范围;根据多个第二量化范围和目标量化位宽确定目标网络层的激活输出的多个第二量化分布;根据多个第二量化分布与分布数据的相对熵确定目标量化范围的上边界;确定与目标量化范围的上边界重合的多个第三量化范围;根据多个第三量化范围和目标量化位宽确定目标网络层的激活输出的多个第三量化分布;根据多个第三量化分布与分布数据的相对熵确定目标量化范围的下边界。
在一些可能的实施方式中,第二确定单元,还用于:确定以分布数据中的最大激活输出作为上边界的多个第四量化范围;根据多个第四量化范围和目标量化位宽确定目标网络层的激活输出的多个第四量化分布;根据多个第四量化分布与分布数据的相对熵确定目标量化范围的下边界;确定与目标量化范围的下边界重合的多个第五量化范围;根据多个第五量化范围和目标量化位宽确定目标网络层的激活输出的多个第五量化分布;根据多个第五量化分布与分布数据的相对熵确定目标量化范围的上边界。
在一些可能的实施方式中,第二确定单元,还用于:确定分布数据中针对校正数据集中每个校正数据的激活输出的最大值和最小值;确定激活输出的最大值均值作为目标量化范围的上边界,确定激活输出的最小值均值作为目标量化范围的下边界。
在一些可能的实施方式中,第一确定单元,还用于:在根据分布数据确定目标网络层的目标量化范围之前,采用平滑窗对目标网络层的激活输出的分布数据进行滑动滤波处理。
第三方面,提供一种神经网络量化装置,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;根据分布数据确定目标网络层的目标量化范围;根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
第四方面,提供一种计算机可读存储介质,计算机可读存储介质存储有程序,当程序被多核处理器执行时,使得多核处理器执行如第一方面的方法。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本发明实施例利用校正数据集确定目标网络层的激活输出的分布数据,进而根据该分布数据得到该目标网络层的目标量化范围,可以对目标网络层进行更高量化精度的定点量化处理,获得更好的量化效果。
应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。
附图说明
通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的优点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:
图1为一种示意性的卷积神经网络的结构示意图;
图2为根据本发明一实施例的神经网络量化方法的流程示意图;
图3为根据本发明实施例的用于确定目标量化范围的分布数据示意图;
图4(a)、图4(b)为根据本发明另一实施例的用于确定目标量化范围的分布数据示意图;
图5(a)、图5(b)为根据本发明又一实施例的用于确定目标量化范围的分布数据示意图;
图6为根据本发明一实施例的神经网络量化装置的结构示意图;
图7为根据本发明另一实施例的神经网络量化装置的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是一种示意性的神经网络100的结构示意图。如图1所示,神经网络可具有多层结构,且每个网络层的输出可为下一网络层的输入。例如,神经网络100可包括多个网络层,第一层到第n层L1、L2、L3、...及Ln,且第一层到第n层L1、L2、L3、...及Ln中的每一者的输出可输入到下一层。在神经网络100的各个网络层的激活输出为浮点类型数值,这导致了占用较大的存储空间与运算效率较低。
进一步地,本实施例为节省存储空间和提升运算效率,可对神经网络的每个网络层的激活输出数据进行量化处理,上述量化处理具体可以是将神经网络的每个网络层的激活输出从浮点类型数据(例如32比特浮点类型数据,以下简称FP32)量化为更低比特的定点型数(例如8比特定点型数据,以下简称INT8),从而能够使得所使用的计算资源数目减少。本发明实施例优选应用于边缘计算场景。具体地,在边缘计算场景中,由于边缘计算设备通常受到较大的计算资源限制,一般需要对神经网络采用量化定点实现,本发明实施例通过对神经网络的每个网络层的激活输出执行量化处理,从而可节省存储空间并提升了运算效率。
图2示出了根据本发明实施例的神经网络量化方法200的方法流程示意图。
如图2所示,该方法200包括:
步骤201:根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;
步骤202:根据分布数据确定目标网络层的目标量化范围;
步骤203:根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
其中,校正数据集可以包括多个校正数据,校正数据可以是图片数据,比如,校正数据集可以包括500-1000张图片,具体实现中,可以将校正数据集包含的校正数据依次输入到已训练的浮点类型神经网络中进行正向运算,从而获取其目标网络层的激活输出的分布数据。该分布数据基于实际激活输出而确定,属于非对称的分布数据。神经网络的目标网络层可以是已训练的浮点类型神经网络的任意一个网络层。具体实现中,可以在将校正数据集输入已训练的浮点类型神经网络之后,收集每一个网络层的激活输出的分布数据,从而根据每一个网络层的激活输出的分布数据将该已训练的浮点类型神经网络定点化处理为定点型神经网络。本实施例以神经网络的任意一个网络层作为目标网络层为例对本发明的神经网络量化方法进行示意性描述,然而可以理解,本实施例所示出方法可以适用于神经网络的每一个网络层。
可以理解,神经网络的各网络层的激活输出的分布数据通常呈现一种接近高斯分布的形态,大量的激活输出数据集中在均值附近。基于此,若直接取目标网络层的激活输出的最大值和最小值作为目标量化范围会导致量化精度损失过大。因此可以采用分布数据内的某两个值分别作为Vmax和Vmin,基于[Vmin,Vmax]内的激活输出数据构建浮点类型数据(比如,FP32数据)向定点类型数据(比如,INT8数据)的线性映射,并将[Vmin,Vmax]范围以外的激活输出直接进行饱和处理,这样可以为大多数数据保留更高的精度。本实施例中,可以通过收集上述校正数据集中每个校正数据输入神经网络时目标网络层的激活输出形成该分布数据,可以理解,所收集的激活输出是基于样本数据集和目标网络层的实际神经网络计算数据,由激活输出而组成的分布数据能够自适应地示出该目标网络层的激活输出的统计分布情况。通过利用该分布数据能够确定对应于目标网络层的目标量化范围[Vmin,Vmax]。从而可以对目标网络层进行更高量化精度的定点量化处理,获得更好的量化效果。
基于图2的神经网络量化方法,本申请的一些实施例还提供了该神经网络量化方法的一些具体实施方案,以及扩展方案,下面进行说明。
在一些可能的实施方式中,步骤202可以进一步包括:在分布数据的两端分别确定目标网络层的激活输出的最大值区间和最小值区间;以最大值区间中每个激活输出作为上边界,以最小值区间中的每个激活输出作为下边界,确定多个第一量化范围;根据多个第一量化范围和目标量化位宽确定目标网络层的激活输出的多个第一量化分布;根据多个第一量化分布与分布数据的相对熵确定目标量化范围。
如图3所示,示出了目标网络层的激活输出的分布数据示意图,其中用横轴表示目标网络层的激活输出的值,用纵轴表示分布情况(也即分布频率)。可以看出该分布数据呈高斯分布,且该分布数据中的最大激活输出为Tmax,最小激活输出为Tmin。在本发明实施例中,可以在该分布直方图的两端分别确定该目标网络层的激活输出的最大值区间R1和最小值区间R2,其中,最大值区间R1可以是以分布数据的最大激活输出Tmax为上边界的一段区间,最小值区间R2可以是以分布数据的最小激活输出Tmin为下边界的一段区间。可选地,最大值区间R1和最小值区间R2的区间宽度可以由分布数据的离散度而确定,比如,可使最大值区间R1或最小值区间R2内的激活输出数量分别占据全部激活输出的10%,当然也可以设置为其他参数,本实施例不作具体限制;进一步地,以最大值区间R1中的每个激活输出作为上边界,以最小值区间R2中的每个激活输出作为下边界,基于自由组合规则确定多种第一量化范围[V1min,V1max]。进一步针对所确定的多种第一量化范围[V1min,V1max]中的每一者,均结合目标量化位宽对步骤201中所确定的分布数据执行定点量化,其中将第一量化范围[V1min,V1max]内的浮点类型激活输出线性映射为目标量化位宽的定点型数据,将第一量化范围[V1min,V1max]之外的浮点类型数据进行饱和处理,进而得到针对多个第一量化范围的多个第一量化分布;进一步地,计算步骤201中所确定的原始的分布数据与上述多个第一量化分布中的每一者之间的相对熵(relative entropy),并选择具有最小相对熵的第一量化范围[V1min,V1max]作为目标量化范围[Vmin,Vmax]。其中,上述相对熵也可以称为KL散度(KL-divergence)或信息散度(information divergence),是用于评价两个概率分布间差异的非对称性度量,相对熵等价于两个概率分布的信息熵(Shannon entropy)的差值。
在一些可能的实施方式中,步骤202可以进一步包括:确定以分布数据中的最小激活输出作为下边界的多个第二量化范围;根据多个第二量化范围和目标量化位宽确定该目标网络层的激活输出的多个第二量化分布;根据多个第二量化分布与分布数据的相对熵确定目标量化范围的上边界;确定与目标量化范围的上边界重合的多个第三量化范围;根据多个第三量化范围和目标量化位宽确定目标网络层的激活输出的多个第三量化分布;根据多个第三量化分布与分布数据的相对熵确定目标量化范围的下边界。
如图4(a)及图4(b)所示,示出了目标网络层的激活输出的分布数据示意图,其中用横轴表示目标网络层的激活输出的值,用纵轴表示分布情况(也即分布频率)。可以看出该分布数据呈高斯分布,且该分布数据中的最大激活输出为Tmax,最小激活输出为Tmin。在本发明实施例中,如图4(a)所示,可以确定以分布数据中的最小激活输出Tmin作为下边界的多个第二量化范围[Tmin,V2max],其中该V2max可以是区间R1′中的每一个激活输出,区间R1′可以是以最大激活输出Tmax为上边界且具有任意设置宽度的区间;进一步地,可以针对所确定的多种第二量化范围[Tmin,V2max]中的每一者,均结合目标量化位宽(比如,INT8)对步骤201中所确定的分布数据执行定点量化,其中将第二量化范围[Tmin,V2max]内的浮点类型激活输出线性映射为目标量化位宽的定点型数据,将第二量化范围[Tmin,V2max]之外的浮点类型数据进行饱和处理,进而得到针对多个第二量化范围的多个第二量化分布;进一步地,计算步骤201中所确定的原始的分布数据与上述多个第二量化分布中的每一者之间的相对熵,选取具有最小相对熵的第二量化范围[Tmin,V2max]的上边界V2max作为目标量化范围的上边界Vmax;进一步地,如图4(b),可以确定与目标量化范围的上边界Vmax重合的多个第三量化范围[V3min,Vmax],其中该V3min可以是区间R2′中的每一个激活输出,区间R2′可以是以最小激活输出Tmin为下边界且具有任意设置宽度的区间;进一步地,可以针对所确定的多种第三量化范围[V3min,Vmax]中的每一者,均结合目标量化位宽(比如,INT8)对步骤201中所确定的分布数据执行定点量化,其中将第三量化范围[V3min,Vmax]内的浮点类型激活输出线性映射为目标量化位宽的定点型数据,将第三量化范围[V3min,Vmax]之外的浮点类型数据进行饱和处理,进而得到针对多个第三量化范围的多个第三量化分布;进一步地,计算步骤201中所确定的原始的分布数据与上述多个第三量化分布中的每一者之间的相对熵,选取具有最小相对熵的第三量化范围[V3min,Vmax]的下边界V3min作为目标量化范围的下边界Vmin。由此,得到目标量化范围的下边界Vmin和上边界Vmax,确定该目标量化范围为[Vmin,Vmax]。
上述实施例的基本构思为:首先假设目标量化范围的下边界为分布数据的最小激活输出,接下来根据分布数据的最小激活输出并利用相对熵运算确定目标量化范围的上边界,接下来根据目标量化范围的上边界并利用相对熵运算确定目标量化范围的下边界。可以理解,基于相同的原理,本发明实施例也可以首先假设目标量化范围的上边界为分布数据的最大激活输出,进而根据分布数据的最大激活输出推算出目标量化范围的下边界和上边界。
在一些可能的实施方式中,步骤202可以进一步包括:确定以分布数据中的最大激活输出作为上边界的多个第四量化范围;根据多个第四量化范围和目标量化位宽确定目标网络层的激活输出的多个第四量化分布;根据多个第四量化分布与分布数据的相对熵确定目标量化范围的下边界;确定与目标量化范围的下边界重合的多个第五量化范围;根据多个第五量化范围和目标量化位宽确定目标网络层的激活输出的多个第五量化分布;根据多个第五量化分布与分布数据的相对熵确定目标量化范围的上边界。
如图5(a)及图5(b)所示,示出了目标网络层的激活输出的分布数据示意图,其中用横轴表示目标网络层的激活输出的值,用纵轴表示分布情况(也即分布频率),可以看出该分布数据呈高斯分布,且该分布数据中的最大激活输出为Tmax,最小激活输出为Tmin。在本发明实施例中,如图5(a)所示,可以确定以分布数据中的最大激活输出Tmax作为上边界的多个第四量化范围[V4min,Tmax],其中该V4min可以是区间R2″中的每一个激活输出,区间R2″可以是以最小激活输出Tmin为下边界且具有任意设置宽度的区间;进一步地,可以针对所确定的多种第四量化范围[V4min,Tmax]中的每一者,均结合目标量化位宽(比如,INT8)对步骤201中所确定的分布数据执行定点量化,其中将第四量化范围[V4min,Tmax]内的浮点类型激活输出线性映射为目标量化位宽的定点型数据,将第四量化范围[V4min,Tmax]之外的浮点类型数据进行饱和处理,进而得到针对多个第四量化范围的多个第四量化分布;进一步地,计算步骤201中所确定的原始的分布数据与上述多个第四量化分布中的每一者之间的相对熵,选取具有最小相对熵的第四量化范围[V4min,Tmax]的下边界V4min作为目标量化范围的下边界Vmin;进一步地,如图5(b),可以确定与目标量化范围的下边界Vmin重合的多个第五量化范围[Vmin,V5max],其中该V5max可以是区间R1″中的每一个激活输出,区间R1″可以是以最大激活输出Tmax为上边界且具有任意设置宽度的区间;进一步地,可以针对所确定的多种第五量化范围[Vmin,V5max]中的每一者,均结合目标量化位宽(比如,INT8)对步骤201中所确定的分布数据执行定点量化,其中将第五量化范围[Vmin,V5max]内的浮点类型激活输出线性映射为目标量化位宽的定点型数据,将第五量化范围[Vmin,V5max]之外的浮点类型数据进行饱和处理,进而得到针对多个第五量化范围的多个第五量化分布;进一步地,计算步骤201中所确定的原始的分布数据与上述多个第五量化分布中的每一者之间的相对熵,选取具有最小相对熵的第五量化范围[Vmin,V5max]的上边界V5max作为目标量化范围的上边界Vmax。由此,得到目标量化范围的下边界Vmin和上边界Vmax,确定该目标量化范围为[Vmin,Vmax]。
在一些可能的实施方式中,步骤202可以进一步包括:确定分布数据中针对校正数据集中每个校正数据的激活输出的最大值和最小值;确定激活输出的最大值均值作为目标量化范围的上边界,确定激活输出的最小值均值作为目标量化范围的下边界。
其中,上述分布数据中包含针对校正数据集中每个校正数据的子分布数据,可以理解,对应于每个校正数据的子分布数据的集合也即上述分布数据。进一步地,可以确定每个子分布数据包含的激活输出的最大值和最小值,并将全部子分布数据的最大值均值作为目标量化范围的上边界,将全部子分布数据的最小值均值作为目标量化范围的下边界。
可以理解,在上述实施例中均采用了非对称的量化方案,也即本实施例中并未默认分布数据中的激活输出是以0为中心对称分布的,进而本实施例提供了并非以0为中心对称分布的目标量化范围。事实上,常用的激活函数(比如Relu)的输出结果都是大于等于0的,而其对应的分布数据的直方图中的全部激活输出均会集中在x坐标轴的正向一侧,此时若采用对称量化的方法会导致精度损失,而通过采用本实施例上述非对称的量化方案则会降低精度损失。
在一些可能的实施方式中,在步骤202之前,可以进一步包括:采用平滑窗对目标网络层的激活输出的分布数据进行滑动滤波处理。其中,滑动滤波处理用于消除如图3~图5(b)中所示出分布数据示意图中的毛刺数据,可以减小量化误差。
基于相同的技术构思,本发明实施例还提供一种神经网络量化装置,用于执行上述任一实施例所提供的神经网络量化方法。图6为本发明实施例提供的一种神经网络量化装置600的结构示意图。
如图6所示,神经网络量化装置600包括:第一确定单元601,用于根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;第二确定单元602,用于根据分布数据确定目标网络层的目标量化范围;量化单元603,用于根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
在一些可能的实施方式中,第二确定单元602,还用于:在分布数据的两端分别确定目标网络层的激活输出的最大值区间和最小值区间;以最大值区间中每个激活输出作为上边界,以最小值区间中的每个激活输出作为下边界,确定多个第一量化范围;根据多个第一量化范围和目标量化位宽确定目标网络层的激活输出的多个第一量化分布;根据多个第一量化分布与分布数据的相对熵确定目标量化范围。
在一些可能的实施方式中,第二确定单元602,还用于:确定以分布数据中的最小激活输出作为下边界的多个第二量化范围;根据多个第二量化范围和目标量化位宽确定目标网络层的激活输出的多个第二量化分布;根据多个第二量化分布与分布数据的相对熵确定目标量化范围的上边界;确定与目标量化范围的上边界重合的多个第三量化范围;根据多个第三量化范围和目标量化位宽确定目标网络层的激活输出的多个第三量化分布;根据多个第三量化分布与分布数据的相对熵确定目标量化范围的下边界。
在一些可能的实施方式中,第二确定单元602,还用于:确定以分布数据中的最大激活输出作为上边界的多个第四量化范围;根据多个第四量化范围和目标量化位宽确定目标网络层的激活输出的多个第四量化分布;根据多个第四量化分布与分布数据的相对熵确定目标量化范围的下边界;确定与目标量化范围的下边界重合的多个第五量化范围;根据多个第五量化范围和目标量化位宽确定目标网络层的激活输出的多个第五量化分布;根据多个第五量化分布与分布数据的相对熵确定目标量化范围的上边界。
在一些可能的实施方式中,第二确定单元602,还用于:确定分布数据中针对校正数据集中每个校正数据的激活输出的最大值和最小值;确定激活输出的最大值均值作为目标量化范围的上边界,确定激活输出的最小值均值作为目标量化范围的下边界。
在一些可能的实施方式中,第一确定单元601,还用于:在根据分布数据确定目标网络层的目标量化范围之前,采用平滑窗对目标网络层的激活输出的分布数据进行滑动滤波处理。
需要说明的是,本申请实施例中的神经网络量化装置可以实现前述神经网络量化方法的实施例的各个过程,并达到相同的效果和功能,这里不再赘述。
图7为根据本申请一实施例的一种神经网络量化装置的示意图,用于执行如图2所示出的神经网络量化方法,该装置包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行:根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;根据分布数据确定目标网络层的目标量化范围;根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
根据本申请的一些实施例,一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被多核处理器执行时,使得所述多核处理器执行:根据校正数据集确定神经网络的目标网络层的激活输出的分布数据;根据分布数据确定目标网络层的目标量化范围;根据目标量化范围和目标量化位宽对目标网络层进行定点量化。
本申请中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备和计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以其描述进行了简化,相关之处可参见方法实施例的部分说明即可。
本申请实施例提供的装置和计算机可读存储介质与方法是一一对应的,因此,装置、设备和计算机可读存储介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述装置、设备和计算机可读存储介质的有益技术效果。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。