一种集成电路中激活函数运算方法、装置及电路与流程

文档序号:20067615发布日期:2020-03-06 08:40阅读:271来源:国知局
一种集成电路中激活函数运算方法、装置及电路与流程

本发明属于集成电路领域,具体涉及一种集成电路中激活函数运算方法、装置及电路。



背景技术:

在vlsi(verylargescaleintegration,超大规模集成电路)上实现cnn(convolutionalneuralnetwork,卷积神经网络),必然要实现激活函数层。然而受到asic设计规则的相关约束,算法模型必须利用rtl(registertransferlevel,寄存器传输级(数字电路抽象描述))实现,其中会遇到输出数据饱和,运算定点化,支持的运算模式单一,以及动态范围不足等问题。

激活函数层必须要解决运算定点化问题,并且有尽可能好的动态范围,适应不同种类的激活函数。

通常情况下,目前使用浮点运算单元进行激活函数运算,精度高,动态范围大。但是,使用浮点运算单元进行激活函数运算,逻辑多且时序差,占用很大的asic面积,成本和功耗很高。

为降低成本和功耗,以及减少占用的asic(applicationspecificintegratedcircuit,专用集成电路)面积,也可以使用专门的电路实现特定的激活函数,精度高,逻辑少,时序好,占用asic面积少,成本和功耗低。但是其动态范围小,可以进行的激活函数运算必须是限定的几种,应用受到制约。



技术实现要素:

鉴于现有技术中的上述缺陷或不足,期望提供一种集成电路中激活函数运算方法、装置及电路,以实现以较低的成本和功耗进行较多种类激活函数的运算。

依据本发明的第一方面,提供了一种集成电路中激活函数运算方法,包括:

获取激活函数输入数据,并将所述激活函数输入数据调整至符合激活函数预设输入范围;

根据对所述激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整;

根据调整后的激活函数系数,对符合所述激活函数预设输入范围的激活函数输入数据进行激活函数运算。

进一步,所述获取激活函数输入数据,并将所述激活函数输入数据调整至符合激活函数预设输入范围,具体包括:

获取激活函数输入数据,并确定所述激活函数输入数据的统计结果;

根据所述激活函数输入数据的统计结果,将所述激活函数输入数据调整至符合激活函数预设输入范围。

更进一步,所述激活函数输入数据的统计结果,具体包括:

激活函数输入数据的直方图分布规律;和/或

激活函数输入数据的极值。

更进一步,所述根据所述激活函数输入数据的统计结果,将所述激活函数输入数据调整至符合激活函数预设输入范围,具体包括:

根据所述激活函数输入数据的统计结果,通过偏置调整和/或系数调整,将所述激活函数输入数据调整至符合激活函数预设输入范围。

进一步,所述根据对所述激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整,具体包括:

根据对所述激活函数输入数据的调整,确定针对输入的激活函数参数中的激活函数系数的调整系数;

根据所述激活函数系数的调整系数,对所述激活函数系数进行调整。

进一步,所述激活函数为n段分段函数,n为整数且n≥1;

所述根据调整后的激活函数系数,对符合所述激活函数预设输入范围的激活函数输入数据进行激活函数运算,具体包括:

根据所述激活函数参数中的激活函数分段信息以及调整后的激活函数系数,选通各分段范围内的激活函数输入数据进行对应分段的激活函数运算。

进一步,所述激活函数运算具体包括:

线性运算;或者

三次条样曲线运算;或者

二次函数运算。

第二方面,本发明实施例还提供一种集成电路中激活函数运算装置,包括:

第一调整单元,用于获取激活函数输入数据,并将所述激活函数输入数据调整至符合激活函数预设输入范围;

第二调整单元,用于根据对所述激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整;

运算单元,用于根据调整后的激活函数系数,对符合所述激活函数预设输入范围的激活函数输入数据进行激活函数运算。

第三方面,本发明实施例还提供一种集成电路中激活函数运算电路,包括:

激活函数数据加载器,用于获取激活函数输入数据;

激活函数前量化单元,连接所述激活函数数据加载器,用于将所述激活函数输入数据调整至符合激活函数预设输入范围,并根据对所述激活函数输入数据的调整,确定激活函数系数的调整系数;

激活函数运算单元,连接所述激活函数前量化单元,用于根据所述激活函数系数的调整系数,调整所输入的激活函数参数中的激活函数系数,并对符合所述激活函数预设输入范围的激活函数输入数据进行激活函数运算。

进一步,还包括:

统计单元,连接所述激活函数数据加载器和所述激活函数前量化单元,用于确定所述激活函数输入数据的统计结果;

所述激活函数前量化单元根据所述激活函数输入数据的统计结果,将所述激活函数输入数据调整至符合激活函数预设输入范围。

更进一步,所述统计单元具体包括:

直方图统计模块和/或极限值统计模块。

进一步,还包括:

激活函数参数加载器,连接所述激活函数运算单元,用于加载激活函数参数并输出至所述激活函数运算单元。

进一步,所述激活函数运算单元,具体包括:

激活函数分段选通器,用于根据所述激活函数参数对所述激活函数输入数据进行分段选通;

激活函数运算子单元,用于基于所述激活函数分段选通器的输入,根据所述激活函数系数的调整系数,调整激活函数参数中的激活函数系数,并对符合所述激活函数预设输入范围的激活函数输入数据分段进行激活函数运算。

进一步,还包括:

激活函数后量化单元,连接所述激活函数运算单元,用于对激活函数运算结果进行量化;

激活函数运算结果输出单元,连接所述激活函数后量化单元,用于将量化后的激活函数运算结果输出至存储器。

本发明实施例提供一种集成电路中激活函数运算方法、装置及电路,在获取激活函数输入数据后,将激活函数输入数据调整至符合激活函数预设输入范围;并根据对激活函数输入数据的调整,对激活函数参数中的激活函数系数进行调整;再根据调整后的激活函数系数,对符合激活函数预设输入范围的激活函数输入数据进行激活函数运算。由于将激活函数输入数据调整到了符合激活函数预设输入范围,并适应性调整了激活函数系数,使得运算结果仍然对应调整前的激活函数输入数据,通过该方法,可以使得激活函数能够进行较大范围的运算,同时其逻辑简单,激活函数运算成本和功耗较低。

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

附图说明

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

图1为本发明实施例提供的集成电路中激活函数运算方法流程图;

图2为本发明实施例提供的集成电路中激活函数运算装置结构示意图;

图3-图7为本发明实施例提供的集成电路中激活函数运算电路结构示意图。

具体实施方式

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

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

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

在图1中,示出了本发明实施例提供的集成电路中激活函数运算方法,该方法包括:

步骤s101、获取激活函数输入数据,并将激活函数输入数据调整至符合激活函数预设输入范围;

步骤s102、根据对激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整;

步骤s103、根据调整后的激活函数系数,对符合激活函数预设输入范围的激活函数输入数据进行激活函数运算。

由于在步骤s101中,将激活函数输入数据调整到了符合激活函数预设输入范围,并在步骤s102中适应性调整了激活函数系数,使得运算结果仍然对应调整前的激活函数输入数据,通过该方法,可以使得激活函数能够进行较大范围的运算,同时其逻辑简单,激活函数运算成本和功耗较低。

在调整激活函数输入数据时,可以根据激活函数的统计结果来调整,从而使得对激活函数输入数据的调整,符合当前输入数据的特点,提高计算精度。例如,根据激活函数输入数据的分布情况确定调整偏置量、根据激活函数输入数据的极值确定调整系数等。

具体的,步骤s101中,获取激活函数输入数据,并将激活函数输入数据调整至符合激活函数预设输入范围,具体包括:

获取激活函数输入数据,并确定激活函数输入数据的统计结果;

根据激活函数输入数据的统计结果,将激活函数输入数据调整至符合激活函数预设输入范围。

其中,激活函数输入数据的统计结果,具体包括:

激活函数输入数据的直方图分布规律;和/或

激活函数输入数据的极值。

在具体实现过程中,可以通过软件或硬件的方式得到激活函数输入数据的直方图分布规律以及激活函数输入数据的极值,在采用硬件方式实现时,可以通过移位寄存器、计数器和比较器等器件确定出激活函数输入数据的直方图分布规律以及激活函数输入数据的极值,例如,通过比较器和计数器,即可确定激活函数输入数据的直方图分布规律,通过移位寄存器即可寄存前一周期中输入的数据,再通过比较器与当前输入的数据进行比较,获得较大的数据,继续与下一周期中输入的数据进行比较,直至到达统计区间,即可确定出该统计区间中激活函数输入数据的极大值,同理,若每次比较后寄存较小的数据,即可确定出激活函数输入数据的极小值。当然,本领域技术人员也可以根据实际需要,采用其它器件和方法确定激活函数输入数据的统计结果,在此不再一一赘述。

通常情况下,根据激活函数输入数据的统计结果,将激活函数输入数据调整至符合激活函数预设输入范围,具体包括:

根据激活函数输入数据的统计结果,通过偏置调整和/或系数调整,将激活函数输入数据调整至符合激活函数预设输入范围。

确定了激活函数输入数据的直方图分布规律后,可以在调整激活函数输入数据的偏置量时,以数据分布最密集的部分为中心进行调整,从而获得更高的激活函数运算精度。

确定了激活函数输入数据的极大值和极小值后,可以根据激活函数输入数据的极大值和极小值进行激活函数输入数据系数的调整,从而使得激活函数输入数据满足预先设定的激活函数输入范围。

通常情况下,激活函数输入数据满布预先设定的激活函数输入范围较佳,可以获得较好的计算精度,例如,若激活函数输入范围为(0,65535),若激活函数输入数据存在超出该范围的数据,则需要通过系数调整,使得激活函数输入数据全部落入该范围内,若激活函数输入数据的输入范围在(0,65535)中,并且其范围远小于(0,65535),例如,其范围可能是(10-100),此时,也调整其范围,是得调整后的激活函数输入数据范围在(0,65535)中,并接近(0,65535)较佳。

为适应更多的激活函数运算情况,使得运算电路的应用范围更加广阔,激活函数系数可能需要在运算时针对具体运算进行加载,此时,可以先根据对激活函数输入数据的调整,确定针对激活函数参数中的激活函数系数的调整系数,在加载了激活函数系数后,再根据激活函数系数的调整系数,对激活函数系数进行调整。

此时,步骤s102中,根据对激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整,具体包括:

根据对激活函数输入数据的调整,确定针对所输入的激活函数参数中的激活函数系数的调整系数;

根据激活函数系数的调整系数,对激活函数系数进行调整。

为适应多种激活函数运算,激活函数可以是n段分段函数,n为整数且n≥1;

此时,步骤s103中,根据调整后的激活函数系数,对符合激活函数预设输入范围的激活函数输入数据进行激活函数运算,具体包括:

根据激活函数参数中的激活函数分段信息以及调整后的激活函数系数,选通各分段范围内的激活函数输入数据进行对应分段的激活函数运算。

在本发明实施例中,激活函数运算可以是线性运算,或者三次条样曲线运算,或者二次函数运算。

三者之中,线性运算占用的乘法器和面积最小,其成本和功耗也较低,其精度也较低,三次条样曲线运算占用的乘法器和面积较大,计算精度最高,二次函数运算占用的乘法器和面积较大,其计算精度稍优于线性运算。

例如,激活函数的形式为y=ax+b,激活函数参数中,包括该激活函数的分段信息以及每段的系数a、b,例如分段信息可以为(1,1000),[1000,20000],(20000,65535)三段,每段的激活函数系数分别为a1和b1、a2和b2、a3和b3,若x为{1,2,3……m},则需要将x的范围调整至满布(0,65535),再根据具体的每个x值,通过选通器使其选通相应的分段函数,对应相应的激活函数系数进行激活函数运算,例如,调整后的x为10,则选通对应(1,1000)的分段函数,通过y=a1x+b1进行激活函数运算,若调整后的x为30000,则选通对应(20000,65535)的分段函数,通过y=a3x+b3进行激活函数运算,由于在激活函数运算时,激活函数系数会根据激活函数系数的调整系数进行调整,所以激活函数运算的结果是完全对应调整前的x的,即对应{1,2,3……m}。

本发明实施例还相应提供一种集成电路中激活函数运算装置,如图2所示,包括:

第一调整单元201,用于获取激活函数输入数据,并将激活函数输入数据调整至符合激活函数预设输入范围;

第二调整单元202,用于根据对激活函数输入数据的调整,对输入的激活函数参数中的激活函数系数进行调整;

运算单元203,用于根据调整后的激活函数系数,对符合激活函数预设输入范围的激活函数输入数据进行激活函数运算。

由于第一调整单元201将激活函数输入数据调整到了符合激活函数预设输入范围,第二调整单元202适应性调整了激活函数系数,使得运算单元203的运算结果仍然对应调整前的激活函数输入数据,通过该装置,可以使得激活函数能够进行较大范围的运算,同时其逻辑简单,激活函数运算成本和功耗较低。

本发明实施例还相应提供一种集成电路中激活函数运算电路,如图3所示,包括:

激活函数数据加载器301,用于获取激活函数输入数据;

激活函数前量化单元302,连接激活函数数据加载器301,用于将激活函数输入数据调整至符合激活函数预设输入范围,并根据对激活函数输入数据的调整,确定激活函数系数的调整系数;

激活函数运算单元303,连接激活函数前量化单元302,用于根据激活函数系数的调整系数,调整所输入的激活函数参数中的激活函数系数,并对符合激活函数预设输入范围的激活函数输入数据进行激活函数运算。

由于激活函数前量化单元302将激活函数输入数据调整到了符合激活函数预设输入范围,激活函数运算单元303又适应性调整了激活函数系数,使得激活函数运算的运算结果仍然对应调整前的激活函数输入数据,通过该电路,可以使得激活函数能够进行较大范围的运算,同时其逻辑简单,激活函数运算成本和功耗较低。

其中,激活函数数据加载器301将数据从内存或者外部存储器搬运到该激活运算电路的dma(directmemoryaccess,直接内存存取)操作的模块,可以将数据不经过cpu干预的情况下加载至该模块以便于下一步处理。

进一步,如图4所示,该电路中还包括:

统计单元304,连接激活函数数据加载器301和激活函数前量化单元302,用于确定激活函数输入数据的统计结果;

激活函数前量化单元302根据激活函数输入数据的统计结果,将激活函数输入数据调整至符合激活函数预设输入范围。

更进一步,如图4所示,统计单元304具体包括:

直方图统计模块3041和/或极限值统计模块3042。

当统计单元304中包括直方图统计模块3041和极限值统计模块3042时,可以通过demux(demultiplexer,多路分配器)将数据分别输入至直方图统计模块3041和极限值统计模块3042,再通过mux(multiplexer,多路复用器)将直方图统计模块3041和极限值统计模块3042的输出结果汇总输出至激活函数前量化单元302。

进一步,为适应更多样更复杂的激活函数,如图5所示,该电路还包括:

激活函数参数加载器305,连接激活函数运算单元303,用于加载激活函数参数并输出至激活函数运算单元303。

进一步,如图6所示,激活函数运算单元303具体包括:

激活函数分段选通器3031,用于根据激活函数参数对激活函数输入数据进行分段选通;

激活函数运算子单元3032,用于基于激活函数分段选通器3031的输入,根据激活函数系数的调整系数,调整激活函数参数中的激活函数系数,并对符合激活函数预设输入范围的激活函数输入数据分段进行激活函数运算。

此时,激活函数参数包括激活函数的分段信息和激活函数系数。激活函数参数加载器305从ram加载激活函数的分段信息到激活函数分段选通器3031,并从ram加载激活函数系数到激活函数运算子单元3032,实现这两种dma操作。

激活函数运算子单元3032根据激活函数分段结果得到的参数,与激活函数前量化单元配置的系数和偏置,对输入数据与激活函数系数进行计算。由于是对激活函数进行分段线性拟合,因此理论上可以支持任意激活函数,例如relu,leakyrelu,sigmoid,tanh,selu,包括但不限于分段激活函数。

进一步,如图7所示,该电路还包括:

激活函数后量化单元306,连接激活函数运算303单元,用于对激活函数运算结果进行量化;

激活函数运算结果输出单元307,连接激活函数后量化306单元,用于将量化后的激活函数运算结果输出至存储器。

其中,激活函数后量化单元306对激活函数运算结果进行量化,可以使激活函数运算结果变为指定位宽(例如4bit,8bit,16bit,32bit),避免数据超出动态范围。

激活函数运算结果输出单元307将激活函数后量化单元306得到的结果通过dma操作写回ram,在不经过cpu干预的情况下完成计算过程。

通过该激活函数运算电路,在可接受的功耗、asic面积与成本下,实现了动态范围足够并且支持任意激活函数计算的电路。同时,rtl设计友好,由于使用多分段线性拟合,可以映射到rtl的多路复用器,复用线性计算单元,从而极大降低rtl实现难度,并且减少资源占用,降低功耗。

附图中的流程图和框图,图示了按照本公开各种实施例的方法、装置和运算机可读存储介质的可能实现的体系架构、功能和操作。应当注意,流程图中的每个方框所表示的步骤未必按照标号所示的顺序进行,有时可以基本并行地执行,有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的硬件来实现,或者可以用硬件与运算机指令的组合来实现。

描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。

通过以上对实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该运算机软件产品可以存储在运算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台运算机设备(可以是个人运算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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