一种用于执行多种超越函数运算的装置和方法与流程

文档序号:12886935阅读:241来源:国知局
一种用于执行多种超越函数运算的装置和方法与流程

本发明涉及超越函数运算技术领域,具体地涉及一种用于执行多种超越函数运算的装置和方法,尤其是用于执行三角、双曲、指数或对数函数运算的装置和方法。



背景技术:

三角、双曲、指数、对数等超越函数不仅常用于各类科学计算,也常用作多层人工神经网络中的激活函数。多层人工神经网络被广泛应用于模式识别、图像处理、函数逼近和优化计算等领域,多层人工神经网络在近年来由于其较高的识别准确度和较好的可并行性,受到学术界和工业界越来越广泛的关注。

一种支持上述各种超越函数计算的已知方法是使用通用处理器。该方法通过使用通用寄存器堆和通用功能部件执行通用指令来近似计算各种超越函数。该方法的缺点之一是无法与多层人工神经网络的专用装置整合,导致其他步骤无法享受此类装置的性能提升。另外,通用处理器需要把超越函数计算译码成一长列运算及访存指令序列,处理器前端译码带来了较大的功耗开销。

另一种在多层人工神经网络中计算超越函数的方法是线性近似。该方法通过将定义域分段并存储各段线性近似的系数来近似计算激活函数(其中不少是超越函数)。该方法的缺点是分段线性近似所能分割的段数有限,精度不能满足人工神经网络的发展的需要,更无法用于科学计算,图像处理等精度要求更高的用途。



技术实现要素:

(一)要解决的技术问题

有鉴于此,本发明的主要目的在于提供一种用于执行多种超越函数运算的装置和方法,以解决通用处理器方式开销过大和纯线性近似方式精度不足的问题,提高对各种超越函数运算的支持。

(二)技术方案

为达到上述目的,本发明提供了一种用于执行多种超越函数运算的装置,该装置包括前处理单元组、核心单元和后处理单元组,其中:

前处理单元组,用于将外部输入的自变量a变换为坐标x,y、角度z、其余信息k,以及决定核心单元采取的操作模式mode;

核心单元,用于对坐标x,y、角度z进行三角或双曲变换,得到变换后的坐标x′,y′、角度z′并输出给后处理单元组;

后处理单元组,用于根据前处理单元组输入的其余信息k和函数f,对核心单元输入的坐标x′,y′、角度z′进行变换得到输出结果c。

上述方案中,所述前处理单元组包括选择器1和处理器2,后处理单元组包括第一后处理单元4、第二后处理单元5和第三后处理单元6,其中选择器1接收外部输入的自变量a和函数f,判断应采取的四种不同操作,具体如下:

i、如果在输入或输出采用的规范下自变量a线性或二次近似的结果与真值各自用浮点数表示时误差不超过尾数最后一位,导致自变量a过小,则选择器1将自变量a和函数f直接输出给后处理单元组中的第一后处理单元4,第一后处理单元4根据函数f得出自变量a的线性近似式,并对自变量a进行加法及乘法得到输出结果c;

ii、如果自变量a不超出核心单元收敛域,能在有限步数内达到默认模式下角度z=0或向量模式下纵坐标y=0,自变量a能直接被核心单元3的相应模式接受,则选择器1根据函数f得出自变量a的坐标x,y、角度z和核心单元采取的模式mode,将x,y,z,mode输出给核心单元3,核心单元3基于模式mode对x,y,z进行三角或双曲变换,得到变换后的坐标x′,y′,角度z′并输出给后处理单元组中的第二后处理单元5,第二后处理单元5根据核心单元输出的坐标x′,y′、角度z′和函数f得到输出结果c;

iii、如果自变量a不能直接被核心单元3的相应模式接受,则选择器1将自变量a和函数f交给处理器2进行前处理,处理器2根据函数f对自变量a进行分解信息处理,得到坐标x,y、角度z、核心单元3采取的模式mode以及其余信息k,其中坐标x,y、角度z、核心单元3采取的模式mode与ii相同,坐标x,y、角度z、核心单元3采取的模式mode被输出给核心单元,并将其余信息k和函数f直接输出给后处理单元组中的第三后处理单元6;核心单元3基于模式mode对x,y,z进行三角或双曲变换,得到x′,y′,z′输出给后处理单元组中的第三后处理单元6;第三后处理单元6根据核心单元3输出的x′,y′,z′以及处理器2给出的k和函数f得到输出结果c;

iv、如果在输入或输出采用的规范下自变量a的真值超出浮点数表示的最大范围,则选择器1直接将自变量a和函数f输出。

上述方案中,所述iv中在输入或输出采用的规范下自变量a的真值超出浮点数表示的最大范围,是ieee754半精度浮点数下绝对值最大为(1024+1023)或1024×230-15=65504。

为达到上述目的,本发明还提供了一种用于执行多种超越函数运算的方法,该方法包括:

步骤1:选择器接收输入的自变量a和函数f,判断应采取的第i种、第ii种、第iii种或第iv种四种不同操作;

步骤2:处理器在采取第iii种操作时,对输入的自变量a和函数f进行乘法或移位变换使其能被核心单元接受,并记录变换信息k、sign供第三后处理单元所用,其中sign只在部分函数下有效;

步骤3:处理器在采取第ii种或第iii种操作时,核心单元在横坐标x、纵坐标y和角度z这3个数上通过加减和移位操作实现以下四种三角或双曲变换:

三角默认:(x,y,z)→(a(xcosz-ysinz),a(ycosz+xsinz),0)

双曲默认:(x,y,z)→(b(xcoshz+ysinhz),b(ycoshz+xsinhz),0)

上述公式中a和b是与所取迭代次数有关的常量,移位操作是乘2的幂;

步骤4a:处理器在采取第i种操作时,第一后处理单元根据输入函数f计算线性或二次近似并输出;

步骤4b:处理器在采取第ii种或第iii种操作时,第二后处理单元根据输入函数f和前处理单元组处理器提供的信息对核心单元的输出进行加减,乘常量,除法,移位操作,得到输出结果c,其中前处理单元组处理器提供的信息仅在第iii种操作有效。

(三)有益效果

本发明提供的这种用于执行多种超越函数运算的装置和方法,通过将求超越函数的值转换为求三角或双曲旋转变换的结果,采用迭代的方式保证每一步旋转的角度绝对值固定,转向过度时取反向旋转,不足时取正向旋转使得只需要存储一系列固定的系数,规定角度序列zi使得tanzi(双曲情况下为tanhzi)为2的幂,使它们与横纵坐标x,y的乘法可以通过更简单的移位实现,进而减少了变量之间相互乘法带来的时间或功耗浪费,又保证了达到要求的精度,可以实现各类三角函数、双曲函数、指数函数和对数函数的计算,解决了通用处理器方式开销过大和纯线性近似方式精度不足的问题,有效提高了对各种超越函数运算的支持。

附图说明

为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:

图1示出了根据本发明实施例的用于执行多种超越函数运算的装置的结构示意图。

图2示出了图1中核心单元在三角模式下迭代逼近所求三角函数关系的原理图。

图3示出了图1中核心单元在双曲模式下迭代逼近所求双曲函数关系的原理图。

图4示出了根据本发明实施例的用于执行多种超越函数运算的方法流程图。

表1示出了根据本发明实施例(16位浮点数下)各单元在各输入函数f和自变量a下的具体操作。这些运算能够主要以加减、乘常量和移位(乘除2的幂)实现,仅有少量除法和(二次近似时)低精度要求的乘法。若输入输出要求的精度不同,表1中的部分范围应做相应调整。

具体实施方式

根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。

图1示出了根据本发明实施例的用于执行多种超越函数运算的装置的结构示意图。如图1所示,该装置包括前处理单元组(1、2)、核心单元3和后处理单元组(4、5、6),其中:

前处理单元组,用于将外部输入的自变量a变换为坐标x,y、角度z、其余信息k,以及决定核心单元采取的操作模式mode;

核心单元3,用于对坐标x,y、角度z进行三角或双曲变换,得到变换后的坐标x′,y′、角度z′并输出给后处理单元组;

后处理单元组,用于根据前处理单元组输入的其余信息k和函数f,对核心单元输入的坐标x′,y′、角度z′进行变换得到输出结果c。

其中前处理单元组包括选择器1和处理器2,后处理单元组包括第一后处理单元4、第二后处理单元5和第三后处理单元6,均可以通过硬件集成电路(例如专用集成电路asic)实现。选择器1接收外部输入的自变量a和函数f,判断应采取的四种不同操作,具体如下:

i、如果在输入或输出采用的规范下自变量a线性或二次近似的结果与真值各自用浮点数表示时误差不超过尾数最后一位,导致自变量a过小,则选择器1将自变量a和函数f直接输出给后处理单元组中的第一后处理单元4,第一后处理单元4根据函数f得出自变量a的线性近似式,并对自变量a进行加法及乘法得到输出结果c;详见附表1;

ii、如果自变量a不超出核心单元收敛域,能在有限步数内达到默认模式下角度z=0或向量模式下纵坐标y=0,自变量a能直接被核心单元的相应模式接受,则选择器1根据函数f得出自变量a的坐标x,y、角度z和核心单元3采取的模式mode,将x,y,z,mode输出给核心单元3,核心单元3基于模式mode对x,y,z进行三角或双曲变换,得到变换后的坐标x′,y′,角度z′并输出给后处理单元组中的第二后处理单元5,第二后处理单元5根据核心单元输出的坐标x′,y′、角度z′和函数f得到输出结果c;

iii、如果自变量a不能直接被核心单元的相应模式接受,则选择器1将自变量a和函数f交给处理器2进行前处理,处理器2根据函数f对自变量a进行分解信息处理,得到坐标x,y、角度z、核心单元3采取的模式mode以及其余信息k,其中坐标x,y、角度z、核心单元3采取的模式mode与ii相同,坐标x,y、角度z、核心单元3采取的模式mode被输出给核心单元3,并将其余信息k和函数f直接输出给后处理单元组中的第三后处理单元6;核心单元3基于模式mode对x,y,z进行三角或双曲变换,得到x′,y′,z′输出给后处理单元组中的第三后处理单元6;第三后处理单元6根据核心单元3输出的x′,y′,z′以及处理器2给出的k和函数f得到输出结果c;

iv、如果在输入或输出采用的规范下自变量a的真值超出浮点数表示的最大范围,例如ieee754半精度浮点数下绝对值最大为(1024+1023)或1024×230-15=65504,则选择器1直接将自变量a和函数f输出(nan)。ieee754半精度(binary16)浮点数下各输入函数在情况i、ii、iii和iv的具体判断范围和四种情况下的操作见表1。

本发明实施例还提供了用于执行多种超越函数运算的方法,具体如图4所示,图4示出了根据本发明实施例的用于执行多种超越函数运算的方法流程图,包括以下步骤:

步骤1:选择器接收输入的自变量a和函数f,判断应采取的第i种、第ii种、第iii种或第iv种四种不同操作;

i、如果在输入或输出采用的规范下自变量a线性或二次近似的结果与真值各自用浮点数表示时误差不超过尾数最后一位,导致自变量a过小,则选择器将自变量a和函数f直接输出给后处理单元组中的第一后处理单元,第一后处理单元根据函数f得出自变量a的线性近似式,并对自变量a进行加法及乘法得到输出结果c;详见表1;

ii、如果自变量a不超出核心单元收敛域,能在有限步数内达到默认模式下角度z=0或向量模式下纵坐标y=0,自变量a能直接被核心单元的相应模式接受,则选择器根据函数f得出自变量a的坐标x,y、角度z和核心单元采取的模式mode,将x,y,z,mode输出给核心单元,核心单元基于模式mode对x,y,z进行三角或双曲变换,得到变换后的坐标x′,y′,角度z′并输出给后处理单元组中的第二后处理单元,第二后处理单元根据核心单元输出的坐标x′,y′、角度z′和函数f得到输出结果c;

iii、如果自变量a不能直接被核心单元的相应模式接受,则选择器将自变量a和函数f交给处理器进行前处理,处理器根据函数f对自变量a进行分解信息处理,得到坐标x,y、角度z、核心单元采取的模式mode以及其余信息k,其中坐标x,y、角度z、核心单元采取的模式mode与ii相同,坐标x,y、角度z、核心单元采取的模式mode被输出给核心单元,并将其余信息k和函数f直接输出给后处理单元组中的第三后处理单元;核心单元基于模式mode对x,y,z进行三角或双曲变换,得到x′,y′,z′输出给后处理单元组中的第三后处理单元;第三后处理单元根据核心单元输出的x′,y′,z′以及处理器给出的k和函数f得到输出结果c;

iv、如果在输入或输出采用的规范下自变量a的真值超出浮点数表示的最大范围,例如ieee754半精度浮点数下绝对值最大为(1024+1023)或1024×230-15=65504,则选择器直接将自变量a和函数f输出(nan)。ieee754半精度(binary16)浮点数下各输入函数在情况i、ii、iii和iv的具体判断范围和四种情况下的操作见表1。

步骤2:处理器在采取第iii种操作时,对输入的自变量a和函数f进行乘法或移位变换使其能被核心单元接受,并记录变换信息k、sign供第三后处理单元所用,其中sign只在部分函数下有效;各输入函数下处理器的具体操作示例见表1。

步骤3:处理器在采取第ii种或第iii种操作时,核心单元在横坐标x、纵坐标y和角度z这3个数上通过加减和移位操作实现以下四种三角或双曲变换:

三角默认:(x,y,z)→(a(xcosz-ysinz),a(ycosz+xsinz),0)

双曲默认:(x,y,z)→(b(xcoshz+ysinhz),b(ycoshz+xsinhz),0)

上述公式中a和b是与所取迭代次数有关的常量,移位操作是乘2的幂;该变换通过迭代逼近应当旋转的角度完成:

第i步旋转角度zi,正向或反向根据如下判断:默认模式下目标z=0,z>0时做正向旋转,z<0时做反向旋转;向量模式下目标y=0,y>0时做反向旋转,y<0时做正向旋转;

图2直观地显示了用一系列固定角度的三角变换逼近所求三角变换的原理(方便起见,每步放大横纵坐标1/coszi倍未表示)。图3直观地显示了用一系列固定角度的双曲变换逼近所求双曲变换的原理(方便起见,每步放大横纵坐标1/coshzi倍未表示)。

每一步迭代相当于正向或反向旋转zi并将横纵坐标放大1/coszi倍,其中在双曲模式下是放大1/coshzi倍:

三角正向:(x,y,z)→((x-ytanzi),(y+xtanzi),z-zi)

三角反向:(x,y,z)→((x+ytanzi),(y-xtanzi),z+zi)

双曲正向:(x,y,z)→((x+ytanhzi),(y+xtanhzi),z-zi)

双曲反向:(x,y,z)→((x-ytanhzi),(y-xtanhzi),z+zi)

为了能够实现仅用加减和移位实现每一步迭代并收敛,zi应当取如下序列:

三角:zi=arctan2-i,i=0,1,2,...

双曲:zi=arctanh2-j,j=i-k,当(3k+1-1)/2+k≤i≤(3k+2-1)/2+k+1,i=1,2,3,...

具体迭代次数,即i最大值,依所处理的浮点数精度灵活选定,选定最大迭代次数后即可计算前述常量各输入函数下上述四种模式的选择见表1。

步骤4a:处理器在采取第i种操作时,第一后处理单元根据输入函数f计算线性或二次近似并输出;各输入函数下第一后处理单元的具体操作见表1。

步骤4b:处理器在采取第ii种或第iii种操作时,第二后处理单元根据输入函数f和前处理单元组处理器提供的信息对核心单元的输出进行加减,乘常量,除法,移位操作,得到输出结果c,其中前处理单元组处理器提供的信息仅在第iii种操作有效。各输入函数下第二后处理单元的具体操作见表1。

通过上述描述可知,本发明提供的这种用于执行多种超越函数运算的装置和方法,通过将求超越函数的值转换为求三角或双曲旋转变换的结果,采用迭代的方式保证每一步旋转的角度绝对值固定,转向过度时取反向旋转,不足时取正向旋转使得只需要存储一系列固定的系数,规定角度序列zi使得tanzi(双曲情况下为tanhzi)为2的幂,使它们与横纵坐标x,y的乘法可以通过更简单的移位实现,进而减少了变量之间相互乘法带来的时间或功耗浪费,又保证了达到要求的精度,可以实现各类三角函数、双曲函数、指数函数和对数函数的计算,解决了通用处理器方式开销过大和纯线性近似方式精度不足的问题,有效提高了对各种超越函数运算的支持。

前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被具体化在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行某些操作。

在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,可对各实施例做出各种修改,而不背离所附权利要求所述的本发明的更广泛的精神和范围。相应地,说明书和附图应当被认为是说明性的,而不是限制性的。

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