CN112685693B - 一种实现Softmax函数的设备 - Google Patents
一种实现Softmax函数的设备 Download PDFInfo
- Publication number
- CN112685693B CN112685693B CN202011622933.6A CN202011622933A CN112685693B CN 112685693 B CN112685693 B CN 112685693B CN 202011622933 A CN202011622933 A CN 202011622933A CN 112685693 B CN112685693 B CN 112685693B
- Authority
- CN
- China
- Prior art keywords
- input data
- module
- value
- parameter
- numerical value
- 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
Links
- 238000009825 accumulation Methods 0.000 claims abstract description 33
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000003062 neural network model Methods 0.000 abstract description 10
- 230000006870 function Effects 0.000 description 128
- 238000000034 method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明提供了一种实现Softmax函数的设备,接口模块获取用于实现Softmax函数的多个输入数据;转换器模块对每个输入数据进行逻辑运算,得到每个输入数据对应的第一参数和第二参数并将其存储至存储模块;指数运算模块对存储模块中的第一参数和第二参数进行指数运算和移位运算,得到每个输入数据的以自然常数为底的指数函数运算值并将其发送至存储模块和累加模块;累加模块累加所有指数函数运算值得到累加值;除法模块从存储模块中逐个获取指数函数运算值,计算各个指数函数运算值和累加值的比值,得到每个输入数据对应的概率值。通过硬件的方式实现Softmax函数,不需要占用CPU的计算资源,提高神经网络模型的运算速度。
Description
技术领域
本发明涉及深度学习技术领域,具体涉及一种实现Softmax函数的设备。
背景技术
归一化指数函数(Softmax函数)是将多个标量映射为一个概率分布的函数,通常被应用于神经网络等基于概率的多分类问题方法中。
目前通常采用软件求解的方式求解Softmax函数,由于神经网络模型的运算速度依赖于CPU的计算资源,而通过软件实现Softmax函数的求解则需要占用CPU的计算资源,因此目前求解Softmax函数的方式,降低神经网络模型的运算速度和占用CPU的计算资源。
发明内容
有鉴于此,本发明实施例提供一种实现Softmax函数的设备,以解决目前实现Softmax函数的方式存在的降低神经网络模型的运算速度等问题。
为实现上述目的,本发明实施例提供如下技术方案:
本发明实施例公开一种实现Softmax函数的设备,所述设备包括:接口模块、转换器模块、控制模块、累加模块、除法模块、指数运算模块和存储模块;
所述接口模块,用于获取用于实现Softmax函数的包含多个输入数据的向量,以及通过所述控制模块使能所述转换器模块后,将多个所述输入数据发送给所述转换器模块;
所述转换器模块,用于分别对每个所述输入数据进行逻辑运算,得到每个所述输入数据对应的第一参数和第二参数,以及将每个所述输入数据对应的所述第一参数和所述第二参数存储至所述存储模块后,通过所述控制模块使能所述指数运算模块;
所述指数运算模块,用于依次对所述存储模块中每个所述输入数据对应的所述第一参数和所述第二参数进行指数运算和移位运算,得到每个所述输入数据对应的以自然常数为底的指数函数运算值,以及将每个所述指数函数运算值存储至所述存储模块和发送给所述累加模块后,通过所述控制模块使能所述累加模块;
所述累加模块,用于累加所有所述指数函数运算值得到累加值,将所述累加值发送给所述除法模块后,通过所述控制模块使能所述除法模块;
所述除法模块,用于从所述存储模块中逐个获取所述指数函数运算值,并逐一计算每个所述指数函数运算值与所述累加值的比值,得到每个所述输入数据对应的概率值,并通过所述存储模块将每个所述输入数据的概率值发送给所述接口模块,使所述接口模块输出每个所述输入数据的概率值。
优选的,用于获取每个输入数据的第一参数和第二参数的所述转换器模块,包括:
第一乘法器,用于针对每个所述输入数据,计算所述输入数据和预设的第一数值的乘积得到第一乘积值,将所述第一乘积值的整数部分作为所述输入数据的第一参数,其中,所述输入数据为8位定点数,所述输入数据的高4位为整数位,所述第一数值为将1/ln2定点化后得到的18位定点数,所述第一数值的高1位为整数位,所述第一乘积值为26位定点数,所述第一乘积值的高5位为整数位;
第二乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第一乘积值的小数部分和预设的第二数值的乘积得到第二乘积值,将所述第二乘积值作为所述输入数据的第二参数,其中,所述第二数值为将ln2定点化后得到的15位定点数。
优选的,用于获取每个输入数据对应的以自然常数为底的指数函数运算值的所述指数运算模块,包括:
第一乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第二参数的高16位的平方值,并将所述平方值右移1位得到第三数值,以及将所述第三数值右移2位得到第四数值;
第一加法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第二参数的高16位和所述第三数值之和,得到第五数值;
第二乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第五数值的高16位和所述第四数值的高16位的乘积,得到第六数值;
第二加法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第六数值、所述第五数值的高16位和预设的第七数值之和,得到所述输入数据对应的所述第二参数取自然指数的近似结果,将所述近似结果左移所述第一参数位得到所述输入数据对应的以自然常数为底的指数函数运算值,所述第七数值为十六进制的0xFFFF。
优选的,获取每个输入数据对应的概率值的所述除法模块,包括:
除法器,用于计算所述累加值的倒数;
乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述指数函数运算值和所述累加值的倒数之间的乘积,得到所述输入数据对应的概率值。
优选的,所述接口模块具体通过AXI总线标准获取用于实现Softmax函数的包含多个输入数据的向量。
优选的,所述存储模块为随机存取存储器RAM。
基于上述本发明实施例提供的一种实现Softmax函数的设备,包括接口模块、转换器模块、控制模块、累加模块、除法模块、指数运算模块和存储模块;接口模块获取用于实现Softmax函数的包含多个输入数据的向量,并将多个输入数据发送给转换器模块;转换器模块对每个输入数据进行逻辑运算,得到每个输入数据对应的第一参数和第二参数并将其存储至存储模块;指数运算模块对存储模块中的第一参数和第二参数进行指数运算和移位运算,得到每个输入数据的以自然常数为底的指数函数运算值并将其发送至存储模块和累加模块;累加模块累加所有指数函数运算值得到累加值并将其发送给除法模块;除法模块从存储模块中逐个获取指数函数运算值,并计算各个指数函数运算值和累加值的比值,得到每个输入数据对应的概率值并通过存储模块和接口模块输出。通过硬件的方式实现Softmax函数,不需要占用CPU的计算资源,提高神经网络模型的运算速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种实现Softmax函数的设备的结构框图;
图2为本发明实施例提供的一种实现Softmax函数的设备的架构示意图;
图3为本发明实施例提供的一种实现Softmax函数的设备的另一结构框图;
图4为本发明实施例提供的获取第一参数和第二参数的运算逻辑示意图;
图5为本发明实施例提供的一种实现Softmax函数的设备的又一结构框图;
图6为本发明实施例提供的获取指数函数运算值的运算逻辑示意图;
图7为本发明实施例提供的实现Softmax函数的设备的应用示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
由背景技术可知,神经网络模型的应用过程中,通常采用软件求解的方式求解Softmax函数,但是通过软件实现Softmax函数的求解则需要占用CPU的计算资源,此种求解Softmax函数的方式会降低神经网络模型的运算速度。
因此,本发明实施例提供一种实现Softmax函数的设备,该设备包括接口模块、转换器模块、控制模块、累加模块、除法模块、指数运算模块和存储模块,对于用于实现Softmax函数的包含多个输入数据的向量,通过各个模块计算每个输入数据的概率值,即采用硬件的方式实现Softmax函数,不需要占用CPU的计算资源,以降低神经网络模型的运算速度。
可以理解的是,为更方便理解本发明实施例中所涉及的Softmax函数,通过以下内容对Softmax函数进行解释说明。
Softmax函数是将多个标量映射为一个概率分布的函数,其作用为将实值映射到(0,1)的区间内,比如对于包含n个输入数据的向量X,Softmax函数的定义如公式(1)。
通过上述公式可知,利用多个输入数据实现Softmax函数是指:计算得到每个输入数据对应的概率值(即计算得到上述的f(xi))。
参见图1,示出了本发明实施例提供的一种实现Softmax函数的设备的结构框图,该设备包括:接口模块100(以下简称接口模块)、转换器模块200(以下简称转换器模块)、控制模块300(以下简称控制模块)、累加模块400(以下简称累加模块)、除法模块500(以下简称除法模块)、指数运算模块600(以下简称指数运算模块)和存储模块700(以下简称存储模块);
接口模块,用于获取用于实现Softmax函数的包含多个输入数据的向量,以及通过控制模块使能转换器模块后,将多个输入数据发送给转换器模块。
在具体实现中,接口模块通过AXI(Advanced eXtensible Interface)总线标准获取用于实现Softmax函数的包含多个输入数据的向量,即接口模块所获取得到的包含多个输入数据的信号为AXI-Stream协议信号,接口模块将所获取的该AXI-Stream协议信号进行转换,将该AXI-Stream协议信号转换成能被控制模块和转换器模块处理的信号。
接口模块获取得到包含多个输入数据的向量之后,向控制模块发送使能信号(soft_start信号),使控制模块对转换器模块进行使能,即控制模块接收到接口模块发送的使能信号后,该控制模块向转换器模块发送使能信号(c_sart信号)。
可以理解的是,接口模块通过控制模块使能转换器模块之后,该接口模块将所获取的用于实现Softmax函数的多个输入数据发送给转换器模块,使转换器模块对该多个输入数据进行相关逻辑运算。
也就是说,接口模块获取得到多个输入数据后,利用转换器模块、累加模块、除法模块和指数运算模块对该多个输入数据进行相关处理,从而得到每个输入数据对应的概率值。
为更方便理解以下关于转换器模块、累加模块、除法模块和指数运算模块的数据处理过程,结合上述公式(1),通过以下内容对实现Softmax函数的过程进行解释说明。
为缩小利用以自然常数(e)为底的指数函数计算输入数据的范围,需要对多个输入数据进行压缩处理,通过公式(2)计算各个输入数据的以自然常数为底的指数函数运算值(即对输入数据进行exp运算)。
ex=2Qeq (2)
对公式(2)进行推导得到公式(3)。
在公式(2)和公式(3)中,Q为整数,q的取值范围为(-ln2,ln2),x表示输入数据。
可以理解的是,通过上述公式(2)和公式(3)可知,将输入数据压缩成取值范围为(-ln2,ln2)的q,先计算q的以自然常数为底的指数函数运算值,再对q对应的指数函数运算值进行移位(根据Q进行移位)即可得到输入数据对应的自然常数为底的指数函数运算值。
也就是说,针对每一个输入数据,在计算该输入数据对应的以自然常数为底的指数函数运算值时,结合上述公式(2)和公式(3)可知,只需先计算得到该输入数据对应的q和Q,再利用该输入数据的q和Q进行相关运算即可得到该输入数据的以自然常数为底的指数函数运算值。
转换器模块,用于分别对每个输入数据进行逻辑运算,得到每个输入数据对应的第一参数和第二参数,以及将每个输入数据对应的第一参数和第二参数存储至存储模块后,通过控制模块使能指数运算模块。
在具体实现中,对于每一个输入数据,转换器模块利用两个乘法器对该输入数据进行逻辑运算,得到该输入数据对应的第一参数(上述提及的Q)和第二参数(上述提及的q),并将该输入数据对应的第一参数和第二参数存储至存储模块中。
通过以上方式,转换器模块获取每个输入数据的第一参数和第二参数,并将每个输入数据的第一参数和第二参数存储至存储模块中。
可以理解的是,存储模块为随机存取存储器(Random Access Memory,RAM),同理,存储模块也可以是其它具有读写功能的存储设备,在此不做具体限定。
转换器模块在获取每个输入数据的第一参数和第二参数并将其存储至存储模块后,转换器模块向控制模块发送完成信号(C_end信号),控制模块以发送使能信号(exp_start)的方式对指数运算模块进行使能。
指数运算模块,用于依次对存储模块中每个输入数据对应的第一参数和第二参数进行指数运算和移位运算,得到每个输入数据对应的以自然常数为底的指数函数运算值,以及将每个指数函数运算值存储至存储模块和发送给累加模块后,通过控制模块使能累加模块。
可以理解的是,利用优化的泰勒展开近似计算输入数据的以自然常数为底的指数函数运算值,即先通过优化的泰勒有限项展开式的计算,对输入数据的第二参数(上述提及的q)进行取自然对数操作得到相应的指数函数运算值(也称为q取自然指数的近似结果eq),然后再对前述操作结果进行移位运算,从而得到输入数据的指数函数运算值。
优化的泰勒有限项展开式如公式(4)。
根据上述公式(4)的内容可知,对于每个输入数据,通过计算得到上述提及的A和B之后,即可计算得到该输入数据的第二参数对应的指数函数运算值(eq),再对该第二参数的指数函数运算值进行移位即可得到该输入数据对应的指数函数运算值。
在具体实现中,指数运算模块依次从存储模块中取出每个输入数据对应的第一参数和第二参数。针对每一个输入数据,该指数运算模块基于该输入数据的第一参数,利用乘法器和移位运算计算得到该输入数据对应的A和B,再利用乘法器和加法器处理该输入数据对应的A和B,即可得到第一参数对应的指数函数运算值,最后对该第一参数的指数函数运算值进行移位(基于第二参数移位)得到该输入数据对应的指数函数运算值。
需要说明的是,移位运算指的是硬件电路对数据进行除以2∧n运算或乘以2∧n运算,比如:将一数据向右移1位(n=1)是指将该数据除以2。
指数运算模块通过以上方式,运算得到每个输入数据的指数函数运算值,指数运算模块将每个输入数据的指数函数运算值发送至存储模块和累加模块之后,指数运算模块向控制模块发送完成信号(exp_end信号),使控制模块以发送使能信号(sum_start)的方式对累加模块进行使能。
累加模块,用于累加所有指数函数运算值得到累加值,将累加值发送给除法模块后,通过控制模块使能除法模块。
在具体实现中,累加模块接收到指数运算模块所发送的所有输入数据对应的以自然常数为底的指数函数运算值,累加模块将所有输入数据的指数函数运算值进行累加得到累加值。
累加模块将该累加值发送给除法模块,并向控制模块发送完成信号(sum_end信号),使控制模块以发送使能信号(div_start信号)的方式对除法模块进行使能。
除法模块,用于从存储模块中逐个获取指数函数运算值,并逐一计算每个指数函数运算值与累加值的比值,得到每个输入数据对应的概率值,并通过存储模块将每个输入数据的概率值发送给接口模块,使接口模块输出每个输入数据的概率值。
在具体实现中,除法模块接收到累加模块发送的累加值,除法模块从存储模块中逐个获取每个输入数据的指数函数运算值。针对每一个输入数据,除法模块计算该输入数据的指数函数运算值和该累加值的比值(指数函数运算值除以累加值),得到该输入数据对应的概率值。
通过上述方式,除法模块依次计算得到每个输入数据对应的概率中。
优选的,在另一具体实现中,除法模块中包含除法器和乘法器,除法模块在计算每个输入数据对应的概率值时,该除法器用于计算累加值的倒数(只需计算一次)。该乘法器用于针对每个输入数据,计算输入数据对应的指数函数运算值和累加值的倒数之间的乘积(指数函数运算值乘以累加值的倒数),得到输入数据对应的概率值。
除法模块计算得到每个输入数据对应的概率值之和,将每个输入数据的概率值存储至存储模块中,由该存储模块通过接口模块输出每个输入数据的概率值。
为更好理解上述本发明实施例图1中涉及的实现Softmax函数的设备的内容,通过图2示出的实现Softmax函数的设备的架构示意图进行举例说明,需要说明的是,图2仅用于举例说明。
图2中,IF为接口模块、Transitionmodule为转换器模块、Control unit为控制模块、sum为累加模块、Divide module为除法模块、exp module为指数运算模块600和RAM为存储模块。
可以理解的是,AXI-Stream为AXI-Stream协议信号,其中包含了多个输入数据,din为输入数据,dout为每个输入数据的概率值,x_Q为第一参数,x_q为第二参数,clk为时钟信号,后缀为start为各个模块对应的使能信号,后缀为end的为各个模块的完成信号,各模块的后缀为in的信号为该模块输出的数据。
在具体实现中,IF获取用于实现Softmax函数的包含多个输入数据的向量,并将该多个输入数据发送给转换器模块。
转换器模块计算得到每个输入数据的第一参数(x_Q)和第二参数(x_q),并将每个输入数据的第一参数和第二参数存储至存储模块中。
指数运算模块从存储模块中获取每个输入数据对应的第一参数和第二参数,并进行指数运算和移位运算后,得到每个输入数据对应的以自然常数为底的指数函数运算值,将每个输入数据对应的指数函数运算值发送至存储模块和累加模块。
累加模块累加所有的指数函数运算值得到累加值,将累加值发送给除法模块。
除法模块从存储模块中依次获取每个输入数据的指数函数运算值,并依次将每个指数函数运算值除以该累加值,得到每个输入数据的概率值。将每个概率值存储至存储模块中,存储模块通过IF将每个输入数据的概率值发送出去,从而实现通过硬件运算的方式利用多个输入数据实现Softmax函数。
在本发明实施例中,接口模块获取用于实现Softmax函数的多个输入数据。转换器模块对每个输入数据进行逻辑运算,得到每个输入数据对应的第一参数和第二参数并将其存储至存储模块。指数运算模块对存储模块中的第一参数和第二参数进行指数运算和移位运算,得到每个输入数据的以自然常数为底的指数函数运算值并将其发送至存储模块和累加模块。累加模块累加所有指数函数运算值得到累加值并将其发送给除法模块。除法模块从存储模块中逐个获取指数函数运算值,计算各个指数函数运算值和累加值的比值,得到每个输入数据对应的概率值。通过硬件的方式实现Softmax函数,不需要占用CPU的计算资源,提高神经网络模型的运算速度。
上述本发明实施例图1中提及的转换器模块获取每个输入数据的第一参数和第二参数,优选的,结合图1,参考图3,示出了本发明实施例提供的一种实现Softmax函数的设备的另一结构框图,用于获取每个输入数据的第一参数和第二参数的转换器模块200包括:第一乘法器201和第二乘法器202;
第一乘法器201,用于针对每个输入数据,计算输入数据和预设的第一数值的乘积得到第一乘积值,将第一乘积值的整数部分作为输入数据的第一参数,其中,输入数据为8位定点数,输入数据的高4位为整数位,第一数值为将1/ln2定点化后得到的18位定点数,第一数值的高1位为整数位,第一乘积值为26位定点数,第一乘积值的高5位为整数位。
在具体实现在,对于每一个输入数据,第一乘法器将该输入数据和预设的第一数值相乘,将所得到的第一乘积的整数部分作为该输入数据的第一参数。
通过以上方式,第一乘法器获取得到每个输入数据对应的第一参数。
第二乘法器202,用于针对每个输入数据,计算输入数据对应的第一乘积值的小数部分和预设的第二数值的乘积得到第二乘积值,将第二乘积值作为输入数据的第二参数,其中,第二数值为将ln2定点化后得到的15位定点数。
在具体实现中,对于每个输入数据,第二乘法器计算该输入数据对应的第一乘积值的小数部分和预设的第二数值的乘积,得到第二乘积值,该第二乘积值即为该输入数据的第二参数。
通过上述方式,第二乘法器获取得到每个输入数据的第二参数。
为更好理解上述关于获取每个输入数据的第一参数和第二参数的内容,以获取一个输入数据的第一参数和第二参数为例,通过图4示出的获取第一参数和第二参数的运算逻辑示意图进行解释说明。
输入数据x[7:0]为8位定点数,该输入数据的高4位为整数位,低4位为小数位。b[17:0]为将1/ln2定点化后得到的18位定点数(第一数值),该第一数值的高1位为整数位,低17位为小数位。a[14:0]为将ln2定点化后得到的15位定点数(第二数值)。
第一乘法器将x[7:0]和b[17:0]进行相乘,得到第一乘积值c[25:0],将该第一乘积值的整数部分(高5位)c[25:21]作为输入数据的第一参数Q[4:0]。
第二乘法器将第一乘积值的小数部分(低21位)c[20:0]与第二数值a[14:0]进行相乘,得到第二乘积值d[35:0],该第二乘积值即为该输入数据的第二参数q[35:0]。
上述本发明实施例图1提及的指数运算模块获取每个输入数据的指数函数运算值的内容,优选的,结合图1,参见图5,示出了本发明实施例提供的一种实现Softmax函数的设备的又一结构框图,用于获取每个输入数据对应的以自然常数为底的指数函数运算值的指数运算模块600包括:第一乘法器601、第一加法器602、第二乘法器603和第二加法器604;
第一乘法器601,用于针对每个输入数据,计算输入数据对应的第二参数的高16位的平方值,并将平方值右移1位得到第三数值,以及将第三数值右移2位得到第四数值。
在具体实现中,由前述内容可知,第二参数(q[35:0])为36位定点数,对于每个输入数据,第一乘法器计算该输入数据的第二参数的高16位的平方值,即计算q[35:20]*q[35:20],将计算得到的平方值右移1位(除以2∧1)得到第三数值,将该第三数值右移2位(除以2∧2)得到第四数值。
通过上述方式,第一乘法器计算得到每个输入数据对应的第三数值和第四数值。
第一加法器602,用于针对每个输入数据,计算输入数据对应的第二参数的高16位和第三数值之和,得到第五数值。
在具体实现中,对于每个输入数据,第一加法器计算该输入数据对应的第二参数的高16位和第三数值之和,得到该输入数据对应的第五数值。
通过上述方式,第一加法器计算得到每个输入数据对应的第五数值。
第二乘法器603,用于针对每个输入数据,计算输入数据对应的第五数值的高16位和第四数值的高16位的乘积,得到第六数值。
在具体实现中,对于每个输入数据,第二乘法器计算该输入数据对应的第五数值的高16位和第四数值的高16位之间的乘积,得到该输入数据对应的第六数值。
通过上述方式,第二乘法器计算得到每个输入数据对应的第六数值。
第二加法器604,用于针对每个输入数据,计算输入数据对应的第六数值、第五数值的高16位和预设的第七数值之和,得到输入数据对应的第二参数取自然指数的近似结果,将近似结果左移第一参数位得到输入数据对应的以自然常数为底的指数函数运算值。
需要说明的是,第七数值为0xFFFF,其中,0x表示十六进制。
在具体实现中,对于每个输入数据,计算该输入数据对应的第六数值、第五数值的高16位和预设的第七数值之间的和,得到该输入数据对应的第二参数取自然指数的近似结果(第二参数为q,该近似结果为eq),将该近似结果左移第一参数位(第一参数为Q),即将该近似结果乘以2∧Q得到该输入数据对应的以自然常数为底的指数函数运算值。
通过以上方式,第二加法器计算得到每个输入数据对应的以自然常数为底的指数函数运算值。
为更好理解上述关于获取每个输入数据的以自然常数为底的指数函数运算值的内容,以获取一个输入数据的指数函数运算值为例,通过图6示出的获取指数函数运算值的运算逻辑示意图进行解释说明。
复制一组第二参数的高16位q[35:20],第一乘法器将两组第二参数的高16位q[35:20]进行相乘,得到第二参数的高16位的平方值,将该平方值右移1位(>>1指示右移1位),取高32位得到第三数值A[31:0],将该第三数值右移2位(>>2)得到第四数值
第一加法器计算第二参数的高16位q[35:20]和第三数值A[31:0]之和,得到第五数值B[31:0]。
第二加法器计算第六数值、第五数值的高16位B[31:16]和第七数值(0xFFFF)之和,得到输入数据的第二参数取自然指数的近似结果(eq),将该近似结果左移第一参数位(第一参数为Q,Q<<指示左移Q位),即将该近似结果乘以2∧Q得到该输入数据对应的以自然常数为底的指数函数运算值(ex)。
可以理解的是,上述本发明实施例提及的实现Softmax函数的设备可在各类型载体上进行Softmax函数的求解,为更好解释如何应用上述提及的实现Softmax函数的设备,通过图7示出的实现Softmax函数的设备的应用示意图进行举例说明,需要说明的是,图7仅用于举例。
上述提及的实现Softmax函数的设备可应用在ZYNQ(Xilinx提供的FPGA芯片型号)器件中,该ZYNQ器件的内部分为PS(Process System)和PL(Programmable Logic)两部分,PL部分为可编程逻辑,在PL部分中应用实现Softmax函数的设备。PS部分为处理器系统,PS部分包含两个cortex A9的ARM核和总线接口,其中,PS部分和PL部分通过AXI总线进行数据交互。
需要说明的是,在图7中,Softmax IP即为上述本发明实施例提及的实现Softmax函数的设备。
在通过硬件实现Softmax函数的过程中,用户程序把输入的浮点类型数据序列转换为Softmax IP支持的8bit或16bit定点数据并依次存储至DDR3的某块区域中,可以理解的是,前述存储至该DDR3中的数据即为上述本发明实施例提及的用于实现Softmax函数的多个输入数据。
设置DMA控制器需要搬运数据和接收数据的内存起始地址和数据大小,该DMA控制器在不需要占用ARM上的CPU资源的情况下完成内存数据和PL数据的搬移。
DDR3由HP口通过AXI总线与PL中的DMA控制器进行数据交互,DMA控制器从DDR3中搬移出的输入数据以AXI总线标准的方式传输至该DMA控制器,再由该DMA控制器将所获取的输入数据传输给Softmax IP,使该Softmax IP基于所获取得到的输入数据进行Softmax函数的实现,具体如何实现Softmax函数的过程可参见上述本发明实施例图1至图6的内容,在此不再赘述。
可以理解的是,DMA控制器从DDR3中搬移出数据传输给Softmax IP时,需要完成内存映射到数据流的转换,反之,Softmax IP将数据传输给DMA控制器时需完成数据流到内存映射的转换。
Softmax IP实现Softmax函数后,即通过硬件运算得到每个输入数据的概率值后,Softmax IP将所得到的概率值传输给用户程序。
需要说明的是,硬件设备处理的数据类型通常为定点数据,用户所需要的数据通常为浮点数据,因此Softmax IP将数据类型为定点数据的概率值反馈给用户程序时,该用户程序需要将概率值转换为浮点数据并输出,从而得到用户所需的各个输入数据的概率值。
进一步需要说明的是,上述关于数据类型的转换仅用于举例说明,具体所需要的数据类型可根据实际情况进行转换,在此不做具体限定。
综上所述,本发明实施例提供一种实现Softmax函数的设备,该设备包括接口模块、转换器模块、控制模块、累加模块、除法模块、指数运算模块和存储模块,通过各个模块对用于实现Softmax函数的多个输入数据进行处理,得到各个输入数据对应的概率值,从而实现通过硬件的方式实现Softmax函数,不需要占用CPU的计算资源,提高神经网络模型的运算速度。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (6)
1.一种实现Softmax函数的设备,其特征在于,所述设备包括:接口模块、转换器模块、控制模块、累加模块、除法模块、指数运算模块和存储模块;
所述接口模块,用于获取用于实现Softmax函数的包含多个输入数据的向量,以及通过所述控制模块使能所述转换器模块后,将多个所述输入数据发送给所述转换器模块;
所述转换器模块,用于分别对每个所述输入数据进行逻辑运算,得到每个所述输入数据对应的第一参数和第二参数,以及将每个所述输入数据对应的所述第一参数和所述第二参数存储至所述存储模块后,通过所述控制模块使能所述指数运算模块;
所述指数运算模块,用于依次对所述存储模块中每个所述输入数据对应的所述第一参数和所述第二参数通过优化的泰勒有限项展开式,先进行指数运算和后进行移位运算,得到每个所述输入数据对应的以自然常数为底的指数函数运算值,以及将每个所述指数函数运算值存储至所述存储模块和发送给所述累加模块后,通过所述控制模块使能所述累加模块,优化的泰勒有限项展开式为:
所述累加模块,用于累加所有所述指数函数运算值得到累加值,将所述累加值发送给所述除法模块后,通过所述控制模块使能所述除法模块;
所述除法模块,用于从所述存储模块中逐个获取所述指数函数运算值,并逐一计算每个所述指数函数运算值与所述累加值的比值,得到每个所述输入数据对应的概率值,并通过所述存储模块将每个所述输入数据的概率值发送给所述接口模块,使所述接口模块输出每个所述输入数据的概率值。
2.根据权利要求1所述的设备,其特征在于,用于获取每个输入数据的第一参数和第二参数的所述转换器模块,包括:
第一乘法器,用于针对每个所述输入数据,计算所述输入数据和预设的第一数值的乘积得到第一乘积值,将所述第一乘积值的整数部分作为所述输入数据的第一参数,其中,所述输入数据为8位定点数,所述输入数据的高4位为整数位,所述第一数值为将1/ln2定点化后得到的18位定点数,所述第一数值的高1位为整数位,所述第一乘积值为26位定点数,所述第一乘积值的高5位为整数位;
第二乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第一乘积值的小数部分和预设的第二数值的乘积得到第二乘积值,将所述第二乘积值作为所述输入数据的第二参数,其中,所述第二数值为将ln2定点化后得到的15位定点数。
3.根据权利要求1所述的设备,其特征在于,用于获取每个输入数据对应的以自然常数为底的指数函数运算值的所述指数运算模块,包括:
第一乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第二参数的高16位的平方值,并将所述平方值右移1位得到第三数值,以及将所述第三数值右移2位得到第四数值;
第一加法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第二参数的高16位和所述第三数值之和,得到第五数值;
第二乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第五数值的高16位和所述第四数值的高16位的乘积,得到第六数值;
第二加法器,用于针对每个所述输入数据,计算所述输入数据对应的所述第六数值、所述第五数值的高16位和预设的第七数值之和,得到所述输入数据对应的所述第二参数取自然指数的近似结果,将所述近似结果左移所述第一参数位得到所述输入数据对应的以自然常数为底的指数函数运算值,所述第七数值为十六进制的0xFFFF。
4.根据权利要求1所述的设备,其特征在于,获取每个输入数据对应的概率值的所述除法模块,包括:
除法器,用于计算所述累加值的倒数;
乘法器,用于针对每个所述输入数据,计算所述输入数据对应的所述指数函数运算值和所述累加值的倒数之间的乘积,得到所述输入数据对应的概率值。
5.根据权利要求1所述的设备,其特征在于,所述接口模块具体通过AXI总线标准获取用于实现Softmax函数的包含多个输入数据的向量。
6.根据权利要求1所述的设备,其特征在于,所述存储模块为随机存取存储器RAM。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622933.6A CN112685693B (zh) | 2020-12-31 | 2020-12-31 | 一种实现Softmax函数的设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011622933.6A CN112685693B (zh) | 2020-12-31 | 2020-12-31 | 一种实现Softmax函数的设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112685693A CN112685693A (zh) | 2021-04-20 |
CN112685693B true CN112685693B (zh) | 2022-08-02 |
Family
ID=75453963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011622933.6A Active CN112685693B (zh) | 2020-12-31 | 2020-12-31 | 一种实现Softmax函数的设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112685693B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114201140B (zh) * | 2021-12-16 | 2022-08-16 | 千芯半导体科技(北京)有限公司 | 指数函数处理单元、方法和神经网络芯片 |
CN114610267A (zh) * | 2022-03-22 | 2022-06-10 | 奥比中光科技集团股份有限公司 | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 |
CN114648101B (zh) * | 2022-05-13 | 2022-08-12 | 杭州研极微电子有限公司 | 基于transformer结构的softmax函数量化实现方法和装置 |
CN115511047B (zh) * | 2022-06-09 | 2024-03-08 | 上海燧原科技股份有限公司 | Softmax模型的量化方法、装置、设备及介质 |
CN117520226B (zh) * | 2024-01-08 | 2024-03-26 | 四川赛狄信息技术股份公司 | 基于zynq平台的ps端ddr直接访问方法及系统 |
CN118133915B (zh) * | 2024-04-29 | 2024-08-13 | 深圳市九天睿芯科技有限公司 | 实现Softmax函数计算的电路、神经网络处理装置、芯片及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021537A (zh) * | 2018-01-05 | 2018-05-11 | 南京大学 | 一种基于硬件平台的softmax实现方式 |
CN109271202A (zh) * | 2018-09-28 | 2019-01-25 | 何安平 | 一种异步Softmax硬件加速方法及加速器 |
CN110135086A (zh) * | 2019-05-20 | 2019-08-16 | 合肥工业大学 | 计算精度可变的softmax函数硬件电路及其实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102013209657A1 (de) * | 2013-05-24 | 2014-11-27 | Robert Bosch Gmbh | FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen |
CN109726809B (zh) * | 2017-10-30 | 2020-12-08 | 赛灵思公司 | 深度学习softmax分类器的硬件实现电路及其控制方法 |
CN109165006B (zh) * | 2018-08-07 | 2021-08-06 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
-
2020
- 2020-12-31 CN CN202011622933.6A patent/CN112685693B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108021537A (zh) * | 2018-01-05 | 2018-05-11 | 南京大学 | 一种基于硬件平台的softmax实现方式 |
CN109271202A (zh) * | 2018-09-28 | 2019-01-25 | 何安平 | 一种异步Softmax硬件加速方法及加速器 |
CN110135086A (zh) * | 2019-05-20 | 2019-08-16 | 合肥工业大学 | 计算精度可变的softmax函数硬件电路及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112685693A (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112685693B (zh) | 一种实现Softmax函数的设备 | |
EP3557484B1 (en) | Neural network convolution operation device and method | |
CN111814957B (zh) | 神经网络运算方法及相关设备 | |
US20170185378A1 (en) | Division operation apparatus and method of the same | |
CN110852882A (zh) | 用于区块链网络的分组共识方法、装置、设备和介质 | |
CN113867685A (zh) | 一种乘法器转换方法、装置、设备及可读存储介质 | |
CN112035266A (zh) | 资源分配方法、装置、设备及存储介质 | |
CN107220025A (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
CN109993291B (zh) | 集成电路芯片装置及相关产品 | |
CN117014057A (zh) | 一种网络切片资源分配方法、装置及存储介质 | |
CN109582277A (zh) | 数据处理方法、装置及相关产品 | |
CN113420400B (zh) | 一种路由关系建立方法、请求处理方法、装置及设备 | |
CN114070901B (zh) | 基于多数据对齐的数据发送和接收方法、装置和设备 | |
CN111260070B (zh) | 运算方法、装置及相关产品 | |
US10958432B1 (en) | Prime number prediction | |
CN107360262B (zh) | 一种软件更新方法及装置 | |
CN111143355B (zh) | 数据处理方法及装置 | |
CN111258641B (zh) | 运算方法、装置及相关产品 | |
CN111260046B (zh) | 运算方法、装置及相关产品 | |
CN114069660A (zh) | 计算储能系统谐波的方法及设备 | |
CN115002133B (zh) | 基于多个接口的数据传输确定方法及装置 | |
JP2737933B2 (ja) | 除算装置 | |
CN112464157B (zh) | 向量排序方法与排序系统 | |
CN109558109A (zh) | 数据运算装置及相关产品 | |
CN117807082B (zh) | 哈希处理方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |