一种基于残差卷积神经网络的量化处理方法及装置与流程

文档序号:18871409发布日期:2019-10-14 19:38阅读:449来源:国知局
一种基于残差卷积神经网络的量化处理方法及装置与流程

本发明属于神经网络计算领域,具体涉及一种基于残差卷积神经网络的量化处理方法及装置。



背景技术:

本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。

卷积神经网络(convolutionalneuralnetworks,简称cnn)是目前非常流行的一种深度学习。残差网络(resnet)是卷积神经网络的一种,其主要思想是在网络中增加了直连通道(highwaynetwork)的思想。在引入残差网络之前,传统的卷积神经网络或者全连接网络是对输入数据做一个非线性变换。而引入残差网络之后,则允许原始输入信息直接传到后面的层中。由于传统的卷积神经网络或者全连接网络在信息传递的时候或多或少会存在信息丢失,损耗等问题,同时还有导致梯度消失或者梯度爆炸,导致很深的网络无法训练。而残差网络通过直接将输入信息绕道传到输出而保护信息的完整性,且整个网络只需要学习输入、输出差别的那一部分,简化学习目标和难度。

图1示出了根据现有技术的残差网络的计算过程的示意图。

其中,在第n层与残差网络中用于执行逐点运算的运算层之间可以有一层或多层神经网络层,包括但不限于卷积、池化、放大、缩放。在现有的残差网络计算方案中,为了将第n层计算的输出结果x与第n+m层的输出结果f(x)做逐点运算,其中,n、m均为正整数,需要将第n层的计算结果x保存在存储空间中,进而在计算完第n+m层神经网络之后,再将存储空间中的第n层的输出结果x取出,并与该第n+m层的计算结果进行逐点运算。

在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:

随着ai(artificialintelligence,人工智能)技术的发展,目前的神经网络呈现越来越深的趋势,并因此可能具有很多残差层,目前的卷积神经网络计算芯片在实现残差网络时,需要多次的写入、读取存储器的操作,会造成上述存储空间访问带宽升高,进而导致芯片功耗提高,计算效率降低等问题。且对于实时性要求较高的设备来说,还可能由于存储空间的带宽受限而导致芯片处理的实时性下降。



技术实现要素:

针对上述现有技术在实现残差网络时,需要多次的写入、读取存储器的操作,而导致的存储空间访问带宽升高、芯片功耗提高,计算效率以及处理实时性降低等问题。本发明实施例提出了一种基于残差卷积神经网络的量化处理方法及装置,利用这种方法及装置,能够解决上述问题。

本发明的实施例中提供了以下方案。

一方面,提供了一种基于残差网络的数据处理方法,包括:获取卷积神经网络的第n层输出数据,对所述第n层输出数据进行第一量化操作以获得第一量化数据,并将所述第一量化数据输入至所述卷积神经网络的第n+1层网络;对所述第一量化数据进行第二量化操作以获得第二量化数据,将所述第二量化数据保存至存储器;获取所述卷积神经网络的第n+m层输出数据,并从所述存储器读取所述第二量化数据,以及根据所述卷积神经网络的第n+m层输出数据与所述第二量化数据进行逐点运算,其中,所述n、m为正整数。

可选地,其中,所述第一量化操作为线性量化操作,所述第二量化操作为非线性量化操作。

可选地,其中,所述根据所述卷积神经网络的第n+m层输出数据与所述第一量化数据进行逐点运算还包括:根据预设量化精度对所述第n+m层输出数据执行第一反量化操作,以获得第一反量化数据;根据所述预设量化精度对所述第二量化数据执行第二反量化操作,以获得与所述第一反量化数据的小数点位置对齐的第二反量化数据;对所述第一反量化数据与所述第二反量化数据执行逐点运算。

可选地,其中,所述根据所述卷积神经网络的第n+m层输出数据与所述第一量化数据进行逐点运算包括:根据所述第n+m层输出数据的小数点位置来对所述第二量化数据进行第三反量化操作,以获得与所述第n+m层输出数据的小数点位置对齐的第三反量化数据;对所述第n+m层输出数据与所述第三反量化数据执行逐点运算。

可选地,其中,所述第一量化操作的量化程度为8bit,所述第二量化操作的量化程度为2-4bit。

另一方面,提供了一种基于残差网络的数据处理装置,包括:第一量化模块,用于获取卷积神经网络的第n层输出数据,对所述第n层输出数据进行第一量化操作以获得第一量化数据,并将所述第一量化数据输入至所述卷积神经网络的第n+1层网络;第二量化模块,用于对所述第一量化数据进行第二量化操作以获得第二量化数据,将所述第二量化数据保存至存储器;逐点运算模块,用于获取所述卷积神经网络的第n+m层输出数据,并从所述存储器读取所述第二量化数据,以及根据所述卷积神经网络的第n+m层输出数据与所述第二量化数据进行逐点运算,其中,所述n、m为正整数。

可选地,其中,所述第一量化操作为线性量化操作,所述第二量化操作为非线性量化操作。

可选地,其中,所述逐点运算模块还包括:第一反量化模块,用于根据预设量化精度对所述第n+m层输出数据执行第一反量化操作,以获得第一反量化数据;第二反量化模块,用于根据所述预设量化精度对所述第二量化数据执行第二反量化操作,以获得与所述第一反量化数据的小数点位置对齐的第二反量化数据;第一逐点运算子模块,用于对所述第一反量化数据与所述第二反量化数据执行逐点运算。

可选地,其中,所述逐点运算模块还包括:第三反量化模块,用于根据所述第n+m层输出数据的小数点位置来对所述第二量化数据进行第三反量化操作,以获得与所述第n+m层输出数据的小数点位置对齐的第三反量化数据;第二逐点运算子模块,用于对所述第n+m层输出数据与所述第三反量化数据执行逐点运算。

可选地,其中,所述第一量化操作的量化程度为8bit,所述第二量化操作的量化程度为2-4bit。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本发明实施例通过对残差网络的主路径(进入下层网络中继续进行卷积计算的路径)与辅助路径(存入存储器的路径)采用两种不同的数据量化方式,其中,对进入主路径的数据进行一次量化操作以使其具有较高的精度,并对该一次量化操作后的数据进行二次量化操作,以获得具有更低精度的数据进行存储,以达到节省存储空间、降低芯片功耗,提高计算效率以及处理实时性等技术效果。

应当理解,上述说明仅是本发明技术方案的概述,以便能够更清楚地了解本发明的技术手段,从而可依照说明书的内容予以实施。为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举例说明本发明的具体实施方式。

附图说明

通过阅读下文的示例性实施例的详细描述,本领域普通技术人员将明白本文所述的有点和益处以及其他优点和益处。附图仅用于示出示例性实施例的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的标号表示相同的部件。在附图中:

图1为根据现有技术中的残差卷积神经网络的计算流程示意图;

图2为根据本发明一实施例的残差卷积神经网络的量化处理方法的流程示意图;

图3为根据本发明一实施例的用于执行图2所示出方法的ai加速芯片的示意图;

图4为根据本发明一实施例的残差卷积神经网络的计算流程示意图;

图5为根据本发明另一实施例的残差卷积神经网络的量化处理方法的流程示意图;

图6为根据本发明另一实施例的残差卷积神经网络的计算流程示意图;

图7为根据本发明又一实施例的残差卷积神经网络的量化处理方法的流程示意图;

图8为根据本发明又一实施例的残差卷积神经网络的计算流程示意图;

图9为根据本发明一实施例的残差卷积神经网络的量化处理装置的结构示意图。

在附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明中,应理解,诸如“包括”或“具有”等术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不旨在排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在的可能性。

另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

本发明实施例提出一种基于残差卷积神经网络的量化处理方法。图2示意性地示出了根据本发明实施例的基于残差卷积神经网络的量化处理方法200的流程示意图。

图3示出了一种用于执行图2示出方法的ai加速芯片的示意图,其中,卷积神经网络处理单元(neural-networkprocessingunit,以下简称npu)主要用于卷积神经网络的计算,具体可以包括算数逻辑单元(arithmeticandlogicunit,以下简称alu)以及内部存储器。内部存储器通常采用sram(staticrandom-accessmemory,静态随机存取存储器),主要用于缓存中间计算所需的数据或者结果,且由于其成本较高,实际应用中通常避免采用大容量的内部存储器。该ai加速芯片还包括电连接至npu的外部存储器,其通常采用成本相对较低的dram(dynamicrandomaccessmemory,动态随机存取存储器)、ddr((datadirectionregister,数据方向寄存器)等,用于存储较大容量数据。优选地但非必须地,图2所示的方法可由图3中所示出的ai加速芯片执行,更具体地,图2所示的方法可由ai加速芯片中的alu执行。本实施例中,以alu作为执行主体进行具体阐述,然而应当理解,本申请对执行主体并无具体限制。

如图2所示,该方法200包括:

步骤201:获取卷积神经网络的第n层输出数据,对第n层输出数据进行第一量化操作以获得第一量化数据,并将第一量化数据输入至卷积神经网络的第n+1层网络;

步骤202:对第一量化数据进行第二量化操作以获得第二量化数据,将第二量化数据保存至存储器;

步骤203:获取卷积神经网络的第n+m层输出数据,并从存储器读取第二量化数据,以及根据卷积神经网络的第n+m层输出数据与第二量化数据进行逐点运算,其中,n、m为正整数。其中,上述逐点运算具体为逐点加法运算。

具体地,如图4所示,将卷积神经网络中第n层网络的输出数据作为第n层输出数据,为了减小存储和计算的开销,对第n层输出数据进行量化1,通常来说,要使网络量化性能基本没有损失,优选将数据量化到8bit或更高位宽。将第一量化数据输入至卷积神经网络中的第n+1层网络继续进行后续计算,且在将第一量化数据存入外部存储器之前,为了进一步减小占用的存储空间以及存取操作,进一步对其进行量化2,使其形成为具有更低精度的第二量化数据,优选将该第二量化数据限制在2~6bit。在第一量化数据经过m层运算后,从第n+m层网络中获取输出的第n+m层输出数据,并从外部存储器中读取出第二量化数据,并在alu中根据上述卷积神经网络的第n+m层输出数据与第二量化数据进行逐点运算,从而完成一次残差网络的计算过程。举例来说,假设第n层输出数据大小为128*128,输出为256channel,第一量化操作采用8bit量化,那么第一量化数据需要的存储空间为128*128*128*256=4mbyte,而再次对第一量化数据进行第二量化操作,使其形成为更低精度(例如4bit)的第二量化数据,则第二量化数据所需要的存储空间更小,从而节省了外部存储器的存储空间以及写入写出效率。

本实施例的思路在于,由于存入存储器的数据作为辅助信息,重要性没有主路径中的数据高,因此可以对残差网络的主路径(进入下层网络中继续进行卷积计算的路径)与辅助路径(存入存储器的路径)中采用两种不同的数据量化方式,使主路径的量化结果具有更高精确度以便于卷积运算,同时使存入存储器的数据由于位宽更低以便于存储和读写。

基于图2的基于残差卷积神经网络的量化处理方法,本申请的一些实施例还提供了该量化处理方法的一些具体实施方案,以及扩展方案,下面进行说明。

在本发明的实施例中,上述第一量化操作的量化程度为8bit,第二量化操作的量化程度为2~6bit。具体地,对于卷积神经网络来说,将数据量化到8bit对于网络量化性能基本没有损失,能够在保证精确度的前提下降低计算功耗。且由于存入存储器的数据作为辅助信息,重要性较低,因此可以采用低于8bit的量化精度。

在本发明的实施例中,第一量化操作为线性量化操作,第二量化操作为非线性量化操作。具体地,卷积神经网络中的量化方法可以分为两类:线性量化方法(linearquantizationmethod)以及非线性量化方法(nonlinearquantizationmethod),其中,非线性量化方法进一步包括对数量化方法(logarithmicquantizationmethod),指数量化方法(logquantizationmethod)和二进制量化方法(binaryquantizationmethod)等。其中,线性量化方法能够在8至16比特量化级别下无损量化卷积神经网络,但量化至更低位数时则出现明显的精度损失。因此,对于需要进行后续卷积运算的第一量化数据来说,为了减少其数据损伤,可以通过线性量化操作将第n层输出数据量化到8bit。而非线性量化方法则能够极大地减少卷积神经网络的计算量,同时也带来了无法恢复的精度损失,因此对于重要程度较低的第二量化数据来说,可以选用任意一种非线性量化方式以有效地降低网络数据量。进一步地,在本实施例中,第二量化操作优选采用指数量化方法,其中,指数量化方法用硬件实现时,可以采用移位器取代乘法器,进而达到简化硬件复杂度的技术效果。

在本发明的另一实施例中,第一量化操作与第二量化操作还可以选用上述示出的任意一种量化方式及其组合,本申请对此不作具体限制。

在本发明的实施例中,图5示出了步骤203中的根据卷积神经网络的第n+m层输出数据与第一量化数据进行逐点运算的具体操作流程,包括:

步骤501:根据预设量化精度对第n+m层输出数据执行第一反量化操作,以获得第一反量化数据;

步骤502:根据预设量化精度对第二量化数据执行第二反量化操作,以获得与第一反量化数据的小数点位置对齐的第二反量化数据;

步骤503:对第一反量化数据与第二反量化数据执行逐点运算。

具体地,可以通过移位、线性变换、查表、指数运算等方式执行上述第一反量化操作与第二反量化操作,本申请对此不作具体限制。例如,可以是对低精度的第n+m层输出数据与第二量化数据向左移位操作,使获得具有更高精度第一反量化数据以及第二反量化数据。与此同时,第一反量化操作与第二反量化操作采用同一预设量化精度,因此能够获得小数点位置对其的第一反量化数据与第二反量化数据。

可以理解,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,例如,第二量化数据x=(01.11)(假设其为4位),第n+m层输出数据f(x)=(001.00010)(假设其为8位),其中(0,1,1,1)分别为x的第0~3位,第二量化数据x的小数点在第2位和第1位之间;(0,0,1,0,0,0,1,0)分别为f(x)的第0~7位,第n+m层输出数据f(x)的小数点在第5位和第4位之间,此时若想将第二量化数据x与第n+m层输出数据f(x)相加,就可以根据预先约定的数据位数(假设为32位)与小数点位置对第二量化数据x与第n+m层输出数据f(x)进行移位,具体地,可以将第二量化数据x左移12位并补齐,得到x1=(0x7000),并对左移后的x1进行符号位扩展,得到第二反量化数据x2=(0x00007000),以使得第二反量化数据恢复为32位数据。将第n+m层输出数据f(x)左移9位并补齐,得到f1(x)=(0x4400),对左移后的f1(x)=进行符号位扩展,得到第一反量化数据f2(x)==(0x00004400),以使得第一反量化数据恢复为32位数据。进而基于上述32位的第一反量化数据与第二反量化数据执行逐点加法运算。进一步的,为便于理解,图6示出了基于本实施例示出的反量化方式的残差网络计算过程的示意图,反量化1也即第一反量化操作,反量化2也即第二反量化操作,通过上述反量化方式,能够根据约定好的量化精度对第n+m层输出数据以及第二量化数据进行相互独立的反量化操作,而无需额外考虑对方的量化程度,具有较为简单的技术逻辑。

在本发明的实施例中,步骤s203中的根据卷积神经网络的第n+m层输出数据与第一量化数据进行逐点运算还包括:

步骤701:根据第n+m层输出数据的小数点位置来对第二量化数据进行第三反量化操作,以获得与第n+m层输出数据的小数点位置对齐的第三反量化数据;

步骤702:对第n+m层输出数据与第三反量化数据执行逐点运算。

具体地,可以通过移位、线性变换、查表、指数运算等方式执行上述第三反量化操作,本申请对此不作具体限制。例如,可以是对低精度的第二量化数据向左移位操作,使获得具有与第n+m层输出数据的位宽相同的第三反量化数据,因此能够获得小数点位置对齐的第三反量化数据与第n+m层输出数据。

可以理解,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,第二量化数据x=(01.11)(假设其为4位),第n+m层输出数据f(x)=(001.00010)(假设为8位),其中(0,1,1,1)分别为x的第0~3位,第二量化数据x的小数点在第2位和第1位之间;(0,0,1,0,0,0,1,0)分别为f(x)的第0~7位,第n+m层输出数据f(x)的小数点在第5位和第4位之间,此时若想将第二量化数据x与第n+m层输出数据f(x)相加,就可以根据第n+m层输出数据的小数点位置来对第二量化数据x进行第三反量化操作,具体地,可以将第二量化数据x左移3位并补齐,得到x3=(0x38),并对左移后的x3进行符号位扩展,得到第三反量化数据x4=(0x38),以使得第二反量化数据恢复为8位数据。进而基于上述8位的第三反量化数据与第n+m层输出数据执行f(x)逐点加法运算。进一步的,为便于理解,图8示出了基于上述反量化方式的残差网络计算过程的示意图,其中,反量化3也即第三反量化操作,通过上述反量化方式,仅仅需要对第二量化数据进行反量化操作即可,进一步减少了运算量,降低芯片功耗。

基于相同的技术构思,本发明实施例还提供一种基于残差卷积神经网络的量化处理装置,用于执行上述任一实施例所提供的基于残差卷积神经网络的量化处理方法。图9为本发明实施例提供的一种基于残差卷积神经网络的量化处理装置的结构示意图。

如图9所示,该装置900包括:

第一量化模块901,用于获取卷积神经网络的第n层输出数据,对第n层输出数据进行第一量化操作以获得第一量化数据,并将第一量化数据输入至卷积神经网络的第n+1层网络;

第二量化模块902,用于对第一量化数据进行第二量化操作以获得第二量化数据,将第二量化数据保存至存储器;

逐点运算模块903,用于获取卷积神经网络的第n+m层输出数据,并从存储器读取第二量化数据,以及根据卷积神经网络的第n+m层输出数据与第二量化数据进行逐点运算,其中,n、m为正整数。其中,上述逐点运算具体为逐点加法运算。

具体地,图4示出了根据本发明实施例的残差卷积神经网络的计算过程示意图,其中,将卷积神经网络中第n层网络的输出数据作为第n层输出数据,为了减小存储和计算的开销,利用第一量化模块901对第n层输出数据进行量化1,通常来说,要使网络量化性能基本没有损失,优选将数据量化到8bit或更高位宽。将第一量化数据输入至卷积神经网络中的第n+1层网络继续进行后续计算,且在将第一量化数据存入外部存储器之前,为了进一步减小占用的存储空间以及存取操作,进一步利用第二量化模块902对第一量化数据进行量化2,使其形成为具有更低精度的第二量化数据,优选将该第二量化数据限制在2-6bit。在第一量化数据经过m层运算后,从第n+m层网络中获取输出的第n+m层输出数据,并从外部存储器中读取出第二量化数据,并在逐点运算模块中根据上述卷积神经网络的第n+m层输出数据与第二量化数据进行逐点运算,从而完成一次残差网络的计算过程。举例来说,假设第n层输出数据大小为128*128,输出为256channel,第一量化操作采用8bit量化,那么第一量化数据需要的存储空间为128*128*128*256=4mbyte,而再次对第一量化数据进行第二量化操作,使其形成为更低精度(例如4bit)的第二量化数据,则第二量化数据所需要的存储空间则更小,从而节省了外部存储空间以及写入写出效率。

本实施例的思路在于,由于存入存储器的数据作为辅助信息,重要性没有主路径中的数据高,因此可以对残差网络的主路径(进入下层网络中继续进行卷积计算的路径)与辅助路径(存入存储器的路径)中采用两种不同的数据量化方式,使主路径的量化结果具有更高精确度以便于卷积运算,同时使存入存储器的数据由于位宽更低以便于存储和读写。

在本发明的实施例中,上述第一量化操作的量化程度为8bit,第二量化操作的量化程度为2~6bit。具体地,对于卷积神经网络来说,将数据量化到8bit对于网络量化性能基本没有损失,能够在保证精确度的前提下降低计算功耗。且由于存入存储器的数据作为辅助信息,重要性较低,因此可以采用低于8bit的量化精度。

在本发明的实施例中,第一量化操作为线性量化操作,第二量化操作为非线性量化操作。具体地,卷积神经网络中的量化方法可以分为两类:线性量化方法(linearquantizationmethod)以及非线性量化方法(nonlinearquantizationmethod),其中,非线性量化方法进一步包括对数量化方法(logarithmicquantizationmethod),指数量化方法(logquantizationmethod)和二进制量化方法(binaryquantizationmethod)等。其中,线性量化方法能够在8至16比特量化级别下无损量化卷积神经网络,但量化至更低位数时则出现明显的精度损失。因此,对于需要进行后续卷积运算的第一量化数据来说,为了减少其数据损伤,可以通过线性量化操作将第n层输出数据量化到8bit。而非线性量化方法则能够极大地减少卷积神经网络的计算量,同时也带来了无法恢复的精度损失,因此对于重要程度较低的第二量化数据来说,可以选用任意一种非线性量化方式以有效地降低网络数据量。进一步地,在本实施例中,第二量化操作优选采用指数量化方法,其中,指数量化方法用硬件实现时,可以采用移位器取代乘法器,进而达到简化硬件复杂度的技术效果。

在本发明的另一实施例中,第一量化操作与第二量化操作均可以选用任意一种量化方式及其组合,本申请对此不作具体限制。

在本发明的实施例中,逐点运算模块903还包括:

第一反量化模块,用于根据预设量化精度对所述第n+m层输出数据执行第一反量化操作,以获得第一反量化数据;

第二反量化模块,用于根据所述预设量化精度对所述第二量化数据执行第二反量化操作,以获得与所述第一反量化数据的小数点位置对齐的第二反量化数据;

第一逐点运算子模块,用于对所述第一反量化数据与所述第二反量化数据执行逐点运算。

具体地,上述第一反量化模块与第二反量化模块具体可以用于通过移位、线性变换、查表、指数运算等方式执行上述第一反量化操作与第二反量化操作,本申请对此不作具体限制。例如,可以对低精度的第n+m层输出数据与第二量化数据向左移位操作,使输出具有更高精度第一反量化数据以及第二反量化数据。与此同时,第一反量化操作与第二反量化操作采用同一预设量化精度,因此能够获得小数点位置对其的第一反量化数据与第二反量化数据。

可以理解,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,例如,第二量化数据x=(01.11)(假设其为4位),第n+m层输出数据f(x)=(001.00010)(假设其为8位),其中(0,1,1,1)分别为的第0~3位,第二量化数据x的小数点在第2位和第1位之间;(0,0,1,0,0,0,1,0)分别为f(x)的第0~7位,第n+m层输出数据f(x)的小数点在第5位和第4位之间,此时若想将第二量化数据x与第n+m层输出数据f(x)相加,就可以根据预先约定的数据位数(假设为32位)与小数点位置对第二量化数据x与第n+m层输出数据f(x)进行移位,具体地,可以将第二量化数据x左移12位并补齐,得到x1=(0x7000),并对左移后的x1进行符号位扩展,得到第二反量化数据x2=(0x00007000),以使得第二反量化数据恢复为32位数据。将第n+m层输出数据f(x)左移9位并补齐,得到f1(x)=(0x4400),对左移后的f1(x)=进行符号位扩展,得到第一反量化数据f2(x)==(0x00004400),以使得第一反量化数据恢复为32位数据。进而基于上述32位的第一反量化数据与第二反量化数据执行逐点加法运算。进一步的,为便于理解,图6示出了基于本实施例示出的反量化方式的残差网络计算过程的示意图,反量化1也即第一反量化操作,反量化2也即第二反量化操作,通过上述反量化方式,能够根据约定好的量化精度对第n+m层输出数据以及第二量化数据进行相互独立的反量化操作,而无需额外考虑对方的量化程度,具有较为简单的技术逻辑。

在本发明的实施例中,逐点运算模块903还可以包括:

第三反量化模块,用于根据所述第n+m层输出数据的小数点位置来对所述第二量化数据进行第三反量化操作,以获得与所述第n+m层输出数据的小数点位置对齐的第三反量化数据;

第二逐点运算子模块,用于对所述第n+m层输出数据与所述第三反量化数据执行逐点运算。

具体地,上述第三反量化模块具体可以用于通过移位、线性变换、查表、指数运算等方式执行上述第三反量化操作,本申请对此不作具体限制。例如,可以对低精度的第二量化数据向左移位操作,使获得具有与第n+m层输出数据的位宽相同的第三反量化数据,因此能够获得小数点位置对齐的第三反量化数据与第n+m层输出数据。

可以理解,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,本实施例中,上述小数点位置对齐是指通过量化或反量化将两个数的小数点位置对准。例如,第二量化数据x=(01.11)(假设其为4位),第n+m层输出数据f(x)=(001.00010)(假设为8位),其中(0,1,1,1)分别为x的第0~3位,第二量化数据x的小数点在第2位和第1位之间;(0,0,1,0,0,0,1,0)分别为f(x)的第0~7位,第n+m层输出数据f(x)的小数点在第5位和第4位之间,此时若想将第二量化数据x与第n+m层输出数据f(x)相加,就可以根据第n+m层输出数据的小数点位置来对第二量化数据x进行第三反量化操作,具体地,可以将第二量化数据x左移3位并补齐,得到x3=(0x38),并对左移后的x3进行符号位扩展,得到第三反量化数据x4=(0x38),以使得第二反量化数据恢复为8位数据。进而基于上述8位的第三反量化数据与第n+m层输出数据执行f(x)逐点加法运算。进一步的,为便于理解,图8示出了基于上述反量化方式的残差网络计算过程的示意图,其中,反量化3也即第三反量化操作,通过上述反量化方式,仅仅需要对第二量化数据进行反量化操作即可,进一步减少了运算量,降低芯片功耗。

虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

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