System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机,特别涉及一种兼容线性和非线性激活函数的数字电路、相关设备及方法。
技术介绍
1、目前,激活函数已经成为神经网络中非常重要的一部分,随着各种类型的神经网络模型的产生,各种激活函数也孕育而生,各种激活函数可以在不同的应用场景中,取得良好的效果。
2、但是,在硬件设计领域,现有大多数激活函数的设计往往专注于某一种激活函数本身,寄望于在计算表达式的近似和精度上达到一种平衡来设计专有硬件加速模块,导致神经网络硬件加速器不能兼容多种激活函数。
技术实现思路
1、为解决上述技术问题,本申请实施例从各类激活函数的计算表达式中抽丝剥茧,确定出其中的关联性,进而确定出能使神经网络硬件加速器兼容多种激活函数的数字电路及数据处理方法,技术方案如下:
2、本申请一方面提供一种兼容线性和非线性激活函数的数字电路,包括:
3、线性和非线性激活函数判决模块,用于根据待计算的激活函数类型,从非线性激活模块和线性激活模块中选择一个参与对待计算数据进行计算;
4、所述非线性激活模块,用于如果所述激活函数类型为非线性激活函数类型,确定所述激活函数类型中非线性项对应的线性表征项,基于所述线性表征项和所述待计算数据确定线性表征值;
5、所述非线性激活模块,还用于基于所述激活函数类型,确定所述线性表征值对应的输出路径,如果所述输出路径对应于所述数字电路的输出端,基于所述线性表征值获得输出值,基于所述输出端输出所述输出值,如果所述输出路径对应于所述数字
6、所述线性激活模块,用于如果所述激活函数类型为线性激活函数类型,根据所述激活函数类型,确定所述待计算数据对应的第三算子和第四算子,将所述第三算子和所述第四算子输出给所述乘法器单元;
7、所述乘法器单元,用于对所述第一算子和所述第二算子进行乘法运算,或,对所述第三算子和所述第四算子进行乘法运算。
8、可选的,所述非线性激活模块,包括:查找表插值结果输出模块和非线性激活输出模块;
9、所述查找表插值结果输出模块,用于在查找表中获得所述待计算数据对应的斜率和截距,基于所述斜率和所述截距对应的线性表征式对所述待计算数据进行计算,得到线性表征值,所述查找表中包括基于所述激活函数类型中非线性项确定的多个插值区间与斜率和截距之间的对应关系。
10、可选的,所述查找表插值结果输出模块,包括:
11、查找表单元,用于如果所述激活函数类型属于sigmoid激活函数、loggy激活函数或tanh激活函数,在第一查找表中获得所述待计算数据对应的斜率和截距,或,如果所述激活函数类型属于elu激活函数或selu激活函数,在第二查找表中获得所述待计算数据对应的斜率和截距;
12、其中,所述第一查找表和所述第二查找表通过以下方式获得:
13、确定所述sigmoid激活函数、所述loggy激活函数和所述tanh激活函数对应的第一非线性指数项,所述第一非线性指数项用于确定所述sigmoid激活函数、所述loggy激活函数和所述tanh激活函数之间的关联关系;确定所述第一非线性指数项对应的多个第一插值区间;确定每个所述第一插值区间对应的斜率和截距,得到所述第一非线性指数项对应的第一查找表;
14、确定所述elu激活函数和所述selu激活函数对应的第二非线性指数项,所述第二非线性指数项用于表征所述elu激活函数和所述selu激活函数之间的相同部分;确定所述第二非线性指数项对应的多个第二插值区间;确定每个所述第二插值区间对应的斜率和截距,得到所述第二非线性指数项对应的第二查找表;
15、线性分段插值单元,用于基于所述斜率和所述截距对应的线性表征式对所述待计算数据进行计算,得到线性表征值。
16、可选的,所述非线性激活输出模块,包括:
17、sigmoid单元,用于如果所述激活函数类型属于所述sigmoid激活函数、所述loggy激活函数或所述tanh激活函数,基于所述sigmoid激活函数、所述loggy激活函数和所述tanh激活函数之间的关联关系和所述线性表征值获得输出值,通过所述数字电路的输出端输出所述输出值;
18、elu类mul_a产生单元,用于:
19、如果所述激活函数类型为所述elu激活函数,所述elu激活函数为且所述待计算数据不小于零,将1作为计算参数;
20、如果所述激活函数类型为且所述待计算数据小于零,将α作为计算参数;
21、如果所述激活函数类型为所述selu激活函数,所述selu激活函数为且所述待计算数据不小于零,将1.0507作为计算参数;
22、如果所述激活函数类型为所述selu激活函数,所述selu激活函数为且所述待计算数据小于零,将1.0507*1.6732作为计算参数。
23、本申请另一方面提供一种神经网络硬件加速器,包括:
24、如上述任意一项所述的兼容线性和非线性激活函数的数字电路。
25、本申请第三方面提供一种数据处理方法,基于兼容线性和非线性激活函数的数字电路,所述兼容线性和非线性激活函数的数字电路包括:线性和非线性激活函数判决模块、非线性激活模块、线性激活模块和乘法器单元,该数据处理方法包括:
26、基于所述线性和非线性激活函数判决模块根据待计算的激活函数类型,从所述非线性激活模块和所述线性激活模块中选择一个参与对待计算数据进行计算;
27、如果所述激活函数类型为非线性激活函数类型,基于所述非线性激活模块确定所述激活函数类型中非线性项对应的线性表征项,基于所述线性表征项和所述待计算数据确定线性表征值;
28、基于所述非线性激活模块基于所述激活函数类型,确定所述线性表征值对应的输出路径,如果所述输出路径对应于所述数字电路的输出端,基于所述线性表征值获得输出值,基于所述输出端输出所述输出值,如果所述输出路径对应于所述数字电路的乘法器单元,基于所述待计算数据,获得所述激活函数类型对应的计算参数,将所述计算参数作为第一算子,将所述线性表征值或所述激活函数类型中线性项对应的值作为第二算子输出给所述乘法器单元;
29、如果所述激活函数类型为线性激活函数类型,根据所述激活函数类型,基于所述线性激活模块确定所述待计算数据对应的第三算子和第四算子,将所述第三算子和所述第四算子输出给所述乘法器单元;
30、基于所述乘法器单元对所述第一算子和所述第二算子进行乘法运算,或,对所述第三算子和所述第四算子进行乘法运算。
31、可选的,基于所述非线性激活模块确定所述激活函数类型中非线性项对应的线性表征项,基于所述线性表征项和所述待计算数据确定线性表征值,包括:
<本文档来自技高网...【技术保护点】
1.一种兼容线性和非线性激活函数的数字电路,其特征在于,包括:
2.根据权利要求1所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述非线性激活模块,包括:查找表插值结果输出模块和非线性激活输出模块;
3.根据权利要求2所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述查找表插值结果输出模块,包括:
4.根据权利要求3所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述非线性激活输出模块,包括:
5.一种神经网络硬件加速器,其特征在于,包括:
6.一种数据处理方法,其特征在于,基于兼容线性和非线性激活函数的数字电路,所述兼容线性和非线性激活函数的数字电路包括:线性和非线性激活函数判决模块、非线性激活模块、线性激活模块和乘法器单元,该数据处理方法包括:
7.根据权利要求6所述的数据处理方法,其特征在于,基于所述非线性激活模块确定所述激活函数类型中非线性项对应的线性表征项,基于所述线性表征项和所述待计算数据确定线性表征值,包括:
8.根据权利要求7所述的数据处理方法,其特征在于,在
9.根据权利要求8所述的数据处理方法,其特征在于,基于所述激活函数类型,确定所述线性表征值对应的输出路径,如果所述输出路径对应于所述数字电路的输出端,基于所述线性表征值获得输出值,基于所述输出端输出所述输出值,包括:
...【技术特征摘要】
1.一种兼容线性和非线性激活函数的数字电路,其特征在于,包括:
2.根据权利要求1所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述非线性激活模块,包括:查找表插值结果输出模块和非线性激活输出模块;
3.根据权利要求2所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述查找表插值结果输出模块,包括:
4.根据权利要求3所述的兼容线性和非线性激活函数的数字电路,其特征在于,所述非线性激活输出模块,包括:
5.一种神经网络硬件加速器,其特征在于,包括:
6.一种数据处理方法,其特征在于,基于兼容线性和非线性激活函数的数字电路,所述兼容线性和非线性激活函数的数字电...
【专利技术属性】
技术研发人员:胡力,高峥,张诚,赵辉,吕毅,
申请(专利权)人:上海闪易半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。