CN111178516A - 一种基于分段查找表的softmax函数计算方法及硬件系统 - Google Patents
一种基于分段查找表的softmax函数计算方法及硬件系统 Download PDFInfo
- Publication number
- CN111178516A CN111178516A CN201911268200.4A CN201911268200A CN111178516A CN 111178516 A CN111178516 A CN 111178516A CN 201911268200 A CN201911268200 A CN 201911268200A CN 111178516 A CN111178516 A CN 111178516A
- Authority
- CN
- China
- Prior art keywords
- lookup table
- data
- segmented
- index
- softmax function
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于分段查找表的softmax函数计算方法和硬件系统。该方法采用一种分段查找表的方式来实现softmax函数的计算,将‑9.9999999~‑9.9900000的数据都以1个‑9.99表示,以此类推分N段,这样查找表的存储数据个数为N*899个,实际中为了方便查找,将900~1023,1924~2047等地址空出来,则查找表也就扩充到N*1024,输入数据精度可达10‑N‑1,本发明远小于传统查找表大小,让查找表在硬件上的的存储资源大大降低。硬件系统采用Xilinx ZYNQ平台。该方法在保证输入数据与计算结果精度的前提下,相比于传统的查找表方法减小了查找表大小,也不需要其它非查找表方法里的硬件计算,降低了硬件的面积功耗需求。
Description
技术领域
本发明属于神经网络的硬件加速领域,涉及一种基于分段查找表的softmax函数计算方法及硬件系统。
背景技术
人工神经网络目前广泛应用于人工智能的应用当中,如图像识别、语音助手等。而随着神经网络规模的逐渐增大,其计算量也急剧上升,传统的通用芯片在处理复杂神经网络时受到了带宽与功耗的限制。因此,专用的神经网络加速硬件开始得到重视,其能耗更低,性能更高。而在传统的人工神经网络中,softmax函数被广泛应用于最后一层用于输出值的计算。因此,softmax函数的硬件实现方法也是神经网络加速硬件的一个重要组成部分。
从softmax函数的数学表达式中可以看出,在硬件实现时,其最主要的计算部分就在于e指数的计算。而对于在硬件上实现e指数计算来说,有以下几种方法:
1)查找表:这是最简单的一钟实现方法,实现将可能取到的e指数值计算好,保存在查找表中,硬件就用一部分资源比如ROM存储查找表。在实际计算过程中,直接根据输入数据就能查找到相应地址的e指数值。这种方法不消耗任何计算资源,但在精度要求高的情况下,查找表的面积就会比较大,会消耗较大的硬件存储资源。
2)多项式拟合:通过多项式函数拟合不同数据范围内的e指数函数,这种方法相比于简单的查找表方法来说,硬件只需存储多项式函数的几个系数值就可以计算比较大数据范围的e指数值,大大降低了硬件存储资源消耗。但是在实际计算过程中还需要进行多项式计算,在精度要求高时需要的多项式阶数高,从而会有大量的乘法运算,这不但会消耗硬件的计算资源,也增大了计算延时。
3)CORDIC算法:这是一种坐标旋转数字的计算方法,几乎没有硬件存储需求,但是计算过程比较复杂,运算时间长,精度也不够高。
4)文章“Efficient Hardware Architecture of Softmax Layer in DeepNeural Network”,DSP 2018提出了一种使用整数随机计算(Integral StochasticComputing)的方法计算e指数,降低了硬件的面积与功耗,但是最终的计算准确率仅96%,无法达到准确的要求。
发明内容
本发明的目的是为了在较大的输入精度与范围的情况下使得softmax函数的计算误差很小,同时降低硬件消耗的面积与功耗。其采用的技术方案是基于分段查找表的softmax函数的硬件实现,具体内容如下:
待计算的softmax函数的数学表达式如下:
本发明在计算softmax函数值时首先将输入数据经过预处理将最大值减去,根据简单的数学推导可知这样处理以后softmax计算结果不变,而数据都转换为了负数。
输入硬件的数据需为定点数,因此会先将预处理以后的数据定点化。定点化后的数据输入硬件后以其作为分段查找表的索引地址得到相应的e指数值,然后累加得到所有e指数的和,再将每个输入数据的e指数与和做除法就得到了计算的softmax结果。
区间为[-10,0]的分段e指数查找表地建立步骤如下:
1.将[-10,0]区间的数据划分为N段,对应N种数据类别:{(-10~-1),(-1~-0.1),…,(-1*10-(N-2)~-1*10-(N-1))},其中(-1*10-(i-2)~-1*10-(i-1))表示划分后所属的第i种数据类别;每一个数据仅保留三位有效数字;
2.将[-10,0]区间的数据定点化为十六位的定点数,定点数前六位的十进制数值对应其所属的数据类别,后十位由0000000000到1110000011从小到大依次表示三位有效数字100-999;
3.按照十六位定点数的十进制数值作为地址存储该定点数的真实结果,分段e指数查找表中的地址为1024*i+j(i≥0,0≤j≤1023),当0≤j≤899时对应exp(-(999-j)*10-i-2)的真实值,在900≤j≤1023时对应0;得到分段e指数查找表。
本发明公开了一种基于分段查找表的softmax函数的硬件系统,由PS端和PL端组成;所述PS端包含CPU和DDR,CPU工作时将待计算数据集预处理并定点化后写入DDR;所述PL端通过AXI总线对DDR进行读写操作,实现与PS端的数据交互;PL端还包括如下单元:
ROM:用于存储权利要求1得到的分段e指数查找表,在计算时根据输入得到对应的e指数值;
加法器:用于将计算得到的e指数值进行累加,得到softmax函数的分母;
除法器:用于将第二次读入数据的e指数值与累加得到的分母做除法得到softmax函数运算的最终结果;最终结果通过AXI总线传回DDR中并由CPU读取。
softmax函数的硬件实现过程为:系统采用Xilinx ZYNQ平台,分为含1个ARM核的PS端和作为硬件加速的PL端。PS端首先将计算数据存放在DDR中,然后发出控制信号给PL端,通知PL端数据的存放地址。PL接收到开始计算的控制信号后就通过AXI总线从PS端指定地址的DDR中读取数据,同时进行计算。计算时首先根据定点化的输入数据从分段查找表中获取相应的e指数值,并将它们累加得到softmax函数的分母,然后再读入一次数据,从查找表中获取e指数值后,与累加和一同送入除法器,最后得到的计算结果通过AXI总线传回给定地址的DDR中。
本发明具备的有益效果:
(1)传统查找表若需对输入数据识别到如0.000...XXX的(N+1)位小数,数据范围为(-10,0),则查找表所需存储数据个数为10*10N+1个(-9.9…99,-9.9…98,…,-0.0…02,-0.0…01),而分段查找表的方法则将-9.9999999~-9.9900000的数据都以1个-9.99表示,以此类推分N段,这样查找表的存储数据个数为N*899个,实际中为了方便查找,将900~1023,1924~2047等地址空出来,则查找表也就扩充到N*1024,输入数据精度可达10-N-1,本发明远小于传统查找表大小,让查找表在硬件上的的存储资源大大降低。
(2)相对于其它(多项式拟合、CORDIC)方法,其它方法需要做额外的计算,不但消耗硬件计算资源,还会增大计算延时。而本发明的查找表方法则可以由地址直接映射到对应数据,没有额外的计算。
附图说明
图1为输入数据定点化与分段查找表的对应关系示意图;
图2为硬件系统总体结构示意图。
具体实施方式
以下结合附图和实施例对本发明作进一步说明。
步骤一、建立计算区间为[-10,0]的分段e指数查找表:
1)将[-10,0]区间的数据划分为N段,对应N种数据类别:{(-10~-1),(-1~-0.1),…,(-1*10-(N-2)~-1*10-(N-1))},其中(-1*10-(i-2)~-1*10-(i-1))表示划分后所属的第i种数据类别;每一个数据仅保留三位有效数字。如表1所示,按预处理后数据的范围(-10~-1),(-1~-0.1),(-0.1~-0.01)等分为多段,每段数据在计算e指数时仅保留其3位有效数字,也就是说对于(-10~-1)的数据来说,e指数查找表仅保存exp(-9.99),exp(-9.98),…,exp(-1.00)这总共900个值,其中(-10~-9.99)的数据对应exp(-9.99),(-9.99~-9.98)的数据对应exp(-9.98),以此类推。查找表分的段数越多,能够表示的输入数据精度就越高,但查找表的面积也就越大。若共分N段,则输入数据精度可达10-N-1,查找表的大小为900N。
表1数据类别划分
类别 | 数据形式 | 数据范围 |
1 | X.XX | -10~-1.00 |
2 | 0.XXX | -1.00~-0.100 |
3 | 0.0XXX | -0.100~-0.0100 |
4 | 0.00XXX | -0.0100~-0.00100 |
5 | 0.000XXX | -0.00100~-0.000100 |
6 | 0.0000XXX | -0.000100~0.0000100 |
… | … | … |
2)将[-10,0]区间的数据定点化为十六位的定点数,定点数前六位的十进制数值对应其所属的数据类别,后十位由0000000000到1110000011从小到大依次表示三位有效数字100-999;
3)按照十六位定点数的十进制数值作为地址存储该定点数的真实结果,分段e指数查找表中的地址为1024*i+j(i≥0,0≤j≤1023),当0≤j≤899时对应exp(-(999-j)*10-i-2)的真实值,在900≤j≤1023时对应0;得到分段e指数查找表。下面阐述预处理后的数据定点化方法。由于已经预处理,数据均为非正数,因此可省略小数位。定点数据前6位表示数据所在段数,比如000000代表第一段,即(-10~-1),000001代表第二段,即(-1~-0.1),000010代表第三段,即(-0.1~-0.01),以此类推。定点数据后10位表示每段数据的有效数字,从0000000000(0)~1110000011(899)分别对应3位有效数字999~100,例如定点数据000001_00000000001对应有效数字998,而其属于第二段,则其真实值为-0.998。以这种定点数据值作为地址,真实数据的e指数值作为相应地址下的查找表存储值,这样就得到了所述的分段查找表。具体的输入数据定点化与分段查找表可见表2。
表2分段e指数查找表
步骤二、数据预处理:筛选待计算数据集中的最大值,将待计算数据集中的每一个数值减去最大值,然后保留三位有效数字,输入数据经预处理后为非正数,得到非正数数据集;
步骤三、将非正数数据集中的每一个数值定点化为16位的定点数,以定点数的十进制数值作为地址,输入数据定点化与分段e指数查找表的对应关系如图1所示,通过分段e指数查找表完成指数运算,累加所有定点数的运算结果,得到softmax函数运算结果的分母;
步骤四、再次读取数据,通过分段e指数查找表得到softmax函数运算结果的分子;
步骤五、将分子和分母相除,得到softmax函数运算的最终结果。
在上述计算方法的具体实施过程中,采用如图1所示的硬件系统。系统采用XilinxZYNQ平台,Zynq-7000 SoC系列集成ARM处理器的软件可编程性与FPGA的硬件可编程性。PS(Processing System)为处理系统,即ARM的SOC,为软件部分,本发明中用于控制计算开始结束以及数据的初步处理,PL(Programmable Logic)为可编程逻辑,即FPGA,为硬件部分,用于具体的数据计算。
实际的硬件工作流程如下:首先PS端的CPU将计算数据预处理并定点化以后存放到DDR内存中,然后发出控制信号给PL端,通知PL端数据的存放地址以及开始计算信号。PL端接收到控制信号后通过AXI总线从指定地址的DDR中读取数据,同时进行计算。PL端分ROM、Adder、Divider三部分。ROM事先存放好分段查找表,在计算时根据输入得到对应e指数值;Adder为加法器,在计算时累加e指数值得到softmax函数的分母;Divider为除法器,在计算时将第二次读入数据的e指数值与累加得到的分母做除法得到最后的计算结果。计算结果通过AXI总线传回DDR中并由CPU读取。
以上所述为本发明的一种实例而已,并不用以限制本发明,凡在本发明之精神和原则之内所做的任何修改、等同替换和改进等、均应包含在本发明的保护范围之内。
Claims (3)
1.一种基于分段查找表的softmax函数计算方法,其特征在于,包括如下步骤:
1)建立计算区间为[-10,0]的分段e指数查找表,所述分段e指数查找表由地址和真实值组成,建立步骤如下:
1.1)将[-10,0]区间的数据划分为N段,对应N种数据类别:{(-10~-1),(-1~-0.1),…,(-1*10-(N-2)~-1*10-(N-1))},其中(-1*10-(i-2)~-1*10-(i-1))表示划分后所属的第i种数据类别;每一个数据仅保留三位有效数字;
1.2)将[-10,0]区间的数据定点化为十六位的定点数,定点数前六位的十进制数值对应其所属的数据类别,后十位由0000000000到1110000011从小到大依次表示三位有效数字100-999;
1.3)按照十六位定点数的十进制数值作为地址存储该定点数的真实结果,分段e指数查找表中的地址为1024*i+j(i≥0,0≤j≤1023),当0≤j≤899时对应exp(-(999-j)*10-i-2)的真实值,在900≤j≤1023时对应0;得到分段e指数查找表;
2)数据预处理:筛选待计算数据集中的最大值,将待计算数据集中的每一个数值减去最大值,然后保留三位有效数字,得到非正数数据集;
3)将非正数数据集中的每一个数值定点化为十六位,以十六位的定点数的十进制数值作为地址,通过步骤S1得到的分段e指数查找表完成指数运算,累加所有定点数的运算结果,得到softmax函数运算结果的分母;
4)再次读取数据,通过分段e指数查找表得到softmax函数运算结果的分子;
5)将分子和分母相除,得到softmax函数运算的最终结果。
2.根据权利要求1所述的基于分段查找表的softmax函数计算方法,其特征在于,所述分段e指数查找表配置在存储器上。
3.一种基于分段查找表的softmax函数的硬件系统,其特征在于,所述硬件系统用于实现权利要求1所述的基于分段查找表的softmax函数计算方法,由PS端和PL端组成;所述PS端包含CPU和DDR,CPU工作时将待计算数据集预处理并定点化后写入DDR;所述PL端通过AXI总线对DDR进行读写操作,实现与PS端的数据交互;PL端还包括如下单元:
ROM:用于存储权利要求1得到的分段e指数查找表,在计算时根据输入得到对应的e指数值;
加法器:用于将计算得到的e指数值进行累加,得到softmax函数的分母;
除法器:用于将第二次读入数据的e指数值与累加得到的分母做除法得到softmax函数运算的最终结果;最终结果通过AXI总线传回DDR中并由CPU读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268200.4A CN111178516A (zh) | 2019-12-11 | 2019-12-11 | 一种基于分段查找表的softmax函数计算方法及硬件系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911268200.4A CN111178516A (zh) | 2019-12-11 | 2019-12-11 | 一种基于分段查找表的softmax函数计算方法及硬件系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111178516A true CN111178516A (zh) | 2020-05-19 |
Family
ID=70653857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911268200.4A Pending CN111178516A (zh) | 2019-12-11 | 2019-12-11 | 一种基于分段查找表的softmax函数计算方法及硬件系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111178516A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112051980A (zh) * | 2020-10-13 | 2020-12-08 | 浙江大学 | 一种基于牛顿迭代法的非线性激活函数计算装置 |
CN112069455A (zh) * | 2020-09-16 | 2020-12-11 | 成都启英泰伦科技有限公司 | 一种log-softmax函数硬件加速计算方法 |
CN113377332A (zh) * | 2021-05-28 | 2021-09-10 | 南京大学 | 一种基于线性分段的softmax硬件实现方法 |
CN113407793A (zh) * | 2021-07-13 | 2021-09-17 | 南京宁麒智能计算芯片研究院有限公司 | 一种softmax函数的硬件实现方法、模块、芯片和系统 |
WO2022168604A1 (ja) * | 2021-02-05 | 2022-08-11 | コニカミノルタ株式会社 | ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム |
CN115511047A (zh) * | 2022-06-09 | 2022-12-23 | 上海燧原科技有限公司 | Softmax模型的量化方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765713A (zh) * | 2014-12-20 | 2015-07-08 | 中国科学院西安光学精密机械研究所 | 基于分段查表三角函数实现fpga数字信号处理的方法 |
US20170133038A1 (en) * | 2015-11-11 | 2017-05-11 | Apptek, Inc. | Method and apparatus for keyword speech recognition |
CN109165006A (zh) * | 2018-08-07 | 2019-01-08 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN109669962A (zh) * | 2017-10-15 | 2019-04-23 | Gsi 科技公司 | 精确指数和准确softmax计算 |
-
2019
- 2019-12-11 CN CN201911268200.4A patent/CN111178516A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765713A (zh) * | 2014-12-20 | 2015-07-08 | 中国科学院西安光学精密机械研究所 | 基于分段查表三角函数实现fpga数字信号处理的方法 |
US20170133038A1 (en) * | 2015-11-11 | 2017-05-11 | Apptek, Inc. | Method and apparatus for keyword speech recognition |
CN109669962A (zh) * | 2017-10-15 | 2019-04-23 | Gsi 科技公司 | 精确指数和准确softmax计算 |
CN109165006A (zh) * | 2018-08-07 | 2019-01-08 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
Non-Patent Citations (1)
Title |
---|
张孟逸: "基于FPGA的卷积神经网络并行加速器设计" * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112069455A (zh) * | 2020-09-16 | 2020-12-11 | 成都启英泰伦科技有限公司 | 一种log-softmax函数硬件加速计算方法 |
CN112036561A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112036561B (zh) * | 2020-09-30 | 2024-01-19 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112051980A (zh) * | 2020-10-13 | 2020-12-08 | 浙江大学 | 一种基于牛顿迭代法的非线性激活函数计算装置 |
CN112051980B (zh) * | 2020-10-13 | 2022-06-21 | 浙江大学 | 一种基于牛顿迭代法的非线性激活函数计算装置 |
WO2022168604A1 (ja) * | 2021-02-05 | 2022-08-11 | コニカミノルタ株式会社 | ソフトマックス関数の近似計算装置、近似計算方法および近似計算プログラム |
CN113377332A (zh) * | 2021-05-28 | 2021-09-10 | 南京大学 | 一种基于线性分段的softmax硬件实现方法 |
CN113377332B (zh) * | 2021-05-28 | 2023-08-22 | 南京大学 | 一种基于线性分段的softmax硬件实现方法 |
CN113407793A (zh) * | 2021-07-13 | 2021-09-17 | 南京宁麒智能计算芯片研究院有限公司 | 一种softmax函数的硬件实现方法、模块、芯片和系统 |
CN115511047A (zh) * | 2022-06-09 | 2022-12-23 | 上海燧原科技有限公司 | Softmax模型的量化方法、装置、设备及介质 |
CN115511047B (zh) * | 2022-06-09 | 2024-03-08 | 上海燧原科技股份有限公司 | Softmax模型的量化方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111178516A (zh) | 一种基于分段查找表的softmax函数计算方法及硬件系统 | |
CN108701250B (zh) | 数据定点化方法和装置 | |
US10491239B1 (en) | Large-scale computations using an adaptive numerical format | |
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN109165006B (zh) | Softmax函数的设计优化及硬件实现方法及系统 | |
CN113609815A (zh) | 一种电路仿真优化方法、装置、计算机设备及存储介质 | |
CN112488297B (zh) | 一种神经网络剪枝方法、模型生成方法及装置 | |
CN113741858A (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
CN114612996A (zh) | 神经网络模型的运行方法、介质、程序产品以及电子设备 | |
Dong et al. | Hardware implementation of softmax function based on piecewise LUT | |
CN110337636A (zh) | 数据转换方法和装置 | |
CN111383157B (zh) | 图像处理方法、装置、车载运算平台、电子设备及系统 | |
CN117236236A (zh) | 一种芯片设计数据管理方法、装置、电子设备及存储介质 | |
CN116166583A (zh) | 一种数据精度的转换方法、装置、dma控制器及介质 | |
CN114169513B (zh) | 神经网络的量化方法、装置、存储介质及电子设备 | |
CN112686365A (zh) | 运行神经网络模型的方法、装置和计算机设备 | |
CN116148666A (zh) | 电池soc信号处理方法、装置、车辆、计算机可读存储介质及计算机程序产品 | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN113408724A (zh) | 模型压缩方法及装置 | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 | |
CN115511047B (zh) | Softmax模型的量化方法、装置、设备及介质 | |
EP3859551A1 (en) | Method and apparatus for establishing index for data | |
CN112181360A (zh) | 浮点数的乘法运算方法及计算机可读存储介质 | |
CN116303610A (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 |