一种面向神经网络的对数量化装置及方法与流程

文档序号:18322054发布日期:2019-08-03 10:34阅读:536来源:国知局
一种面向神经网络的对数量化装置及方法与流程

本发明涉及神经网络处理器体系结构及设计方法,具体来说涉及神经网络模型计算的硬件加速领域,更具体地说,涉及一种面向神经网络的对数量化装置及方法。



背景技术:

深度学习技术在近几年得到了飞速的发展,在解决高级抽象认知问题上,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用并具有出色的表现,因此成为了学术界和工业界的研究热点。深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来了突破性进展。该模型结构是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,被称为权重,与人类神经网络中的记忆相对应。

神经网络加速器的研究目的是将神经网络推向更广泛应用如智能穿戴、智能机器人、自动驾驶以及模式识别等领域。当前神经网络研究的主要挑战在于数据处理的实时性、低功耗、计算资源利用率等性能的提升。

神经网络可对应用中的图像进行快速处理,可通过对目标数据特征进行识别并做出相应决策。其计算过程的主要时间占据部分为卷积的过程,该过程主要将输入的神经元或像素与相应卷积核的权值进行乘累加处理。神经网络芯片的低能耗,灵活性吸引了广大研究者的眼球。为了满足神经网络对实际应用中数据处理的低功耗及成本要求,研究如何提高神经网络处理器对目标数据的运算效率与存储效率具有重要意义。

现有神经网络卷积运算方法以线性的乘累加运算为主,而数据与权值的表示则以正规的定点、浮点表示为主,该运算方法及表示方式可有效完成神经网络数据的前向处理过程。然而,随着应用对神经网络加速器的运算速度与资源利用率,能耗等方面的要求,现有运算方法与数据表示方法需要巨大的乘法与加法单元,其硬件运算过程需消耗较大的能量,同时硬件资源消耗突出,其乘法计算过程需消耗的时间较长。因此,如何实现面向神经网络的能够同时满足速度快和精度高的要求的对数量化硬件加速装置是一个亟待解决的问题。



技术实现要素:

因此,本发明的目的在于克服上述现有技术的缺陷,提供一种新的面向神经网络的对数量化装置及方法。

本发明的目的是通过以下技术方案实现的:

根据本发明的一方面,本发明提供一种面向神经网络的对数量化装置,通过组合取高位位数值与基于对数量化的查找表模块,实现针对输入特征图数据与权重数据的对数量化操作。本发明的一种面向神经网络的对数量化装置,包括:

一个输入接口,用于接收并存储要进行对数量化的二进制数据。

一个取高位模块,用于根据所述输入接口提供的二进制数据确定其最高非零位所在的位置数据;取高位模块内部包括筛选器、多输入或门和多路选通器;其中,筛选器用于筛选和存储输入二进制数据各比特位的比特值并输出筛选结果,每一比特位对应一个位筛选器;多输入或门用于在高比特位的比特值不为零的情况下对其低位筛选器输出抑制信号抑制相应筛选器的输出,次高位以下的各比特值对应的位筛选器均对应一个多输入或门;多路选通器用于存储各比特位对应的位置数据并根据位筛选器的输出选通最高非零位所对应的位置数据进行输出。

一个精细量化模块,用于针对所述二进制数据进行变换得到整数部分为1的一个小数作为其相对数值,对其进行取对数操作得到该相对数值的精确对数量化值;精细量化模块包括移位模块和查找表模块,其中,移位模块用于根据最高非零位所在的位置数据执行输入二进制数据的变换得到相对数值;查找表模块用于执行相对数值对数量化过程中的对数值查找。

一个加法模块,用于执行所述二进制数据的最高非零位所在的位置数据与其相对数值部分的精确对数量化值的累加操作,得到所述二进制数据的精确对数量化结果;加法模板设置有先进先出缓存,用于流水处理输入数据;使得本发明对数量化装置能够对批量输入的数据进行流水处理;

一个输出接口,用于接收和输出所述加法模块产生的输入二进制数据的精确对数量化结果。

所述输入接口、取高位模块、精细量化模块、加法模块和所述输出接口组成一个对数量化单元;本发明的对数量化装置包含至少2个或者两个以上所述对数量化单元,对批量输入的数据进行并行批量处理。

根据本发明的另一方面,一种与所提出神经网络对数量化装置匹配的工作机制,该机制通过提取输入数据的最高非零位数值,通过移位将输入数据作为相对数值部分,通过求取相对数值的对数值,累加最高非零数值,以求取相对精度的对数量化结果,调用装置内各功能模块组合完成针对输入数据的精确对数量化任务。根据该机制提出的一种面向神经网络的对数量化方法,包括如下步骤:

s1、通过对数量化装置接收待对数量化的二进制数据,并将其传递至取高位模块;

s2、通过取高位模块生成针对输入二进制数据的最高非零位所在的位置数据,其最高非零位所在的位置数据传输至加法模块;

s3、通过取高位模块将输入二进制数据和最高非零位所在的位置数据传递至精细量化模块,由精细量化模块针对输入二进制数据进行变换得到整数部分为1的小数作为输入二进制数据的相对数值,并执行相对数值的对数量化操作,得到相对数值的精确对数量化值,并将该值输出至加法模块;

s4、通过加法模块执行最高非零位所在的位置数据与相对数值的精确对数量化值的累加操作,得到输入二进制数据的精确对数量化结果,并将该结果传输至输出模块;

s5、通过输出模块将输入二进制数据的精确对数量化结果输出至外部模块。

其中,所述步骤s2包括如下步骤:

s21、通过取高位模块接收输入二进制数据,二进制数据各比特位的数值分别传输至取高位模块内部的筛选器,每一比特位对应一个位筛选器;

s22、通过各位筛选器执行位置判断,将高位筛选器的对应的比特值通过多输入或门传输至其所有相对低位筛选器的抑制端,当高位为非零时,对低位产生抑制信号;同时将各位筛选器输出结果传输至取高位模块内部多路选通器;

s23、通过多路选通器选通对应最高非零位所在的位数数据进行输出,并将该位置数据传输至加法模块,同时将最高非零位所在的位置数据传输至精细量化模块。

所述步骤s3包括如下步骤:

s31、通过精细量化模块接收输入二进制数据与该二进制数据对应的最高非零位所在的位置数据,通过精细量化模块内部的移位模块执行输入二进制数据的变换处理,生成输入二进制数据的相对数值;

s32、将通过精细量化模块内部的查找表模块执行输入二进制数据的相对数值的对数查找操作,输出相对数值的精确对数量化值;

s33、将步骤s32得到的相对数值的精细对数量化值传输至加法模块。

与现有技术相比,本发明的优点在于:

本发明旨在提供一种面向神经网络的对数量化装置,及其与装置对应的对数量化机制。该装置可实现基于对数量化的神经网络输入数据与权重的对数量化操作,可为神经网络对数化参数的运算提供对数输入数据。通过本发明提供的针对神经网络对数量化装置采用向基于对数量化的神经网络提供对数输入数据,为进一步简化卷积运算做准备,提高神经网络工作效率。

附图说明

以下参照附图对本发明实施例作进一步说明,其中:

图1为根据本发明实施例的面向神经网络对数量化装置的系统示意图;

图2为根据本发明实施例的面向神经网络对数量化装置取高位模块结构原理示意图;

图3为根据本发明实施例的面向神经网络对数量化装置精确量化模块结构原理示意图;

图4为根据本发明实施例的面向神经网络对数量化装置框架与工作数据流向示意图;

图5为根据本发明实施例的面向神经网络对数量化装置精确量化工作流程图。

具体实施方式

为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

发明人经过研究发现,对数量化的神经网络数据处理方法可有效避免卷积运算过程的乘法运算,且其等效卷积的对数运算具有更加快速的运算速度,采用精确对数量化方法对神经网络输入数据进行处理不仅能够极大的减少卷积神经网络的运算成本、硬件资源、以及存储空间,而且能够同时满足硬件加速器速度快和精度高的要求。一方面,利用极少的定点比特位可在保持神经网络高准确度的同时减少数据的存储量;另一方面,以移位代替乘法运算很好的减少了硬件资源消耗,同时加快了卷积运算速度,能够很好的满足实时性要求。因此,设计高效且精确的神经网络对数量化功能模块具有重大意义。

本发明针对基于对数量化的神经网络数据的量化问题,提供了一种可实现对数量化的装置及相应机制,可有效完成针对神经网络输入数据的量化操作,为对数运算提供有效输入数据。

根据本发明的一个实施例,如图1所示,本发明的一种面向神经网络的对数量化装置101,概括说来,包括一个输入接口102、一个取高位模块103、一个精细量化模块104、一个加法模块105以及一个输出接口106;此外,对数量化装置101还包括了各功能块之间的连线、寄存器以及选通等器件,用于控制装置的运算模式以及数据的正确传输;加法模块还包括先进先出缓存,用于流水处理输入数据,使得该对数量化装置101可以对批量输入的数据进行流水处理。所述输入接口102与外部的数据输入模块相连,用于接收来自外部待对数量化的数据,其包含寄存器,用于暂存输入数据,并为后续数据处理模块提供输入数据;取高位模块103与输入接口102相连,用于接收待对数量化的二进制数据,分析该待对数量化的二进制数据的最高非零位所在的位置,将该位置数据传递至加法模块105,同时将输入二进制数据的最高非零位所在的位置数据传输至精细量化模块104;精细量化模块104与取高位模块103相连,该模块包括移位模块和查找表模块,两者结合实现针对输入二进制数据精确对数量化结果的小数部分生成,并将其结果输出至加法模块105,此处移位模块和查找表模块结合生成输入二进制数据的相对数值,以及对相对数值执行基于查找表的对数量化操作以得到相对数值的精确对数量化值(后面将结合图2和图3进行详细描述),该相对数值的精确对数量化值作为输入二进制数据的精确对数量化结果的小数部分;加法模块105与取高位模块103以及精细量化模块104相连,分别接受来自取高位模块103的最高非零位所在的位置数据,以及来自精细量化模块104的查找结果。该加法模块105对输入的最高非零位所在的位置数据与相对数值的对数量化值执行加法操作并将结果传输至输出接口106;输出接口106与加法模块相连,用于接收针对输入二进制数据的精确对数量化结果,并将其结果输出至外部接收模块。

根据本发明的一个实施例,所述取高位模块包括筛选器、多输入或门以及多路选通器,每一比特位对应一个位筛选器,筛选器用于筛选和存储输入二进制数据各比特位的比特值并输出筛选结果;多输入或门用于在高比特位的比特值不为零的情况下对其低位筛选器输出抑制信号抑制低位筛选器的输出;多路选通器存储每一比特位的位置数据以及其相对高位位置总数,并根据筛选器的输出结果选通最高非零位所对应的位置数据及其对应高位位置总数进行输出。例如,如图2所示,取高位模块103接收输入二进制数据1031,该二进制数据表示为anan-1..a1a0,其中an为高位,a0为低位;其中,取高位模块包括多输入或门1032、筛选器1033以及多路选通器1034,筛选器1033包括多个位筛选器,每一位筛选器对应一个比特位,每一位筛选器包括bit输入位、抑制位、输出位;an到a0的各比特位的比特值分别输入至其对应的各位筛选器的bit输入位中,除了an对应的最高位筛选器和an-1对应的次高位筛选器以外,次高位以下的所有比特位an-2至a0所对应的位筛选器的抑制位输入端均接有一个多输入或门,且高位的比特值都连接到其所有相对低位的多输入或门的输入端中,即每一多输入或门的输入端接入其所在比特位的所有相对高位的比特值,低位筛选器根据来自与其对应的多输入或门的输出结果选择是否抑制其本身对应的筛选器输出,当高位不为零时,低位的多输入或门对低位的筛选器产生抑制信号抑制低位筛选器的输出。如图2所示,an对应的最高位筛选器的抑制端无输入(意味着该最高位筛选器一直不被抑制),其输出端有效还是无效由相应的an决定,an-1对应的次高位筛选器的抑制端直接接收an位比特值;an-2的多输入或门的输入端接收an和an-1位比特值,低位的依次类推;所有位筛选器的输出位接到多路选通器1034的一个相应的输入端,多路选通器1034输入端的每一路对应一个位筛选器的输出,且多路选通器1034存储有对应于每一个位筛选器的每一比特位所在的位置数据及其相对高位位数总数值,根据筛选器1033的输出,最高非零位对应的筛选器输出的信号选通多路选通器1034中最高非零位所在的位置数据及其相对高位位数总数值进行输出。简单的说,当最高非零位的位比特值为1时,其对应所有相对低位的多路或门输出均为抑制信号,抑制信号将抑制相对最高非零位所有低位的位筛选器的输出,强制将低位筛选器值初始化,使其不具备选通触发作用,当高位为0时,其对低位不具备抑制功能。最高非零位的筛选器将触发多路选通器,并由多路选通器选通最高非零位所在的通路输出输入二进制数据的最高非零位所在的位置数据以及相对高位位数总数值即高位0值位数数值,然后将最高非零位所在的位置数据传输至加法模块105,高位0值位数数值传输至精细量化模块104。

根据本发明的一个实施例,所述多路选通器包括与待对数量化的二进制数据的位数相一致的多个寄存器,例如对于上述anan-1..a1a0,分别有对应的寄存器rn,rn-1,…r1,r0。对应于bit输入位为an的筛选器,其输出端连接到寄存器rn的输入端;寄存器rn中存储有其对应的bit位置数据n,以及高位0值位数总数值0(因为第n位是最高位);对应于bit输入位为an-1的筛选器,其输出端连接到寄存器rn-1的输入端,寄存器rn-1中存储有其对应的bit位置数据n-1,以及高位0值位数总数值1(因为第n-1位是次高位);依次类推,对应于bit输入位为a0的筛选器,其输出端连接到寄存器r0的输入端,寄存器r0中存储有其对应的bit位置数据0,以及高位0值位数总数值n(因为第0位是最低位)。如果an为1,是最高非0位,则对应的第一个位筛选器的输出有效,将触发寄存器rn输出其存储的位置n,以及高位0值位数总数值0,而其他低位的筛选器全部被抑制,因此相应的其他寄存器的内容不会被输出。如果an-1为1,且是最高非0位,则对应的第二个筛选器的输出有效,同时第一个筛选器的输出无效(在这种情况下,an一定是0),触发寄存器rn-1输出其存储的位置n-1,以及高位0值位数总数值1,而其他低位的筛选器全部被抑制。其他寄存器的工作方式可以以此类推。

根据本发明的另一个实施例,所述寄存器可以仅存储其对应的bit位位置数据值,而不存储高位0值位数总数值,因为该高位0值位数总数值可以由对应的bit位置数据值计算得出。

根据本发明的一个实施例,所述精细量化模块104包括移位模块和查找表模块,如图3所示,移位模块根据输入的待对数量化的二进制数据以及高位0值位数总数值对输入二进制数据进行移位处理,以高位0值位数数值作为移动位数,使原二进制数据的最高非零位移至最高位,其相对低位进行相应的移动,移位后的低位进行填零处理,将此时移动变换后的二进制数据作为整数部分为1的一个小数,其最高非0位作为整数部分(整数1),将其后面的数据作为小数部分,然后将该整数部分为1的小数作为为输入二进制数据的相对数值,以2为底求取其对数。在查找表中,可以事先存储各个整数部分为1的小数的对数值,这样通过查找表模块可以快速找到该相对数值求取对数的结果,并将该结果作为输入二进制数据相对数值的精确对数量化值传输至加法模块105。

以输入无符号8bit二进制整数数据01011010为例,对上述过程进行说明。假设该无符号8bit二进制数据01011010最高位在左侧,最低位在右侧,可看成27*(0*20+1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6+0*2-7)=26*(1+2-2+2-3+2-5),其位置数据从高到低为7到0,其对数量化结果为6+log2(1+2-2+2-3+2-5)。如图4所示,输入接口接收输入二进制数据01011010并将其传输给取高位模块和精细量化模块,取高位模块对01011010进行取高位处理,其最高非零位从低到高为第6位,因此其最高非零位所在的位置数据为6,由于比该位置6更高的位置只有1个比特值为0的位置(即位置7),因此高位0值位数总数值为1(显然,对于最高非0位在第5位的其他数据,其高位0值位数总数值为2,最高非0位在第4位的其他数据,其高位0值位数总数值为3,其他数据可以以此类推);由于比特位为6的位置为最高非零位所在的位置,那么比特位低于6的比特位的位筛选器均为抑制信号,多路选通器由比特位6所在筛选器选通输出,即取高位模块取出最高非零位所在的位置数据6,并传输给加法模块,同时将高位0值位数总数值1传输给精细量化模块;精细量化模块根据高位0值位数总数1对输入二进制数据01011010进行移位处理,将最高非零位向高位移动1位,其他低位按顺序向高位移动,低位填0,得到输入二进制数据的相对数值1.0110100,针对相对数值1.0110100取对数处理,通过查找表模块查到1.0110100的对数值为0.4918,即为输入二进制数据的相对数值的精确对数量化值,该相对数值的精确对数量化值位输入二进制数据的精确对数量化结果的小数部分,将该结果传输给加法模块;加法模块将最高非零位所在的位置数据6与相对数值的精确量化结果0.4918进行加法操作得到6.4918,6.4918即为输入二进制数据01011010的精确量化结果,将6.4918传输给输出接口,由输出接口将该量化结果输出至外部模块。

根据本发明的另一个实施例,本发明的一种面向神经网络的对数量化装置,包含2个及2个以上由输入接口、取高位模块、精细量化模块、加法模块、输出接口以及各功能块之间的连线、寄存器以及选通等器件组成的单元,对批量输入的数据进行并行批量处理。

根据本发明的另一个实施例,本发明的一种面向神经网络的对数量化装置,包含一个多输入接口,2个及2个以上取高位模块、2个及2个以上精细量化模块、2个及2个以上加法模块、一个多输出接口,以及各功能块之间的连线、寄存器以及选通等器件,并行执行多个输入数据的对数量化操作。

本发明提供一种面向神经网络的对数量化方法,如图5所示,根据本发明的另一个实施例,还提供一种基于上述面向神经网络的对数量化装置的对数量化方法,包括如下步骤:

r1、通过对数量化装置接收待对数量化的二进制数据,并将其传递至取高位模块;

r2、通过取高位模块接收输入二进制数据,数据各比特位位值分别传输至取高位模块内部筛选器,每一比特位对应一个位筛选器;

r3、通过各位筛选器执行位置判断,将高位比特值通过多输入或门传输至其所有相对低位筛选器的抑制端,同时将筛选器输出结果传输至内部多路选通器;

r4、多路选通器选择对应最高非零位所在的位置数据和高位0值位数数值所在的通路输出最高非零位所在的位置数据和高位0值位数数值,将最高非零位所在的位置数据传输至加法模块,同时将高位0值位数数值传输至精细量化模块;

r5、精细量化模块接收输入数据与该数据对应高位0值位数数值,通过其内部的移位模块执行输入二进制数据的移位处理变换得到整数部分为1的小数作为输入二进制数据的相对数值;

r6、将相对数值输入至精细量化模块内部的查表模块中,查找相对数值的精确对数量化结果,输出相对数值对应的精细量化结果,并将相对数值的精确量化结果传输至加法模块;

r7、通过加法模块执行最高非零位所在的位置数据与相对数值的精确量化结果的累加操作,得到输入二进制数据的精确量化结果,其结果通过输出接口传输至外部模块。

其中,步骤r3中,各比特位的比特值分别输入至其对应的各位筛选器中,次高位以下的所有比特位所对应的位筛选器的抑制位输入端均接有一个多输入或门,将高位的比特值输入其所有相对低位的多输入或门中,即每一多输入或门的输入端接入其所在比特位的所有相对高位的比特值,低位筛选器根据来自与其对应多输入或门的输出结果选择是否抑制其本身对应的筛选器输出,当高位不为零时,低位的多输入或门对低位的筛选器产生抑制信号抑制低位筛选器的输出,强制将低位筛选器值初始化,使其不具备选通触发作用。

本发明旨在提供一种面向神经网络的对数量化装置,及其对应的对数量化机制。该装置通过利用高位数值提取模块与对数量化的查找表模块,实现输入数据的快速且精确对数量化,实现基于对数量化的神经网络输入数据的对数量化操作,可为神经网络对数化参数的运算提供对数输入数据,为进一步简化卷积运算做准备。

需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。

本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

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