卷积神经网络的逐层变精度定点化方法及装置与流程

文档序号:14721850发布日期:2018-06-17 17:28阅读:369来源:国知局

本发明涉及计算机技术领域,尤其涉及一种卷积神经网络的逐层变精度定点化方法及装置。



背景技术:

随着互联网技术与传感器技术的不断发展,我们的时代正逐渐进入大数据时代。这种数据量的暴增给人们的生活带来了巨大的影响,原本很多难以发现的规律随着人们对大数据研究的兴起被发掘出来。同时,暴增的数据量也对人们处理数据的方式发起了挑战。传统的人工分析处理数据变得杯水车薪,我们需要让机器自己学会处理数据。机器学习算法作为一类可以让机器自主识别各种特征,从广阔的数据集中提取有用信息的一类算法,也是顺应时代潮流的产物。

其中,卷积神经网络是机器学习算法中一种重要的算法,它相对图像处理领域里的一些传统算法准备性提高很多,推动了计算机领域的发展,随着人们不断研究,卷积神经网络的识别准确率不断地提升,同时其算法的计算与存储复杂度也随之增长,不断膨胀的计算复杂度和空间复杂度对计算设备的性能提出了挑战。

卷积神经网络庞大的计算量和存储量使得一般的嵌入式计算平台难以高效地进行计算,导致许多对实时性要求较高的机器视觉应用难以在嵌入式端实现。因此,如何在嵌入式平台上提高网络数据的计算速度和存储空间是目前需要解决的一个问题。



技术实现要素:

本发明的目的旨在至少在一定程度上解决上述的技术问题之一。

为此,本发明的第一个目的在于提出一种卷积神经网络的逐层变精度定点化方法,该方法能够保障卷积神经网络的每一层在定点化后精度损失最小,使得可以使用极低的比特数来表示卷积神经网络的输入数据、不同层网络参数、中间计算数据,能够显著降低存储网络数据需要的空间,提高网络参数传输的速度,并大幅度降低专用于卷积神经网络的硬件中计算单元的大小。

本发明的第二个目的在于提出一种卷积神经网络的支持装置。

为达上述目的,本发明第一方面实施例提出了一种卷积神经网络的逐层变精度定点化方法,包括以下步骤:预处理:输入卷积神经网络模型、网络参数和卷积神经网络输入数据,并分别根据网络参数和输入数据的取值范围对所述卷积神经网络模型中不同层的定点化配置进行估计;卷积神经网络输入数据与网络参数定点化:根据预处理得到的定点化配置估计,根据优化误差函数确定所述卷积神经网络输入数据的最佳定点配置点、确定不同层的所述网络参数的最佳定点配置点,输出所述卷积神经网络输入数据与所述网络参数不同层的定点化配置;网络中间数据定点化:将所述卷积神经网络定点化后的输入数据与浮点数数据分别作为所述卷积神经网络中的第一层的输入并并计算第一层输出,根据所述最优化误差函数确定所述第一层输出数据的最佳定点配置点,并将定点化后的输出结果与原卷积神经网络第一层浮点数的输出结果作为所述卷积神经网络的第二层的输入;以此类推,直至达到所述卷积神经网络中的最后一层以完成全部网络中间数据的定点化。

根据本发明实施例的卷积神经网络的定点化方法,分别根据网络参数和卷积神经网络输入数据的取值范围对卷积神经网络模型中每一层定点化配置进行估计,再根据最优化误差函数确定卷积神经网络输入数据的最佳定点配置点和确定不同层的网络参数的最佳定点配置点,最后分别将定点化后的输入数据与浮点数数据作为卷积神经网络中的第一层的输入并进行计算,并将计算结果和定点化后的输出结果作为卷积神经网络中的第二层的输入并进行计算,直至达到卷积神经网络中的最后一层以完成卷积神经网络的中间数据的定点化,该方法能够保障卷积神经网络的每一层在定点化后精度损失最小,使得可以使用极低的比特数来表示卷积神经网络的输入数据、不同层网络参数、中间计算数据,能够显著降低降低存储网络数据需要的空间,提高网络参数传输的速度,并大幅度降低专用于卷积神经网络的硬件中计算单元的大小。

在本发明的一个实施例中,所述的卷积神经网络的逐层变精度定点化方法还包括:输出定点化的所述网络参数和所述卷积神经网络模型每一层数据的定点化。

在本发明的一个实施例中,所述预处理具体包括:统计所述网络参数和卷积神经网络输入数据的最大值和最小值。

在本发明的一个实施例中,所述网络中间数据定点化具体包括:所述网络参数的各个部分定点化后的数据通过最优化误差函数得到的定点数配置最为所述各个部分数据的定点数配置;所述卷积神经网络输入数据的各个部分定点化后的数据通过最优化误差函数得到的定点数配置最为所述各个部分数据的定点数配置。

为达上述目的,本发明第二方面实施例提出了一种卷积神经网络的支持装置,包括:输入为卷积神经网络前一层定点化形式表示的计算结果与该层中间数据移位参数,按照所述中间数据移位参数对于输入数据进行移位,输出为移位后的计算结果并且提供给外部计算单元作为卷积神经网络下一层的输入数据。

根据本发明实施例的卷积神经网络的支持装置,输入为卷积神经网络前一层定点化形式表示的计算结果与该层中间数据移位参数,按照中间数据移位参数对于输入数据进行移位,输出为移位后的计算结果并且提供给外部计算单元作为卷积神经网络下一层的输入数据;该支持装置支持不同层间的不同的定点化配置,提高网络参数传输的速度,并大幅度降低专用于卷积神经网络的硬件中计算单元的大小。

在本发明的一个实施例中,所述的卷积神经网络的支持装置,具体包括:

卷积计算模块,用于将定点化的输入数据与定点化的权重数据进行卷积或乘积,其中,卷积结果的定点数位宽为所述输入数据的位宽和所述权重数据的位宽之和。偏置位移模块,用于将定点化的偏置数据根据定点化配置位移到使得小数点与所述卷积计算模块的小数点对齐,并将位移后的结果符号扩展到和卷积计算结果的位宽一致。累加计算模块,用于将所述卷积计算模块的结果和所述偏置位移模块的结果进行累加。结果位移模块,用于将所述累加计算模块的计算结果根据定点化配置位移到使得小数点与下一层需要的输入数据的小数点对齐,并缩减位宽至与下一层需要的输入数据一致。计算模块,用于处理卷积神经网络计算中的非线性操作,降采样操作。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,

图1为根据本发明一个实施例的卷积神经网络的逐层变精度定点化方法的流程图;

图2根据本发明一个具体实施例的卷积神经网络的逐层变精度定点化方法的流程图;

图3根据本发明另一个具体实施例的卷积神经网络的逐层变精度定点化方法的流程图;

图4为根据本发明一个实施例的卷积神经网络的支持装置的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的卷积神经网络的定点化方法及装置。

图1为根据本发明一个实施例的卷积神经网络的定点化方法的流程图。

如图1所示,该卷积神经网络的定点化方法可以包括:

S1,预处理:输入卷积神经网络模型、网络参数和卷积神经网络输入数据,并分别根据网络参数和卷积神经网络输入数据的取值范围对卷积神经网络模型中不同层的定点化配置进行估计。

需要说明的是,在本发明的实施例中,预处理具体包括统计网络参数和输入数据的最大值和最小值,还可以统计网络参数和卷积神经网络输入数据的绝对值对2取对数后的分布情况。

S2,卷积神经网络输入数据与网络参数定点化:根据预处理得到的定点化配置估计,根据最优化误差函数确定卷积神经网络输入数据的最佳定点配置点、确定不同层的网络参数的最佳定点配置点,输出卷积神经网络输入数据与网络参数不同层的定点化配置。

在本发明的一个实施例中,网络参数的各个部分定点化后的数据通过最优化误差函数得到的定点数配置为各个部分数据的定点数配置;卷积神经网络输入数据的各个部分定点化后的数据通过最优化误差函数得到的定点数配置为各个部分数据的定点数配置。

需要说明的是,最优化误差函数可以包括但不限于残差平方和、残差绝对值和残差绝对值的最大值等。当最优化误差函数为残差平方和时,对网络参数的各个部分,寻找使得网络参数定点化后的数据与原浮点数数据相减后残差的平方和最小的定点数配置为该组数据的定点数配置,这里可以有一种方法为从一个较大的精度开始,比如可以取比该组数据中绝对值的最大值对2取对数后减去位宽作为一个起始值,再向较小的方向逐一尝试,当发现残差的平方和先变小再变大的拐点时,选取该点为最佳定点配置点。

S3,网络中间数据定点化:将卷积神经网络定点化后的输入数据与原浮点数输入数据分别作为卷积神经网络中的第一层的输入并计算第一层输出,根据最优化误差函数确定第一层输出数据的最佳定点配置点,并将定点化后的输出结果与原卷积神经网络第一层浮点数的输出结果作为卷积神经网络的第二层的输入;以此类推,直至达到卷积神经网络中的最后一层以完成全部网络中间数据的定点化。

具体而言,在线阶段从第一层开始以定点化后的数据作为输入数据,用定点化的参数进行计算,并将该层的运算结果通过定点化作为下一层的输入,通过这种逐层推进的方式完成对整个网络所有计算结果的定点化。也就是说,对于每一层的计算结果,通过利用在预处理阶段得到的取值范围作为该层数据定点化配置的估计,在这个估计位置附近进行搜索,寻找使得定点化后的数据与原浮点数数据之间的比如是残差的平方和最小的定点化配置。

需要说明的是,由于在计算过程中,每一层的输入都是前面一层的使用定点化的数据计算而来的,使得计算的误差得到传递,符合一般的有限计算精度平台的计算特征,从而对平台设计起到指导作用。

根据本发明实施例的卷积神经网络的定点化方法,分别根据网络参数和卷积神经网络输入数据的取值范围对卷积神经网络模型中每一层定点化配置进行估计,再根据最优化误差函数确定卷积神经网络输入数据的最佳定点配置点和确定不同层的网络参数的最佳定点配置点,最后分别将定点化后的输入数据与浮点数数据作为卷积神经网络中的第一层的输入并进行计算,并将计算结果和定点化后的输出结果作为卷积神经网络中的第二层的输入并进行计算,直至达到卷积神经网络中的最后一层以完成卷积神经网络的中间数据的定点化,该方法能够保障卷积神经网络的每一层在定点化后精度损失最小,使得可以使用极低的比特数来表示卷积神经网络的输入数据、不同层网络参数、中间计算数据,能够显著降低降低存储网络数据需要的空间,提高网络参数传输的速度,并大幅度降低专用于卷积神经网络的硬件中计算单元的大小。

图2根据本发明一个具体实施例的卷积神经网络的定点化方法的流程图。

S201,输入卷积神经网络的模型,网络参数与输入数据。分别对网络参数,输入数据进行预处理。预处理内容可以包括,统计各部分数据的最大值,最小值,统计各部分数据的绝对值对2取对数后的分布情况。

S202,对网络参数的各个部分,寻找使得其定点化后的数据通过最优化误差函数得到的定点数配置为该组数据的定点数配置。一种可行的方法为从一个较大的精度开始,可以取比该组数据中绝对值的最大值对2取对数后减去位宽作为一个起始值,向较小的方向逐一尝试,当发现残差的平方和先变小再变大的拐点时,选取该点为最佳定点配置点。

S203,对网络的输入数据,预先对所有数据减去给定神经网络训练集的均值。将所有的输入数据看成一组数据,寻找使得其定点化后的数据通过最优化误差函数得到的定点数配置为该组数据的定点数配置。

S204,将准备好的定点化的输入数据作为输入,输入到以定点数为参数的网络中进行网络第一层的计算。同时将对应的浮点数数据作为输入以浮点数为参数的网络中进行网络第一层的计算。这样分别得到定点数网络的第一层的输出数据与浮点数网络的第一层的输出数据。选择最小化这两组数据的通过最优化误差函数得到的定点化配置作为第一层输出数据的定点化配置。对定点数网络第一层输出进行定点化后,将其作为定点数网络的第二层作为输入,并重复以上过程,直到将最后一层的输出数据的定点化工作完成,完成整个网络的中间数据的定点化工作。

S205,将输入数据的定点化配置,定点化的网络参数和整个网络中间数据的定点化配置作为整个流程的输出,完成整个网络的定点化工作。

根据本发明实施例的卷积神经网络的定点化方法,分别根据网络参数和输入数据的取值范围对卷积神经网络模型中每一层定点化配置进行估计,再分别根据定点化的数据通过最优化误差函数确定最佳定点配置点,最后分别将定点化后的输入数据和浮点数数据作为卷积神经网络中的第一层的输入并进行计算,并将计算结果作为卷积神经网络中的第二层的输入并进行计算,直至达到卷积神经网络中的最后一层以完成卷积神经网络的中间数据的定点化,该方法能够降低存储网络数据需要的空间,提高网络参数传输的速度,并减少网络计算的代价。

图3根据本发明另一个具体实施例的卷积神经网络的定点化方法的流程图。

S301,输入浮点数的卷积神经网络的结构文件和参数文件;根据结构文件将参数文件中的每个部分进行动态范围的统计,得出每个部分动态范围的分布,并根据各部分参数里的最大值得出每个部分定点化配置的大致估计。

S302,开始离线参数定点化步骤,根据事先设定好的比特数要求以预处理中得到的定点数配置对各组参数进行定点化,以通过最优化误差函数得到的定点数配置的定点结果为该组数据的定点化结果。

S303,待卷积神经网络的所有参数和输入数据集都被转化为定点数形式之后,开始进行在线参数定点化步骤。首先从第一层开始分别进行定点数网路与浮点数网络的计算。在得出第一层的定点数和浮点数的计算结果后(注意这里定点数的计算结果的有效位数比事先要求的位数大),根据事先设定好的比特数要求以预处理中得到的定点数配置对该层计算结果进行定点化,以通过最优化误差函数得到的定点数配置的定点结果为该组数据的定点化结果。,作为下一层的输入

S304,通过逐层推进上述计算结果的定点化步骤,可以完成对整个卷积神经网络的定点化。

根据本发明实施例的卷积神经网络的定点化方法,分别根据网络参数和输入数据的取值范围对卷积神经网络模型中每一层定点化配置进行估计,再分别对定点化的数据通过最优化误差函数确定最佳定点配置点,最后分别将定点化后的输入数据和浮点数数据作为卷积神经网络中的第一层的输入并进行计算,并将计算结果作为卷积神经网络中的第二层的输入并进行计算,直至达到卷积神经网络中的最后一层以完成卷积神经网络的中间数据的定点化,该方法能够降低存储网络数据需要的空间,提高网络参数传输的速度,并减少网络计算的代价。

图4为根据本发明一个实施例的卷积神经网络的支持装置的结构示意图。如图4所示,该卷积神经网络的支持装置可以包括:卷积计算模块10、偏置位移模块20、累加计算模块30、结果位移模块30和计算模块50。

输入为卷积神经网络前一层定点化形式表示的计算结果与该层中间数据移位参数,按照中间数据移位参数对于输入数据进行移位,输出为移位后的计算结果并且提供给外部计算单元作为卷积神经网络下一层的输入数据。

其中,卷积计算模块10用于将定点化的输入数据与定点化的权重数据进行卷积或乘积,其中,卷积结果的定点数位宽为输入数据的位宽和权重数据的位宽之和。偏置位移模块20用于将定点化的偏置数据根据定点化配置位移到使得小数点与卷积计算模块的小数点对齐,并将位移后的结果符号扩展到和卷积计算结果的位宽一致。累加计算模块30用于将卷积计算模块的结果和偏置位移模块的结果进行累加。结果位移模块40用于将累加计算模块的计算结果根据定点化配置位移到使得小数点与下一层需要的输入数据的小数点对齐,并缩减位宽至与下一层需要的输入数据一致。计算模块50用于处理卷积神经网络计算中的非线性操作,降采样操作。

根据本发明实施例的卷积神经网络的支持装置,输入为卷积神经网络前一层定点化形式表示的计算结果与该层中间数据移位参数,按照中间数据移位参数对于输入数据进行移位,输出为移位后的计算结果并且提供给外部计算单元作为卷积神经网络下一层的输入数据;该支持装置支持不同层间的不同的定点化配置,提高网络参数传输的速度,并大幅度降低专用于卷积神经网络的硬件中计算单元的大小。

在本发明的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1