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

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

Info

Publication number
CN104484703B
CN104484703B CN201410850470.7A CN201410850470A CN104484703B CN 104484703 B CN104484703 B CN 104484703B CN 201410850470 A CN201410850470 A CN 201410850470A CN 104484703 B CN104484703 B CN 104484703B
Authority
CN
China
Prior art keywords
fitting
interval
polynomial
coefficient
precision
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410850470.7A
Other languages
English (en)
Other versions
CN104484703A (zh
Inventor
宋宇鲲
王浩
张多利
杜高明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huangshan Development Investment Group Co.,Ltd.
Original Assignee
Hefei University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hefei University of Technology filed Critical Hefei University of Technology
Priority to CN201410850470.7A priority Critical patent/CN104484703B/zh
Priority to CN201710416069.6A priority patent/CN107247992B/zh
Publication of CN104484703A publication Critical patent/CN104484703A/zh
Application granted granted Critical
Publication of CN104484703B publication Critical patent/CN104484703B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Abstract

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

Description

一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
技术领域
本发明涉及人工神经网络领域,具体地说是一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路。
背景技术
神经网络是人工神经网络的简称,神经网络的研究与应用也是当前的研究热点之一。神经网络的优势主要体现两个方面,一个是并行性,另一个就是强大的非线性信息处理与学习能力。目前,已经有多个神经网络模型的理论基础、工作原理达到了成熟的水平,使得进一步研究它们在信号处理、控制系统、语音识别等多个相关领域的应用成为热点。与软件模拟相比,基于硬件实现的神经网络具有处理速度快、高并行性,更容易达到神经网络实时运算的要求。
在用FPGA实现神经网络时,有两个难点:一个是数据的表示方式,另一个是神经网络激活函数的逼近方法,这两点决定了硬件资源利用效率的高低和逼近的精度。神经网络的激活函数有多种形式,Sigmoid函数是神经网络中使用最广泛的一种激励函数,实现难度也最大,是神经网络FPGA实现的一个重要环节。
当前,sigmoid函数的FPGA实现方法有:直接查找表,分段线性逼近,多项式逼近,CORDIC算法,遗传算法等。其中直接查找表法(ZhiliangNie,2012;AlexanderGomperts,2010)是将sigmoid运算结果存储在存储模块中,根据输入操作数,直接查找读取结果,这种方法需要耗费大量的存储资源,且硬件实现精度不高;分段线性逼近法(ManishPanicker,2012)在(-5,5)范围内,采用3段式分段线性逼近,采用32bit定点数格式,运算和存储资源较少,但运算精度较低,最大均方差为0.00187;CORDIC算法(Xi Chen,2006)采用CORDIC算法和查找表算法相结合,数据格式采用自定义16bit浮点格式输入和自定义32bit浮点格式输出,运算资源大,运算精度很低。遗传算法(BharatKishore Bharkhada,2004)在[0,8]范围内,采用基因遗传算法拟合整系数分段三次多项式,采用16位定点数格式,运算资源不高,存储资源较低,运算精度不高,绝对误差2.4376×10-3;多项式逼近算法最为常见,传统的泰勒级数展开法,需要消耗消耗大量的运算资源,且运算精度很低。较为经典的分段多项式逼近算法(Joao O.P.Pinto,2006)采用分段5阶多项式,存储资源低,运算资源不高,运算精度较高,最大误差为8×10-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+2个小区间的缩放端点值;由所述2m+2个小区间的端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m+1};Qt表示所述2m+2个小区间的端点值中第t个小区间的端点值;从而获得分段区间[Q0,Q1],[Q1,Q2],…,[Qt,Qt+1],…,[Q2m,Q2m+1];t=0,1,…,2m+1;
f(-x)=1-f(x) (2)
步骤4、将所述阶数n分别和2m+1个分段区间组成2m+1个向量组[n,Q0,Q1],[n,Q1,Q2],…,[n,Qt,Qt+1],…,[n,Q2m,Q2m+1];[n,Qt,Qt+1]表示第t个向量组;将所述2m+1个向量组依次代入列梅兹算法,从而依次获得所述分段区间各自所对应的逼近精度u0″,u1″,…,ut″,…u2m+1″;
步骤4.1、利用式(3)获得所述第t个向量组[n,Qt,Qt+1]所对应的n+2个切比薛夫多项式的交错点组以所述第t个交错点组作为第t个初始点集从而获得2m+1个向量组各自所对应的初始点集;
式(3)中,k=0,1,…,n+1;
步骤4.2、利用所述第t个初始点集求解式(4)所示的线性方程组的解从而根据所述解获得第t个初始的逼近多项式
步骤4.3、在第t个分段区间[Qt,Qt+1]内获得|f(x)-pt'(x)|为最大值时所对应的自变量将所述自变量来表征;
则用代替
则用代替
则用代替i=1,2,…,n;从而获得所述第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函数的拟合;
步骤7、将所述2m+2个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;
步骤8、根据所述n阶数拟合多项式,利用n个浮点加法器、2n-1个浮点乘法器和(n-2)×k个寄存单元设计多项式运算模块;l为所述浮点加法器和所述浮点乘法器的流水级数;
步骤9、根据所述2m+2个拟合执行区间设计判断模块;由所述多项式运算模块、系数存储模块和判断模块构成拟合硬件电路;
步骤10、输入一个操作数ω作为所述拟合硬件电路的输入值;并利用所述判断模块判断所述操作数ω所在的拟合执行区间;
步骤11、从所述系数存储模块中读取所述操作数ω所在的拟合执行区间所对应的拟合多项式的系数;
步骤12、将所述操作数ω和所述操作数ω所对应的拟合多项式的系数读入所述多项式运算模块中进行拟合计算,从而获得拟合结果作为所述拟合硬件电路的输出值。
与当前现有技术相比,本发明有益效果体现在:
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+2个小区间的缩放端点值;由2m+2个小区间的端点值依次构成端点集合Q={Q0,Q1,…,Qt,…Q2m+1};Qt表示2m+2个小区间的端点值中第t个小区间的端点值;从而获得分段区间[Q0,Q1],[Q1,Q2],…,[Qt,Qt+1],…,[Q2m,Q2m+1];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+1个分段区间组成2m+1个向量组[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+1个向量组各自所对应的初始点集;
式(3)中,k=0,1,…,n+1;
步骤4.2、利用第t个初始点集求解式(4)所示的线性方程组的解从而根据解获得第t个初始的逼近多项式
步骤4.3、在第t个分段区间[Qt,Qt+1]内获得|f(x)-pt'(x)|为最大值时所对应的自变量将自变量来表征;
则用代替
则用代替
则用代替i=1,2,…,n;从而获得第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组拟合多项式系数;
步骤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个寄存单元设计多项式运算模块;l为浮点加法器或浮点乘法器的流水级数;本实施例中,采用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+1个分段小区间组成m+1个向量组[n,Qm,Qm+1],[n,Qm+1,Qm+2],…,[n,Qε,Qε+1],…,[n,Q2m,Q2m+1];ε=m+1,…,2m+1,[n,Qε,Qε+1]表示第ε个向量组;将m+1个向量组依次代入列梅兹算法,从而依次获得分段区间各自所对应的逼近精度um+1″,um+1″,…,ut″,…u2m+1″;
步骤4.1、利用式(5)获得第ε个向量组[n,Qε,Qε+1]所对应的n+2个切比薛夫多项式的交错点组以第ε个交错点组作为第ε个初始点集从而获得m+1个向量组各自所对应的初始点集;
式(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+1″,um+1″,…,ut″,…u2m+1″是否满足拟合精度u,若满足,则满足逼近精度所对应的分段区间即为拟合执行区间,满足逼近精度所对应的逼近多项式的系数即为拟合执行区间的拟合多项式系数;若不满足,则缩放不满足逼近精度所对应的分段区间中的缩放端点值,并返回步骤4执行,直到获得满足拟合精度u的m+1个拟合执行区间和m+1组拟合多项式系数;
步骤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个寄存单元设计多项式运算模块;并在多项式运算模块的输出端设计一个浮点减法器;l为浮点加法器、浮点乘法器和浮点减法器的流水级数;本实施例中,采用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函数拟合运算的精度和性能,解决了当前已有技术面临的瓶颈问题。

Claims (1)

1.一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路,其特征是按如下步骤进行:
步骤1、根据给定的拟合精度u、运算资源和存储资源,确定拟合多项式的阶数n;
步骤2、根据所述拟合精度u,利用式(1)获得sigmoid函数f(x)的拟合区间[a,b];
f ( x ) = 1 1 + e - x f ( x ) - u = 0 x = b a = - b - - - ( 1 )
步骤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分别和2m个分段区间组成2m个向量组[n,Q0,Q1],[n,Q1,Q2],…,[n,Qt,Qt+1],…,[n,Q2m-1,Q2m];[n,Qt,Qt+1]表示第t个向量组;将所述2m个向量组依次代入列梅兹算法,从而依次获得所述分段区间各自所对应的逼近精度u0”,u1”,…,ut”,…u2m-1”;
步骤4.1、利用式(3)获得所述第t个向量组[n,Qt,Qt+1]所对应的n+2个切比薛夫多项式的交错点组以所述第t个交错点组作为第t个初始点集从而获得2m个向量组各自所对应的初始点集;
x k ( t ) = 1 2 [ Q t + 1 + Q t + ( Q t + 1 - Q t ) c o s ( n - k + 1 ) π n + 1 ] - - - ( 3 )
式(3)中,k=0,1,…,n+1;
步骤4.2、利用所述第t个初始点集求解式(4)所示的线性方程组的解从而根据所述解获得第t个初始的逼近多项式
f ( x k ( t ) ) - Σ j = 0 n ∂ j ( t ) ( x k ( t ) ) j = ( - 1 ) k u t ′ - - - ( 4 )
步骤4.3、在第t个分段区间[Qt,Qt+1]内获得|f(x)-pt'(x)|为最大值时所对应的自变量将所述自变量来表征;
则用代替
则用代替
则用代替i=1,2,…,n;从而获得所述第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函数的拟合;
步骤7、将所述2m+2个n阶数拟合多项式的系数固化在ROM中,形成系数存储模块;
步骤8、根据所述n阶数拟合多项式,利用n个浮点加法器、2n-1个浮点乘法器和(n-2)×k个寄存单元设计多项式运算模块;k为所述浮点加法器和所述浮点乘法器的流水级数;
步骤9、根据所述2m+2个拟合执行区间设计判断模块;由所述多项式运算模块、系数存储模块和判断模块构成拟合硬件电路;
步骤10、输入一个操作数ω作为所述拟合硬件电路的输入值;并利用所述判断模块判断所述操作数ω所在的拟合执行区间;
步骤11、从所述系数存储模块中读取所述操作数ω所在的拟合执行区间所对应的拟合多项式的系数;
步骤12、将所述操作数ω和所述操作数ω所对应的拟合多项式的系数读入所述多项式运算模块中进行拟合计算,从而获得拟合结果作为所述拟合硬件电路的输出值。
CN201410850470.7A 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路 Active CN104484703B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201410850470.7A CN104484703B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN201710416069.6A CN107247992B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410850470.7A CN104484703B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201710416069.6A Division CN107247992B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

Publications (2)

Publication Number Publication Date
CN104484703A CN104484703A (zh) 2015-04-01
CN104484703B true CN104484703B (zh) 2017-06-30

Family

ID=52759244

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710416069.6A Active CN107247992B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN201410850470.7A Active CN104484703B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710416069.6A Active CN107247992B (zh) 2014-12-30 2014-12-30 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路

Country Status (1)

Country Link
CN (2) CN107247992B (zh)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102359265B1 (ko) * 2015-09-18 2022-02-07 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 연산을 수행하는 방법
CN105893159B (zh) * 2016-06-21 2018-06-19 北京百度网讯科技有限公司 数据处理方法和装置
US10552732B2 (en) * 2016-08-22 2020-02-04 Kneron Inc. Multi-layer neural network
CN106682732B (zh) * 2016-12-14 2019-03-29 浙江大学 一种应用于神经网络的高斯误差函数电路
CN108205518A (zh) * 2016-12-19 2018-06-26 上海寒武纪信息科技有限公司 获取函数值的装置、方法及神经网络装置
US10997492B2 (en) * 2017-01-20 2021-05-04 Nvidia Corporation Automated methods for conversions to a lower precision data format
CN107480771B (zh) * 2017-08-07 2020-06-02 北京中星微人工智能芯片技术有限公司 基于深度学习的激活函数的实现方法及装置
CN107704422A (zh) * 2017-10-13 2018-02-16 武汉精测电子集团股份有限公司 一种基于可编程逻辑器件的并行计算方法及装置
CN108154224A (zh) * 2018-01-17 2018-06-12 北京中星微电子有限公司 用于数据处理的方法、装置和非暂时性计算机可读介质
US10977854B2 (en) 2018-02-27 2021-04-13 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration
US11687762B2 (en) * 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11586907B2 (en) 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
CN108537332A (zh) * 2018-04-12 2018-09-14 合肥工业大学 一种基于Remez算法的Sigmoid函数硬件高效率实现方法
CN109934336B (zh) * 2019-03-08 2023-05-16 江南大学 基于最优结构搜索的神经网络动态加速平台设计方法及神经网络动态加速平台
CN110070170A (zh) * 2019-05-23 2019-07-30 福州大学 基于mcu的pso-bp神经网络传感器校准系统及方法
CN110647718B (zh) * 2019-09-26 2023-07-25 中昊芯英(杭州)科技有限公司 数据处理方法、装置、设备及计算机可读存储介质
CN110837885B (zh) * 2019-10-11 2021-03-02 西安电子科技大学 一种基于概率分布的Sigmoid函数拟合方法
CN111191766B (zh) * 2020-01-02 2023-05-16 中昊芯英(杭州)科技有限公司 一种数据处理方法、装置、处理器及计算机可读存储介质
CN110796247B (zh) * 2020-01-02 2020-05-19 深圳芯英科技有限公司 一种数据处理方法、装置、处理器及计算机可读存储介质
CN111191779B (zh) * 2020-01-02 2023-05-30 中昊芯英(杭州)科技有限公司 一种数据处理方法、装置、处理器及计算机可读存储介质
US11507831B2 (en) 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration
CN111680782B (zh) * 2020-05-20 2022-09-13 河海大学常州校区 一种基于fpga的rbf神经网络激活函数实现方法
CN112528211B (zh) * 2020-12-17 2022-12-20 中电科思仪科技(安徽)有限公司 一种太阳能电池iv曲线的拟合方法
CN112859086B (zh) * 2021-01-25 2024-02-27 聚融医疗科技(杭州)有限公司 一种自适应的快速反正切系统、方法及超声成像装置
CN114567396A (zh) * 2022-02-28 2022-05-31 哲库科技(北京)有限公司 无线通信方法、非线性函数的拟合方法、终端及设备
CN114900257A (zh) * 2022-05-26 2022-08-12 Oppo广东移动通信有限公司 基带芯片、信道估计方法、数据处理方法及设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101527010A (zh) * 2008-03-06 2009-09-09 上海理工大学 人工神经网络算法的硬件实现方法及其系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100508402C (zh) * 2005-09-16 2009-07-01 北京中星微电子有限公司 一种aac或mp3解码器中的反量化方法
CN102708381B (zh) * 2012-05-09 2014-02-19 江南大学 融合最小二乘向量机回归学习思想的改进极限学习机
CN103809930B (zh) * 2014-01-24 2017-05-03 天津大学 一种双精度浮点数除法器的设计方法及除法器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101527010A (zh) * 2008-03-06 2009-09-09 上海理工大学 人工神经网络算法的硬件实现方法及其系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Field Programmable Gate Array (FPGA) Based Neural Network Implementation of Stator Flux Oriented Vector Control of Induction Motor Drive;Soares A M;《IEEE International Conference on Industrial Technology》;20071230;全文 *
赵凤石等.在契贝雪夫意义下列表函数的最佳多项式逼近.《常州工业技术学院学报》.1992,第5卷(第2期), *

Also Published As

Publication number Publication date
CN107247992B (zh) 2019-08-30
CN107247992A (zh) 2017-10-13
CN104484703A (zh) 2015-04-01

Similar Documents

Publication Publication Date Title
CN104484703B (zh) 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
CN106951211B (zh) 一种可重构定浮点通用乘法器
CN105844330A (zh) 神经网络处理器的数据处理方法及神经网络处理器
CN103176767A (zh) 一种低功耗高吞吐的浮点数乘累加单元的实现方法
CN101178645A (zh) 一种并行浮点乘加单元
CN109146067A (zh) 一种基于FPGA的Policy卷积神经网络加速器
CN107633298A (zh) 一种基于模型压缩的递归神经网络加速器的硬件架构
CN102184161B (zh) 基于余数系统的矩阵求逆装置及方法
CN107305484A (zh) 一种非线性函数运算装置及方法
CN105913118A (zh) 一种基于概率计算的人工神经网络硬件实现装置
CN110163350A (zh) 一种计算装置及方法
CN106682732B (zh) 一种应用于神经网络的高斯误差函数电路
CN106775577A (zh) 一种高性能非精确冗余二进制乘法器及其设计方法
CN103809931A (zh) 一种专用高速浮点指数运算器的设计
Wang et al. Design and implementation of bitwise parallel MSD square rooting in ternary optical computer
Zafar et al. Hardware architecture design and mapping of ‘Fast Inverse Square Root’algorithm
CN212569855U (zh) 一种激活函数的硬件实现装置
CN111930670B (zh) 异构智能处理量化装置、量化方法、电子设备及存储介质
Gavaskar et al. A fresh design of power effective adapted vedic multiplier for modern digital signal processors
CN111860792A (zh) 一种激活函数的硬件实现装置和方法
CN103699729B (zh) 模乘法器
Fulger et al. Random numbers from the tails of probability distributions using the transformation method
CN107203491A (zh) 一种用于fpga的三角脉动阵列结构qr分解装置
CN102253924B (zh) 开方运算的硬件实现方法以及开方运算器
TWM588288U (zh) 哥德巴赫猜想運算系統

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20201225

Address after: 245000 No. 50, Meilin Avenue, Huangshan Economic Development Zone, Anhui Province

Patentee after: Huangshan Development Investment Group Co.,Ltd.

Address before: Tunxi road in Baohe District of Hefei city of Anhui Province, No. 193 230009

Patentee before: Hefei University of Technology

TR01 Transfer of patent right