实现softmax的电路装置及生成softmax代码的方法制造方法及图纸

技术编号:30318255 阅读:19 留言:0更新日期:2021-10-09 23:21
本发明专利技术提供一种实现softmax的电路装置及生成softmax代码的方法,实现softmax的电路装置包括:最大值模块,配置成从输入值中选取最大值;第一差值计算模块,配置成计算各所述输入值和所述最大值的第一差值;第一指数计算模块,配置成计算所述第一差值的第一指数值;累加模块,配置成执行所述第一差值的第一指数值的累加获得累加值;对数计算模块,配置成计算所述累加值的对数值;第二差值计算模块,配置成计算所述第一差值和所述对数值的第二差值;第二指数模块,配置成计算所述第二差值的第二指数值。本发明专利技术在电路装置上部署softmax,以兼顾softmax计算的模型大小,计算速度,计算时延,以及计算精度。以及计算精度。以及计算精度。

【技术实现步骤摘要】
实现softmax的电路装置及生成softmax代码的方法


[0001]本专利技术涉及机器学习以及模式识别领域,尤其涉及一种实现softmax的电路装置及生成softmax代码的方法。

技术介绍

[0002]目前,在随着计算机与信息技术的不断演进,机器学习以及模式识别已成为近几年来最炙手可热的领域之一。各种深度学习模型也在大量的涌现,当模型在FPGA(可编程门阵列)上部署时,对模型的大小,以及推理速度,精度提出了很高的要求。现有的技术无法兼顾模型大小,计算速度,计算时延,以及计算精度。
[0003]由此,如何在电路装置上部署softmax,以兼顾softmax计算的模型大小,计算速度,计算时延,以及计算精度,是本领域亟待解决的技术问题。

技术实现思路

[0004]本专利技术为了克服上述现有技术存在的缺陷,提供一种实现softmax的电路装置及生成softmax代码的方法,以在电路装置上部署softmax,以兼顾softmax计算的模型大小,计算速度,计算时延,以及计算精度。
[0005]根据本专利技术的一个方面,提供一种实现softmax的电路装置,包括:
[0006]最大值模块,配置成从输入值中选取最大值;
[0007]第一差值计算模块,配置成计算各所述输入值和所述最大值的第一差值;
[0008]第一指数计算模块,配置成计算所述第一差值的第一指数值;
[0009]累加模块,配置成执行所述第一差值的第一指数值的累加获得累加值;
[0010]对数计算模块,配置成计算所述累加值的对数值;
[0011]第二差值计算模块,配置成计算所述第一差值和所述对数值的第二差值;
[0012]第二指数模块,配置成计算所述第二差值的第二指数值。
[0013]在本专利技术的一些实施例中,所述最大值模块配置成执行如下公式:
[0014][0015]其中,x
j
为所述输入值,x
max
为所述输入值中的最大值,
[0016]其中,所述最大值模块串行实现时,所述最大值模块仅包括一个比较器;
[0017]所述最大值模块并行实现时,所述最大值模块包括级联的多个比较器,所述比较器的层级数为log2(N)+1,其中,N为预设的并行度,1表示表示当前批次的最大值和前一批次的最大值做一次比较。
[0018]在本专利技术的一些实施例中,所述比较器为浮点比较器或者定点比较器。
[0019]在本专利技术的一些实施例中,所述第一指数计算模块采用分段线性函数计算所述第一差值的第一指数值,所述第一指数计算模块包括多个指数计算单元,每个所述指数单元将输入所述指数单元的值划分为多个区间以利用多个直线段来近似指数曲线,并使每个区
间关联预设的所述直线段的斜率和截距。
[0020]在本专利技术的一些实施例中,所述第二指数计算模块和所述第一指数计算模块采用相同的方式实现。
[0021]在本专利技术的一些实施例中,所述累加模块串行实现时,所述累加模块仅包括一个加法器;
[0022]所述累加模块并行实现时,所述累加模块包括级联的多个加法器,所述加法器的层级数为log2(N)+1,其中,N为预设的并行度,1表示表示当前批次的累加值和前一批次的累加值做一次加法计算。
[0023]在本专利技术的一些实施例中,所述第二差值计算模块包括第一子差值计算模块和第二子差值计算模块,
[0024]所述第一子差值计算模块配置成计算各所述输入值和所述最大值的第一差值;
[0025]所述第二子差值计算模块配置成计算所述第一子差值计算模块输出的所述第一差值和所述对数值的第二差值。
[0026]在本专利技术的一些实施例中,所述第一子差值计算模块的计算时间覆盖所述对数计算模块的计算时间。
[0027]在本专利技术的一些实施例中,所述最大值模块的计算时间形成第一计算阶段,所述第一差值计算模块、所述第一指数计算模块以及所述累加模块的计算时间形成第二计算阶段,所述对数计算模块、所述第二差值计算模块以及所述第二指数模块的计算时间形成第三计算阶段,所述第一计算阶段、所述第二计算阶段以及所述第三计算阶段的计算时间相互独立,各计算阶段内,多个计算模块的计算时间至少部分相互覆盖。
[0028]根据本专利技术的又一方面,还提供一种生成softmax代码的方法,所述电路装置为上述的电路装置,所述方法包括:
[0029]配置多个softmax生成器的参数;
[0030]使所述softmax生成器根据所述参数自动生成部署在电路装置上的softmax代码。
[0031]相比现有技术,本专利技术的优势在于:
[0032]本专利技术采用了对从并行度,位宽,准确度,存储大小的四个方面考虑不同的组合方式来生softmax实现代码,适配到电路装置上。该方法能够在限定的资源下保证softmax算子的计算速度和精度。
附图说明
[0033]通过参照附图详细描述其示例实施方式,本专利技术的上述和其它特征及优点将变得更加明显。
[0034]图1示出了根据本专利技术实施例的实现softmax的电路装置的示意图;
[0035]图2示出了根据本专利技术实施例的实现softmax的电路装置的时间线;
[0036]图3示出了根据本专利技术实施例的指数计算单元的示意图;
[0037]图4示出了根据本专利技术实施例的指数计算单元的示意图;
[0038]图5示出了根据本专利技术实施例的生成softmax代码的方法的示意图。
具体实施方式
[0039]现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
[0040]此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0041]在机器学习以及模式识别领域,softmax函数的计算应用广泛,目前,softmax通常按如下公式计算:
[0042][0043]其中,f(x)
i
为第i个输入值x
i
的softmax值,e为自然常数,n为输入值的总数量。
[0044]为数值稳定性,即考虑到数据上溢和下溢,对上述公式做了如下变换:
[0045][0046][0047]其中,x
max
是所有输入值中的最大值。
[0048]在对上述softmax函数的计算进行硬件化时,为了本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现softmax的电路装置,其特征在于,包括:最大值模块,配置成从输入值中选取最大值;第一差值计算模块,配置成计算各所述输入值和所述最大值的第一差值;第一指数计算模块,配置成计算所述第一差值的第一指数值;累加模块,配置成执行所述第一差值的第一指数值的累加获得累加值;对数计算模块,配置成计算所述累加值的对数值;第二差值计算模块,配置成计算所述第一差值和所述对数值的第二差值;第二指数模块,配置成计算所述第二差值的第二指数值。2.如权利要求1所述的实现softmax的电路装置,其特征在于,所述最大值模块配置成执行如下公式:其中,x
j
为所述输入值,x
max
为所述输入值中的最大值,其中,所述最大值模块串行实现时,所述最大值模块仅包括一个比较器;所述最大值模块并行实现时,所述最大值模块包括级联的多个比较器,所述比较器的层级数为log2(N)+1,其中,N为预设的并行度,1表示表示当前批次的最大值和前一批次的最大值做一次比较。3.如权利要求2所述的实现softmax的电路装置,其特征在于,所述比较器为浮点比较器或者定点比较器。4.如权利要求1所述的实现softmax的电路装置,其特征在于,所述第一指数计算模块采用分段线性函数计算所述第一差值的第一指数值,所述第一指数计算模块包括多个指数计算单元,每个所述指数单元将输入所述指数单元的值划分为多个区间以利用多个直线段来近似指数曲线,并使每个区间关联预设的所述直线段的斜率和截距。5.如权利要求4所述的实现softmax的电路装置,其特征在于,所述第二指数计算模块和所述第一指数计算模块采用相...

【专利技术属性】
技术研发人员:谭黎敏崔卫东赵钊
申请(专利权)人:上海西井信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1