首页> 中国专利> 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

摘要

本发明公开了一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,其特征是如下步骤进行:1确定拟合多项式的阶数;2获得sigmoid函数的拟合区间;3获得分段区间;4获得拟合多项式;5设计系数存储模块;6设计多项式运算模块;7设计判断模块;8获得拟合硬件电路;9判断操作数所在的拟合执行区间;10读取拟合多项式系数;11在多项式运算模块中进行拟合计算。本发明能在降低硬件资源消耗的基础上,提高运算精度、加快运算速度以及提升运算结构的灵活性。

著录项

  • 公开/公告号CN107247992A

    专利类型发明专利

  • 公开/公告日2017-10-13

    原文格式PDF

  • 申请/专利权人 合肥工业大学;

    申请/专利号CN201710416069.6

  • 发明设计人 宋宇鲲;王浩;张多利;杜高明;

    申请日2014-12-30

  • 分类号G06N3/063(20060101);

  • 代理机构34101 安徽省合肥新安专利代理有限责任公司;

  • 代理人陆丽莉;何梅生

  • 地址 230009 安徽省合肥市包河区屯溪路193号

  • 入库时间 2023-06-19 03:28:47

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-08-30

    授权

    授权

  • 2017-11-10

    实质审查的生效 IPC(主分类):G06N3/063 申请日:20141230

    实质审查的生效

  • 2017-10-13

    公开

    公开

说明书

本申请是申请日为:2014年12月30日、申请号为:2014108504707、名称为:一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路的分案申请。

技术领域

本发明涉及人工神经网络领域,具体地说是一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路。

背景技术

神经网络是人工神经网络的简称,神经网络的研究与应用也是当前的研究热点之一。神经网络的优势主要体现两个方面,一个是并行性,另一个就是强大的非线性信息处理与学习能力。目前,已经有多个神经网络模型的理论基础、工作原理达到了成熟的水平,使得进一步研究它们在信号处理、控制系统、语音识别等多个相关领域的应用成为热点。与软件模拟相比,基于硬件实现的神经网络具有处理速度快、高并行性,更容易达到神经网络实时运算的要求。

在用FPGA实现神经网络时,有两个难点:一个是数据的表示方式,另一个是神经网络激活函数的逼近方法,这两点决定了硬件资源利用效率的高低和逼近的精度。神经网络的激活函数有多种形式,Sigmoid函数是神经网络中使用最广泛的一种激励函数,实现难度也最大,是神经网络FPGA实现的一个重要环节。

当前,sigmoid函数的FPGA实现方法有:直接查找表,分段线性逼近,多项式逼近,CORDIC算法,遗传算法等。其中直接查找表法(Zhiliang Nie,2012;Alexander Gomperts,2010)是将sigmoid运算结果存储在存储模块中,根据输入操作数,直接查找读取结果,这种方法需要耗费大量的存储资源,且硬件实现精度不高;分段线性逼近法(Manish Panicker,2012)在(-5,5)范围内,采用3段式分段线性逼近,采用32bit定点数格式,运算和存储资源较少,但运算精度较低,最大均方差为0.00187;CORDIC算法(Xi Chen,2006)采用CORDIC算法和查找表算法相结合,数据格式采用自定义16bit浮点格式输入和自定义32bit浮点格式输出,运算资源大,运算精度很低。遗传算法(Bharat Kishore Bharkhada,2004)在[0,8]范围内,采用基因遗传算法拟合整系数分段三次多项式,采用16位定点数格式,运算资源不高,存储资源较低,运算精度不高,绝对误差2.4376×10-3;多项式逼近算法最为常见,传统的泰勒级数展开法,需要消耗消耗大量的运算资源,且运算精度很低。较为经典的分段多项式逼近算法(Joao>-5,这一拟合精度是当前所有现有技术中能够达到的最优精度,但是,仍然不能满足高精度运算要求。

且在数据格式的选择方面,以上所有的方法为提高运算精度多为自定义浮点格式,而在实时高速处理领域,数据格式往往是IEEE754标准的32bit单精度浮点格式,这种自定义数据格式在与其他处理模块通讯时,还需要考虑数据格式的转换,通信代价较大。在降低资源消耗方面,为降低运算资源消耗,采用查找表法,虽能获得运算结果,并大大降低了运算资源消耗,却极大的增加了存储资源。在运算精度方面,由于所用算法本身的问题,综合资源方面的考虑,当前的现有技术中,硬件实现的精度普遍不高,远远不能满足实时高精度处理的要求;这些都是亟需解决的瓶颈问题。

发明内容

本发明是为避免上述现有技术的不足之处,提出了一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,以期能在降低硬件资源消耗的基础上,提高运算精度、加快运算速度以及提升运算结构的灵活性。

本发明为解决技术问题采用如下技术方案:

本发明一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路的特点是按如下步骤进行:

步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;

步骤2、根据所述拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];

步骤3、利用式(2)所示的对称性将所述拟合区间[a,b]以原点0为对称中心划分成2m+2个小区间[a,q1],(q1,q2],…,(qm,0],(0,qm+1],…,(q2m,b];a,q1,q2,…,qm,0,qm+1,…q2m,b分别表示所述2m+2个小区间的端点值;q1,q2,…,qm,qm+1,…q2m分别表示所述2m个小区间的缩放端点值;由所述2m个小区间的缩放端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m-1};Qt表示所述2m个小区间的缩放端点值中第t个小区间的端点值;从而获得分段区间[Q0,Q1],[Q1,Q2],…,[Qt,Qt+1],…,[Q2m-1,Q2m];t=0,1,…,2m-1;

f(-x)=1-f(x) (2)

步骤4、将所述阶数n分别和所述区间(0,b]上的m个分段小区间组成m个向量组[n,Qm,Qm+1],[n,Qm+1,Qm+2],…,[n,Qε,Qε+1],…,[n,Q2m-1,Q2m];ε=m,m+1,…,2m-1,[n,Qε,Qε+1]表示第ε个向量组;将所述m个向量组依次代入列梅兹算法,从而依次获得所述分段区间各自所对应的逼近精度um”,um+1”,…,ut”,…u2m-1”;

步骤4.1、利用式(5)获得所述第ε个向量组[n,Qε,Qε+1]所对应的n+2个切比薛夫多项式的交错点组以所述第ε个交错点组作为第ε个初始点集从而获得m个向量组各自所对应的初始点集;

式(3)中,λ=0,1,…,n+1;

步骤4.2、利用所述第ε个初始点集求解式(6)所示的线性方程组的解从而根据所述解获得第ε个初始的逼近多项式

步骤4.3、在第ε个分段区间[Qε,Qε+1]内获得|f(x)-pε'(x)|为最大值时所对应的自变量将所述自变量来表征;

则用代替

则用代替

则用代替β=1,2,…,n;从而获得所述第ε个初始点集的更新点集;

步骤4.4、利用所述第ε个初始点集的更新点集求解式(6)所示的线性方程组的更新解从而根据所述更新解获得第ε个更新的逼近多项式

判断|uε”-uε'|≤eps是否成立,若成立,则以uε”作为所述第ε个分段区间[Qε,Qε+1]所对应的逼近精度;否则,重复步骤4.3-步骤4.4;直到|uε”-uε'|≤eps成立为止;eps表示逼近误差收敛控制精度;

步骤5、依次判断所述逼近精度um”,um+1”,…,ut”,…u2m-1”是否满足所述拟合精度u,若满足,则满足逼近精度所对应的分段区间即为拟合执行区间,满足逼近精度所对应的逼近多项式的系数即为所述拟合执行区间的拟合多项式系数;若不满足,则缩放所述不满足逼近精度所对应的分段区间中的缩放端点值,并返回步骤4执行,直到获得满足所述拟合精度u的m个拟合执行区间和m组拟合多项式系数;

步骤6、若所述sigmoid函数f(x)的自变量x在区间(b,+∞)内,则区间(b,+∞)作为拟合执行区间;且区间(b,+∞)所对应的拟合多项式的常数项系数为1、其余各项系数均为0;从而获得m+1个n阶数拟合多项式,完成sigmoid函数的拟合;

步骤7、将所述m+1个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;

步骤8、根据所述n阶数拟合多项式,利用n个浮点加法器、2n-1个浮点乘法器和(n-2)×k个寄存单元设计多项式运算模块;并在所述多项式运算模块的输出端设计一个浮点减法器;k为所述浮点加法器、所述浮点乘法器和浮点减法器的流水级数;

步骤9、根据所述2m+2个拟合执行区间设计判断模块;由所述多项式运算模块、系数存储模块、浮点减法器和判断模块构成拟合硬件电路;

步骤10、输入一个操作数ω作为所述拟合硬件电路的输入值;并利用所述判断模块判断所述操作数ω所在的拟合执行区间;

若ω∈(0,+∞),则从所述系数存储模块中读取所述操作数ω所在的拟合执行区间所对应的拟合多项式的系数;

若ω∈(-∞,0],则从所述系数存储模块中读取所述操作数ω所在的拟合执行区间的对称区间所对应的拟合多项式的系数;

步骤12、将所述操作数ω和所述操作数ω所对应的拟合多项式的系数读入所述多项式运算模块中进行拟合计算,若ω∈(0,+∞),则获得的拟合结果即为所述拟合硬件电路的输出值;若ω∈(-∞,0],则将获得的拟合结果和1读入所述浮点减法器中,获得的计算结果即为所述拟合硬件电路的输出值。

与当前现有技术相比,本发明有益效果体现在:

1、本发明采用的列梅兹逼近算法可以满足不同的设计指标要求,若设计指标要求很低的运算资源消耗和较高的运算精度,可以在不改变拟合精度u的情况下,适当增大m的值即增加小区间的个数,降低拟合多项式的阶数n,使设计满足设计指标要求;若设计指标要求较低的存储资源消耗和较高的运算精度,可以在不改变拟合精度u的情况下,适当减小m的值即减少小区间的个数,从而降低系数存储资源消耗,使设计满足设计指标要求;由此克服了当前现有技术中拟合精度低,资源消耗大的问题,使得拟合多项式硬件电路在实现多项式拟合过程中具有较强的灵活性。

2、本发明采用了多项式系数存储模块,使硬件电路设计具有更强的扩展性,对于不同的拟合方案,只需重新固化存储模块中存储的系数即可。

3、本发明采用了n个浮点加法器、2n-1个浮点乘法器,并利用(n-2)×l寄存单元寄存操作数和相应级的中间结果,使得这个电路能够进行单精度浮点数的流水计算,提高了运算速度,使得设计能够满足高速实时运算的要求。

4、本发明采用了判断模块,进而将查找表法和分段非线性逼近法结合起来,扩展了拟合函数的执行区间,在整个实数范围内任意操作数取值都可以获得相应的运算结果。

5、本发明根据sigmoid函数的对称性,方案二仅需在所述(0,b]区间采用列梅兹算法拟合,从而能在不影响运算精度的基础上,将系数存储模块的资源消耗降低为原来的一半,将求解拟合多项式的系数的次数降低为原来的一半。

6,本发明根据sigmoid函数的对称性,方案二在多项式运算模块外部增加一个减法器,对所述(-∞,a]区间的操作数的拟合结果执行减法运算,能够在不影响运算精度的基础上,快速准确的得到最终结果。

7,本发明可采用不同的数据格式,对于IEEE754格式的单精度浮点格式数据,可实现拟合精度不低于10-6。对于其它自定义浮点格式数据,相同的资源消耗情况下,采用本发明电路比采用其它电路能够获得更高的拟合精度。

附图说明

图1为本发明方案一的硬件电路结构示意图;

图2为本发明方案一的运算流程示意图;

图3为本发明方案一的多项式运算电路结构实例实施示意图;

图4为本发明方案二的硬件电路结构示意图;

图5为本发明方案二的运算流程示意图;

图6为本发明方案二的多项式运算电路结构实例实施示意图。

具体实施方式

本实施例中,一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路是按如下步骤进行:

步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;

步骤2、根据拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];例如,在具体实施中,给定拟合精度u=10-6,拟合多项式的阶数n=5;从而获得的拟合区间[a,b]=[-13.816,13.816];

步骤3、利用式(2)所示的对称性将拟合区间[a,b]以原点0为对称中心划分成2m+2个小区间[a,q1],(q1,q2],…,(qm,0],(0,qm+1],…,(q2m,b];a,q1,q2,…,qm,0,qm+1,…q2m,b分别表示2m+2个小区间的端点值;q1,q2,…,qm,qm+1,…q2m分别表示2m个小区间的缩放端点值;由2m个小区间的缩放端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m-1};Qt表示2m个小区间的缩放端点值中第t个小区间的端点值;从而获得分段区间[Q0,Q1],[Q1,Q2],…,[Qt,Qt+1],…,[Q2m-1,Q2m];t=0,1,…,2m-1;

本实施例中,取m=7,将拟合区间[-13.816,13.816]划分成14个小区间[-13.816,-10],(-10,-8],(-8,-6],(-6,-4],(-4,-2],(-2,-1],(-1,0],(0,1],(1,2],(2,4],(4,6],(6,8],(8,10],(10,13.816],从而获得14个分段区间依次为:[-13.816,-10],(-10,-8],(-8,-6],(-6,-4],(-4,-2],(-2,-1],(-1,0],(0,1],(1,2],(2,4],(4,6],(6,8],(8,10],(10,13.816];

f(-x)=1-f(x) (2)

由式(2)所示的对称性可知,sigmoid函数f(x)的拟合可以在整个拟合区间内执行拟合,得到拟合结果,也可以只做x∈(0,+∞)区间的拟合,x∈(-∞,0]区间的拟合结果可以利用式(2)和其对称区间的拟合结果获得,因此可以有两种方案实现sigmoid函数的拟合,其中方案一为:

步骤4、将阶数n分别和2m个分段区间组成2m个向量组[n,Q0,Q1],[n,Q1,Q2],…,[n,Qt,Qt+1],…,[n,Q2m,Q2m+1];[n,Qt,Qt+1]表示第t个向量组;本实施例中,14个向量组依次是[5,-13.816,-10],[5,-10,-8],[5,-8,-6],[5,-6,-4],[5,-4,-2],[5,-2,-1],[5,-1,0],[5,0,1],[5,1,2],[5,2,4],[5,4,6],[5,6,8],[5,8,10],[5,10,13.816],将14个向量组依次代入列梅兹算法,从而依次获得分段区间各自所对应的逼近精度u0”,u1”,…,ut”,…u2m+1”;

步骤4.1、利用式(3)获得第t个向量组[n,Qt,Qt+1]所对应的n+2个切比薛夫多项式的交错点组以第t个交错点组作为第t个初始点集从而获得2m个向量组各自所对应的初始点集;

式(3)中,k=0,1,…,n+1;

步骤4.2、利用第t个初始点集求解式(4)所示的线性方程组的解从而根据解获得第t个初始的逼近多项式

步骤4.3、在第t个分段区间[Qt,Qt+1]内获得|f(x)-pt'(x)|为最大值时所对应的自变量将自变量来表征;

则用代替

则用代替

则用代替从而获得第t个初始点集的更新点集;

步骤4.4、利用第t个初始点集的更新点集求解式(4)所示的线性方程组的更新解从而根据更新解获得第t个更新的逼近多项式

判断|ut”-ut'|≤eps是否成立,若成立,则以ut”作为第t个分段区间[Qt,Qt+1]所对应的逼近精度;否则,重复步骤4.3-步骤4.4;直到|ut”-ut'|≤eps成立为止;eps为逼近误差收敛控制精度;

步骤5、依次判断逼近精度u0”,u1”,…,ut”,…u2m-1”是否满足拟合精度u,若满足,则满足逼近精度所对应的分段区间即为拟合执行区间,满足逼近精度所对应的逼近多项式的系数即为拟合执行区间的拟合多项式系数;若不满足,则缩放不满足逼近精度所对应的分段区间中的缩放端点值,并返回步骤4执行,直到获得满足拟合精度u的2m+1个拟合执行区间和2m+1组拟合多项式系数;

步骤6、若sigmoid函数f(x)的自变量x在区间(b,+∞)内,则区间(b,+∞)作为拟合执行区间;且区间(b,+∞)所对应的拟合多项式的常数项系数为1、其余各项系数均为0;若sigmoid函数f(x)的自变量x在区间(-∞,a)内,则区间(-∞,a)作为拟合执行区间,且区间(-∞,a)所对应的拟合多项式的各项系数均为0;从而获得2m+2个n阶数拟合多项式,完成sigmoid函数的拟合;

本实施例中,区间(13.816,+∞)所对应的5阶拟合多项式的常数项系数为1,区间(13.816,+∞)所对应的5阶拟合多项式的其余各项系数均为0;区间(-∞,-13.816)所对应的5阶拟合多项式的各项系数均为0;

经过步骤5和步骤6后获得本实施例的16个拟合执行区间为:(-∞,-13.816),[-13.816,-11],(-11,-7],(-7,5],(-5,-3],(-3,-2],(-2,-1],(-1,0],(0,1],(1,2],(2,3],(3,5],(5,7],(7,11],(11,13.816],(13.816,+∞),完成sigmoid函数的拟合。

步骤7、将2m+2个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;本实施例中,将16个拟合执行区间对应的多项式的系数固化在ROM中,并根据存储规律编写地址读取规律,构成系数查找表。

步骤8、根据n阶数拟合多项式,利用n个浮点加法器、2n-1个浮点乘法器和(n-2)×k个寄存单元设计多项式运算模块;k为浮点加法器或浮点乘法器的流水级数;本实施例中,采用5个浮点加法器、9个浮点乘法器和6个reg寄存单元设计多项式运算模块,其中浮点运算器的流水级数均为2级。

步骤9、根据2m+2个拟合执行区间设计判断模块;由多项式运算模块、系数存储模块和判断模块构成如图1所示的拟合硬件电路;图1中,data_i是输入的源操作数,data_o是输出的运算结果。

步骤10、图2所示,输入一个操作数ω作为拟合硬件电路的输入值;并利用判断模块判断操作数ω所在的拟合执行区间;

步骤11、从系数存储模块中读取操作数ω所在的拟合执行区间所对应的拟合多项式的系数;

步骤12、将操作数ω和操作数ω所对应的拟合多项式的系数读入多项式运算模块中进行拟合计算,从而获得拟合结果作为拟合硬件电路的输出值。

本实施例方案一中所设计出的多项式运算模块如图3所示,采用的IEEE754标准单精度浮点数据格式,运算精度不低于10-6的5次拟合多项式硬件实现电路结构图,包括9个乘法器和5个加法器及6个reg寄存单元;所实现的多项式是p(x)=Ax5+Bx4+Cx3+Dx2+Ex+F,result是运算最终的输出结果,具体运算流程如下:

步骤a:源操作数x进入多项式运算模块,读取系数E,x进入乘法器Multi_1完成E*x运算并输出给下一级,x进入乘法器Multi_2完成x2运算并输出给下一级,x进入reg_1暂存两级,等待参与下一级运算,第一级2个乘法器并行完成运算,乘法器流水级数均设为2级;

步骤b:读取系数F和E*x进入加法器Add_1完成x5运算并将结果输出到下一级,读取系数D和x2进入乘法器Multi_3完成D*x2运算并输出给下一级,x2和x进入乘法器Multi_4完成x3运算并输出给下一级,上一级寄存的x进入reg_2继续暂存两级,等待参与下一级运算,第二级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤c:读取(E*x+F)和D*x2进入加法器Add_2完成(Dx2+E*x2+F)运算并输出给下一级,读取系数C和x3进入乘法器Multi_5完成C*x3运算并输出给下一级,读取x3和上一级寄存的x进入Multi_6完成x4运算并输出给下一级,上一级寄存的x进入reg_3继续暂存两级,等待参与下一级运算,第三级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤d:读取(Dx2+E*x2+F)和C*x3进入加法器Add_3完成(C*x3+Dx2+Ex+F)运算并输出给下一级,读取系数B和x4进入乘法器Multi_7完成B*x4运算并输出给下一级,读取x4和上一级寄存的x进入乘法器Multi_8完成x5运算并输出给下一级,第四级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤e:读取(C*x3+Dx2+Ex+F)和B*x4进入加法器Add_4完成(B*x4+C*x3+D*x2+E*x+F)运算并输出给下一级,读取系数A和x5进入乘法器Multi_9完成A*x5运算并输出给下一级,第五级2个浮点运算器并行完成运算,流水级数均设置为2级;

步骤f:加法器Add_5完成(A*x5+B*x4+C*x3+D*x2+E*x+F)运算并输出,加法器的流水级数设置为2级;运算结果即为最终结果,直接输出;

当完成以上各步骤后,就完成了本发明中的sigmoid函数拟合的处理。统计本例各个步骤的时钟周期数,每级运算流水级数为2,共6级,完成单个源操作数的拟合运算需要13个时钟周期,拟合精度不低于10-6,最大均方差不超过8.74×10-14。该拟合精度远高于当前现有技术中最优拟合精度,资源消耗更低,且数据格式为IEEE754单精度浮点格式,能够更好的应用于高精度高速实时运算中。

方案一采用较少的浮点运算资源和更少的浮点运算级数,因而运算速度更快,但系数存储模块要存储较多的拟合多项式系数,增大了存储资源。另外,虽然整个sigmoid函数的拟合精度都很高,但由于在原点左右两侧采用不同的拟合多项式,因此关于原点对称的两个拟合区间对应的拟合精度会有所不同。

方案二:步骤4-步骤12还可以按如下方式进行:

步骤4、将阶数n分别和区间(0,b]上的m个分段小区间组成m个向量组[n,Qm,Qm+1],[n,Qm+1,Qm+2],…,[n,Qε,Qε+1],…,[n,Q2m-1,Q2m];ε=m,m+1,…,2m-1,[n,Qε,Qε+1]表示第ε个向量组;将m个向量组依次代入列梅兹算法,从而依次获得分段区间各自所对应的逼近精度um”,um+1”,…,ut”,…u2m-1”;

步骤4.1、利用式(5)获得第ε个向量组[n,Qε,Qε+1]所对应的n+2个切比薛夫多项式的交错点组以第ε个交错点组作为第ε个初始点集从而获得m个向量组各自所对应的初始点集;

式(3)中,λ=0,1,…,n+1;

步骤4.2、利用第ε个初始点集求解式(6)所示的线性方程组的解从而根据解获得第ε个初始的逼近多项式

步骤4.3、在第ε个分段区间[Qε,Qε+1]内获得|f(x)-pε'(x)|为最大值时所对应的自变量将自变量来表征;

则用代替

则用代替

则用代替β=1,2,…,n;从而获得第ε个初始点集的更新点集;

步骤4.4、利用第ε个初始点集的更新点集求解式(6)所示的线性方程组的更新解从而根据更新解获得第ε个更新的逼近多项式

判断|uε”-uε'|≤eps是否成立,若成立,则以uε”作为第ε个分段区间[Qε,Qε+1]所对应的逼近精度;否则,重复步骤4.3-步骤4.4;直到|uε”-uε'|≤eps成立为止;eps表示逼近误差收敛控制精度。

步骤5、依次判断逼近精度um”,um+1”,…,ut”,…u2m-1”是否满足拟合精度u,若满足,则满足逼近精度所对应的分段区间即为拟合执行区间,满足逼近精度所对应的逼近多项式的系数即为拟合执行区间的拟合多项式系数;若不满足,则缩放不满足逼近精度所对应的分段区间中的缩放端点值,并返回步骤4执行,直到获得满足拟合精度u的m个拟合执行区间和m组拟合多项式系数;

步骤6、若sigmoid函数f(x)的自变量x在区间(b,+∞)内,则区间(b,+∞)作为拟合执行区间;且区间(b,+∞)所对应的拟合多项式的常数项系数为1、其余各项系数均为0;从而获得m+1个n阶数拟合多项式,完成sigmoid函数的拟合;

本实施例中,区间(13.816,+∞)所对应的5阶拟合多项式的常数项系数为1,区间(13.816,+∞)所对应的5阶拟合多项式的其余各项系数均为0;

经过步骤5和步骤6,获得本实例实施8个拟合执行区间(0,1],(1,2],(2,3],(3,5],(5,7],(7,11],(11,13.816],(13.816,+∞);从而完成sigmoid函数的拟合。

步骤7、将m+1个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;本实施例中,将8个拟合执行区间对应的多项式的系数固化在ROM中,并根据存储规律编写地址读取规律,构成系数查找表。

步骤8、根据n阶数拟合多项式,利用n个浮点加法器、2n-1个浮点乘法器和(n-2)×k个寄存单元设计多项式运算模块;并在多项式运算模块的输出端设计一个浮点减法器;k为浮点加法器、浮点乘法器和浮点减法器的流水级数;本实施例中,采用5个浮点加法器、9个浮点乘法器和6个reg寄存单元设计多项式运算模块,其中浮点运算器的流水级数均为2级。

步骤9、根据2m+2个拟合执行区间设计判断模块;由多项式运算模块、系数存储模块、浮点减法器和判断模块构成如图4所示的拟合硬件电路;图4中,data_i是输入的源操作数,data_o是输出的运算结果。

步骤10、图5所示,输入一个操作数ω作为拟合硬件电路的输入值;并利用判断模块判断操作数ω所在的拟合执行区间;

若ω∈(0,+∞),则从系数存储模块中读取操作数ω所在的拟合执行区间所对应的拟合多项式的系数;若ω∈(-∞,0],则从系数存储模块中读取操作数ω所在的拟合执行区间的对称区间所对应的拟合多项式的系数;

步骤12、将操作数ω和操作数ω所对应的拟合多项式的系数读入多项式运算模块中进行拟合计算,若ω∈(0,+∞),则获得的拟合结果即为拟合硬件电路的输出值;若ω∈(-∞,0],则将获得的拟合结果和1读入浮点减法器中,获得的计算结果即为拟合硬件电路的输出值。

本实施例方案二中所设计出的多项式运算模块如图6所示,采用的IEEE754标准单精度浮点数据格式,运算精度不低于10-6的5次拟合多项式硬件实现电路结构图,包括9个乘法器和5个加法器及6个reg寄存单元。所实现的多项式是p(x)=Ax5+Bx4+Cx3+Dx2+Ex+F,result是运算最终的输出结果,具体运算流程如下:

步骤a:源操作数x进入多项式运算模块,读取系数E,x进入乘法器Multi_1完成E*x运算并输出给下一级,x进入乘法器Multi_2完成x2运算并输出给下一级,x进入reg_1暂存两级,等待参与下一级运算,第一级2个乘法器并行完成运算,乘法器流水级数均设为2级;

步骤b:读取系数F和E*x进入加法器Add_1完成x5运算并将结果输出到下一级,读取系数D和x2进入乘法器Multi_3完成D*x2运算并输出给下一级,x2和x进入乘法器Multi_4完成x3运算并输出给下一级,上一级寄存的x进入reg_2继续暂存两级,等待参与下一级运算,第二级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤c:读取(E*x+F)和D*x2进入加法器Add_2完成(Dx2+E*x2+F)运算并输出给下一级,读取系数C和x3进入乘法器Multi_5完成C*x3运算并输出给下一级,读取x3和上一级寄存的x进入Multi_6完成x4运算并输出给下一级,上一级寄存的x进入reg_3继续暂存两级,等待参与下一级运算,第三级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤d:读取(Dx2+E*x2+F)和C*x3进入加法器Add_3完成(C*x3+Dx2+Ex+F)运算并输出给下一级,读取系数B和x4进入乘法器Multi_7完成B*x4运算并输出给下一级,读取x4和上一级寄存的x进入乘法器Multi_8完成x5运算并输出给下一级,第四级3个浮点运算器并行完成运算,流水级数均设置为2级;

步骤e:读取(C*x3+Dx2+Ex+F)和B*x4进入加法器Add_4完成(B*x4+C*x3+D*x2+E*x+F)运算并输出给下一级,读取系数A和x5进入乘法器Multi_9完成A*x5运算并输出给下一级,第五级2个浮点运算器并行完成运算,流水级数均设置为2级;

步骤f:加法器Add_5完成(A*x5+B*x4+C*x3+D*x2+E*x+F)运算并输出,加法器的流水级数设置为2级;

步骤g:若源操作数在区间(0,+∞)上,则上一级运算结果即为最终结果,直接输出;若源操作数在区间(-∞,0)上,则使用减法器Add_6将1与上一级运算结果做减法操作,运算结果即为最终结果,直接输出,减法器的流水级数设置为2级。

当完成以上各步骤后,就完成了本发明中的sigmoid函数拟合的处理。统计本例各个步骤的时钟周期数,每级运算流水级数为2,共7级,完成单个源操作数的拟合运算需要15个时钟周期,拟合精度不低于10-6,最大均方差不超过8.74×10-14,最大均方差不超过8.74×10-14。该拟合精度远高于当前现有技术中最优拟合精度,资源消耗更低,且数据格式为IEEE754单精度浮点格式,能够更好的应用于高精度高速实时运算中。

方案二系数存储模块存储较少的拟合多项式系数,降低了存储资源消耗,且减少了计算拟合多项式的工作量。由于在原点左右两侧采用相同的拟合多项式,因此关于原点对称的两个拟合区间对应的拟合精度相同,更便于做误差分析。虽然整个sigmoid函数的拟合运算速度满足实时高速运算的要求,但是由于增加了一个减法器和运算级数,因而增加了运算资源消耗,降低了运算速度。

综上,本发明利用列梅兹逼近算法,能够快速有效的完成sigmoid函数运算,实现了较高精度的拟合运算,使得对于IEEE754标准的单精度浮点运算,在高精度硬件实现要求下最大误差不超过10-6,且对于非IEEE754标准格式数据,采用这一结构也能获得同等技术指标要求下较当前现有技术更好的拟合精度。这个方法电路结构简单,规模有限,用较少数量的乘加器即可完成运算,大大减少了运算资源消耗,而且灵活性较高,保证运算的高速和并行性要求的同时,有效地提高了sigmoid函数拟合运算的精度和性能,解决了当前已有技术面临的瓶颈问题。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号