CN113837365A - 实现sigmoid函数逼近的模型、FPGA电路及工作方法 - Google Patents
实现sigmoid函数逼近的模型、FPGA电路及工作方法 Download PDFInfo
- Publication number
- CN113837365A CN113837365A CN202111106238.9A CN202111106238A CN113837365A CN 113837365 A CN113837365 A CN 113837365A CN 202111106238 A CN202111106238 A CN 202111106238A CN 113837365 A CN113837365 A CN 113837365A
- Authority
- CN
- China
- Prior art keywords
- module
- data
- adder
- comparator
- output
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000004364 calculation method Methods 0.000 claims abstract description 20
- 230000011218 segmentation Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 description 62
- 238000013461 design Methods 0.000 description 11
- 238000002474 experimental method Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012886 linear function Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Geometry (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
实现sigmoid函数逼近的模型、FPGA电路、工作方法,能够在FPGA电路中实现sigmoid函数逼近时保证精度的前提下降低运算资源消耗。电路,其包括:输入数据模块(201)、比较器模块(202)、运算模块(203)、输出数据模块(204);输入数据模块(201)一方面进入比较器模块(202)进行逼近函数的分段判断,另一方面进入运算模块(203)进行逼近函数的计算;比较器模块(202)包括:绝对值生成单元(301)和比较器(302);运算模块(203)使用移位器,加法器以及乘法器来完成计算;输出数据模块(204)通过比较器模块输出的索引选择输出计算模块得到的结果。
Description
技术领域
本发明涉及集成电路设计的技术领域,尤其涉及一种实现sigmoid函数逼近的模型,对应的FPGA电路,以及实现sigmoid函数逼近的FPGA电路的工作方法,其在FPGA电路中实现sigmoid函数逼近时保证精度的前提下降低运算资源消耗。
背景技术
在实际生活中的很多领域,诸如实时图像处理、数字信号处理等方面,经常需要对非线性函数进行高速计算,尤其在近年来特别受欢迎的神经网络算法中更是包括了大量的非线性函数。sigmoid函数是被广泛应用的激活函数之一,高效实现sigmoid函数具有重要的研究意义。研究人员从软件和硬件两个方面实现sigmoid函数展开了大量的研究,相比于软件实现,硬件实现速度更快,然而,sigmoid函数如诸多的S型函数一样,在硬件实现过程中面临很多的挑战。因为此类函数都会包括指数运算以及除法运算等复杂的运算,这些运算在FPGA中难以直接实现,目前存在的很多硬件实现方法一方面使用了较多的乘法器和除法器,带来了大量的硬件资源消耗,另一方面,在精度等方面难以达到要求。因此,高效的非线性函数硬件实现方法成为研究人员关注的热点。
步骤100:设计逼近函数;
步骤101:判断逼近函数是否能很好的拟合sigmoid函数,是否满足精度要求,如果满足,则进入步骤102,如果不满足,则返回步骤100;
步骤102:设计sigmoid的逼近函数的硬件实现电路;
步骤103:将逼近函数的硬件电路分解成各个基本单元模块;
步骤104:判断在FPGA中实现的逼近函数是否满足精度、资源等性能要求,如果满足,则设计完成,如果不满足,则返回步骤102。
目前数字实现激活函数的主要经典方法有查找表法、泰勒级数展开法和分段拟合法。多项式拟合法拟合效果好,但是多项式拟合中会使用很多乘法器和加法器等资源,有限的FPGA资源不适合采用这种消耗大量资源的方法。查找表法实现方法简单,需要将之前计算好的结果保存在存储器中,通过访问存储器地址读取数值。查找表法具有灵活度高的优点,可以调整精度。但随着精度的提高,查找表将消耗大量的存储资源。由于上述两种方法均需要消耗大量资源,因此CORDIC算法被提出并应用于实现激活函数。CORDIC算法只需要使用加法和移位来计算非线性函数且具有灵活性强的优点,然而,随着系统精度要求的提高,CORDIC算法会导致很大的计算延迟。
为了解决这些问题,研究人员提出了分段线性近似和分段非线性近似方法,分段线性近似的算法质量,取决于如何将输入区间划分为合适的分段来获得期望的精度,不同的方案可能产生不同的精度和硬件性能。为了达到比较好的性能需要找到合适的分段方式,这是方案设计的难点和关键。对于分段非线性近似,因为其本身由非线性函数组成,不合理的函数设计可能会消耗大量的乘法器和加法器,导致电路面积过大以及工作频率低的问题。因此,亟需一种sigmoid函数逼近的模型,以兼顾资源消耗和精度。
发明内容
为克服现有技术的缺陷,本发明要解决的技术问题是提供了一种实现sigmoid函数逼近的模型,其能够在FPGA电路中实现sigmoid函数逼近时保证精度的前提下降低运算资源消耗。
这种实现sigmoid函数逼近的模型,其为公式(1)
本发明采用了一种区间(-4,4)中定义的二阶近似方案,可大量减少乘法资源的消耗,与其他二阶近似方案相比,它只需要一个乘法器,由公式可以看出,该分段非线性近似函数避免了使用指数函数,为了尽量减少使用乘法器和除法器,公式中采用的系数都可以通过移位获得,从而减少了硬件资源消耗,降低了功耗。
还提供了一种实现sigmoid函数逼近的模型的FPGA电路,其包括:输入数据模块(201)、比较器模块(202)、运算模块(203)、输出数据模块(204);
输入数据模块(201)一方面进入比较器模块(202)进行逼近函数的分段判断,另一方面进入运算模块(203)进行逼近函数的计算;比较器模块(202)包括:绝对值生成单元(301)和比较器(302);运算模块(203)使用移位器,加法器以及乘法器来完成计算;输出数据模块(204)通过比较器模块输出的索引选择输出计算模块得到的结果。
还提供了一种实现sigmoid函数逼近的模型的FPGA电路的工作方法,输入数据模块进入运算模块进行运算,运算模块使用二选一MUX来决定进入第一加法器的其中一个数据为1或者-1,第一移位器对输入数据右移两位,相当于除以4,此数据为第一加法器的其中一个数据,第一加法器的数据输入到乘法器中进行平方操作,运算结果进入第二移位器中右移一位,相当于除以2,此时数据作为一个区间的输出数据,该数据进入第二加法器成为另外一个输出数据;在计算完成后,通过比较器模块生成数据输出模块的索引;绝对值生成单元,当输入数据data的符号位为0时,输出数据本身,当符号位为1时,输出数据取反加一;经过绝对值生成单元后生成的数据被送入比较器单元中,输入数据的绝对值只进行一次比较就作为输出数据模块的索引;通过比较器模块生成的索引通过四选一的选择器进行数据输出。
本发明的设计电路架构简单,尽量减少资源消耗的同时保持较高的精度。在LSTM网络上进行了训练实验,实验表明,提出的二阶近似公式代替sigmoid函数应用于LSTM网络时,基本达到了同样的精度。
附图说明
图1示出了在FPGA电路中实现sigmoid函数逼近的步骤。
图2示出了根据本发明的实现sigmoid函数逼近的FPGA电路的结构示意图。
图3示出了根据本发明的实现sigmoid函数逼近的FPGA电路中比较器模块的结构示意图。
图4示出了根据本发明的实现sigmoid函数逼近的FPGA电路中输出数据模块的结构示意图。
图5示出了根据本发明的实现sigmoid函数逼近的FPGA电路中运算模块的结构示意图。
具体实施方式
本发明针对sigmoid函数采用分段非线性近似方法在FPGA上部署时面临的资源以及精度的问题提出了降低运算资源消耗的近似函设计方案,使得sigmoid激活函数能更好的应用到神经网络算法中去。
通过分析sigmoid函数曲线特点,针对分段非线性近似方法面临的消耗大量乘法及乘法资源的问题,提出一种降低运算资源消耗的分段非线性拟合sigmoid函数的表达式如公式(1)所示:
本发明采用了一种区间(-4,4)中定义的二阶近似方案,可大量减少乘法资源的消耗,与其他二阶近似方案相比,它只需要一个乘法器,由公式可以看出,该分段非线性近似函数避免了使用指数函数,为了尽量减少使用乘法器和除法器,公式中采用的系数都可以通过移位获得,从而减少了硬件资源消耗,降低了功耗。
如图2所示,还提供了一种实现sigmoid函数逼近的模型的FPGA电路,其包括:输入数据模块201、比较器模块202、运算模块203、输出数据模块204;
输入数据模块201一方面进入比较器模块202进行逼近函数的分段判断,另一方面进入运算模块203进行逼近函数的计算;比较器模块202包括:绝对值生成单元301和比较器302(如图3所示);运算模块203使用移位器,加法器以及乘法器来完成计算;输出数据模块204通过比较器模块输出的索引选择输出计算模块得到的结果(如图4所示)。
本发明的设计电路架构简单,尽量减少资源消耗的同时保持较高的精度。在LSTM网络上进行了训练实验,实验表明,提出的二阶近似公式代替sigmoid函数应用于LSTM网络时,基本达到了同样的精度。
优选地,如图5所示,所述运算模块包括:二选一MUX501、第一加法器503、乘法器504、第一移位器502、第二移位器505、第二加法器506;运算模块使用二选一MUX来决定进入第一加法器的其中一个数据为1或者-1,第一移位器对输入数据右移两位,相当于除以4,此数据为第一加法器的其中一个数据,第一加法器的数据输入到乘法器中进行平方操作,运算结果进入第二移位器中右移一位,相当于除以2,此时数据作为一个区间的输出数据,该数据进入第二加法器成为另外一个输出数据。
优选地,所述输出数据模块204通过比较器模块输出的索引选择输出结果,由于sigmoid逼近函数有四个分段,因此选用四选一的选择器。
还提供了一种实现sigmoid函数逼近的模型的FPGA电路的工作方法,由于sigmoid函数的分段非线性近似函数有四个分段,当输入数据小于-4时,输出为0,当输入数据大于4时,输出为1,因此在这两个区间内,不需要进行表达式计算,运算主要集中在(-4,0)和(0,4)两个区间。由公式可以看出,在这两个区间内,表达式的核心计算十分相近,可通过判断输入数据所在区间来决定核心计算中的正负号。输入数据模块201进入运算模块203进行运算,运算模块需要使用到二选一MUX501来决定进入加法器503的其中一个数据为1或者-1,移位器502对输入数据右移两位,相当于除以4,此数据为加法器503的其中一个数据,加法器503的数据输入到乘法器504中进行平方操作,运算结果进入移位器505中右移一位相当于除以2,此时数据可以作为一个区间的输出数据,该数据进入加法器506成为另外一个输出数据。在计算完成后,需要通过比较器模块202生成数据输出模块的索引。由公式可以看出,绝对值生成单元301的设计方法简单,当输入数据data的符号位为0时,输出数据本身,当符号位为1时,输出数据取反加一。经过绝对值生成单元301后生成的数据将被送入比较器单元302中,由于当输入数据大于0时,只有两个分段,因此输入数据的绝对值只需要进行一次比较即可作为输出数据模块的索引。由于sigmoid逼近函数有四个分段,因此通过比较器模块202生成的索引,通过采用四选一的选择器即可实现数据输出。
由于分段非线性近似方法是由非线性函数组成,不合理的函数设计可能会消耗大量的乘法器和加法器,导致电路面积过大以及工作频率低。为了解决这种问题,本文采用了一种区间(-4,4)中定义的二阶近似方案,可大量减少乘法资源的消耗,与其他二阶近似方案相比,它只需要一个乘法器,由公式可以看出,本文采用的分段非线性近似函数避免了使用指数函数,为了尽量减少使用乘法器和除法器,公式中采用的系数都可以通过移位获得,从而减少了硬件资源消耗,降低了功耗。本文提出的设计电路架构简单,尽量减少资源消耗的同时保持较高的精度。在LSTM网络上进行了训练实验,实验表明,提出的二阶近似公式代替sigmoid函数应用于LSTM网络时,基本达到了同样的精度。
与其他近似方法相比,分段非线性近似方法在功耗较小的情况下具有较高的性能。这种近似方法能以较低的实现代价得到最精确的结果。
以上所述,仅是本发明的较佳实施例,并非对本发明作任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属本发明技术方案的保护范围。
Claims (5)
2.根据权利要求1所述的实现sigmoid函数逼近的模型的FPGA电路,其特征在于:其包括:输入数据模块(201)、比较器模块(202)、运算模块(203)、输出数据模块(204);
输入数据模块(201)一方面进入比较器模块(202)进行逼近函数的分段判断,另一方面进入运算模块(203)进行逼近函数的计算;比较器模块(202)包括:绝对值生成单元(301)和比较器(302);运算模块(203)使用移位器,加法器以及乘法器来完成计算;输出数据模块(204)通过比较器模块输出的索引选择输出计算模块得到的结果。
3.根据权利要求2所述的FPGA电路,其特征在于:所述运算模块包括:二选一MUX、第一加法器、乘法器、第一移位器、第二移位器、第二加法器;运算模块使用二选一MUX来决定进入第一加法器的其中一个数据为1或者-1,第一移位器对输入数据右移两位,相当于除以4,此数据为第一加法器的其中一个数据,第一加法器的数据输入到乘法器中进行平方操作,运算结果进入第二移位器中右移一位,相当于除以2,此时数据作为一个区间的输出数据,该数据进入第二加法器成为另外一个输出数据。
4.根据权利要求3所述的FPGA电路,其特征在于:所述输出数据模块(204)通过比较器模块输出的索引选择输出结果,采用四选一的选择器。
5.根据权利要求4所述的FPGA电路的工作方法,其特征在于:输入数据模块进入运算模块进行运算,运算模块使用二选一MUX来决定进入第一加法器的其中一个数据为1或者-1,第一移位器对输入数据右移两位,相当于除以4,此数据为第一加法器的其中一个数据,第一加法器的数据输入到乘法器中进行平方操作,运算结果进入第二移位器中右移一位,相当于除以2,此时数据作为一个区间的输出数据,该数据进入第二加法器成为另外一个输出数据;在计算完成后,通过比较器模块生成数据输出模块的索引;绝对值生成单元,当输入数据data的符号位为0时,输出数据本身,当符号位为1时,输出数据取反加一;经过绝对值生成单元后生成的数据被送入比较器单元中,输入数据的绝对值只进行一次比较就作为输出数据模块的索引;通过比较器模块生成的索引通过四选一的选择器进行数据输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111106238.9A CN113837365A (zh) | 2021-09-22 | 2021-09-22 | 实现sigmoid函数逼近的模型、FPGA电路及工作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111106238.9A CN113837365A (zh) | 2021-09-22 | 2021-09-22 | 实现sigmoid函数逼近的模型、FPGA电路及工作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113837365A true CN113837365A (zh) | 2021-12-24 |
Family
ID=78960257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111106238.9A Pending CN113837365A (zh) | 2021-09-22 | 2021-09-22 | 实现sigmoid函数逼近的模型、FPGA电路及工作方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113837365A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114707110A (zh) * | 2022-06-07 | 2022-07-05 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN115983354A (zh) * | 2023-02-02 | 2023-04-18 | 大连理工大学 | 一种高精度可调整的通用激活函数实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108154224A (zh) * | 2018-01-17 | 2018-06-12 | 北京中星微电子有限公司 | 用于数据处理的方法、装置和非暂时性计算机可读介质 |
CN110058841A (zh) * | 2019-04-22 | 2019-07-26 | 南京大学 | 面向具有对称性的非线性函数通用计算装置和方法 |
US20200401873A1 (en) * | 2019-06-19 | 2020-12-24 | Neuchips Corporation | Hardware architecture and processing method for neural network activation function |
CN112734023A (zh) * | 2021-02-02 | 2021-04-30 | 中国科学院半导体研究所 | 应用于循环神经网络的激活函数的可重构电路 |
-
2021
- 2021-09-22 CN CN202111106238.9A patent/CN113837365A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108154224A (zh) * | 2018-01-17 | 2018-06-12 | 北京中星微电子有限公司 | 用于数据处理的方法、装置和非暂时性计算机可读介质 |
CN110058841A (zh) * | 2019-04-22 | 2019-07-26 | 南京大学 | 面向具有对称性的非线性函数通用计算装置和方法 |
US20200401873A1 (en) * | 2019-06-19 | 2020-12-24 | Neuchips Corporation | Hardware architecture and processing method for neural network activation function |
CN112734023A (zh) * | 2021-02-02 | 2021-04-30 | 中国科学院半导体研究所 | 应用于循环神经网络的激活函数的可重构电路 |
Non-Patent Citations (2)
Title |
---|
KAMEL ABDELOUAHAB等: "Why TanH is a hardware friendly activation function for CNNs", 《ICDSC 2017: PROCEEDINGS OF THE 11TH INTERNATIONAL CONFERENCE ON DISTRIBUTED SMART CAMERAS》, 5 September 2017 (2017-09-05), pages 199 * |
谢立红: "基于神经网络加速器的图像识别系统设计", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, no. 2019, 15 January 2019 (2019-01-15), pages 138 - 2925 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114707110A (zh) * | 2022-06-07 | 2022-07-05 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN114707110B (zh) * | 2022-06-07 | 2022-08-30 | 中科亿海微电子科技(苏州)有限公司 | 一种三角函数和双曲函数扩展指令计算装置及处理器核 |
CN115983354A (zh) * | 2023-02-02 | 2023-04-18 | 大连理工大学 | 一种高精度可调整的通用激活函数实现方法 |
CN115983354B (zh) * | 2023-02-02 | 2023-08-22 | 大连理工大学 | 一种高精度可调整的通用激活函数实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109828744B (zh) | 一种基于fpga的可配置浮点向量乘法ip核 | |
CN110688088B (zh) | 一种面向神经网络的通用非线性激活函数计算装置和方法 | |
CN105955706B (zh) | 一种除法器及除法运算方法 | |
CN113837365A (zh) | 实现sigmoid函数逼近的模型、FPGA电路及工作方法 | |
CN111581593B (zh) | 可配置重用的分段式查找表激活函数实现装置 | |
CN112596701B (zh) | 基于单边雅克比奇异值分解的fpga加速实现方法 | |
CN114666038B (zh) | 一种大位宽数据处理方法、装置、设备及存储介质 | |
CN115407965B (zh) | 一种基于泰勒展开的高性能近似除法器及误差补偿方法 | |
CN111382860A (zh) | 一种lstm网络的压缩加速方法及fpga加速器 | |
CN114996638A (zh) | 一种顺序架构的可配置快速傅里叶变换电路 | |
Rekha et al. | FPGA implementation of exponential function using cordic IP core for extended input range | |
Neelima et al. | FIR Filter design using Urdhva Triyagbhyam based on Truncated Wallace and Dadda Multiplier as Basic Multiplication Unit | |
CN117472329A (zh) | 一种利用dsp级联结构提高蒙哥马利模乘吞吐量的方法及系统 | |
CN111984226A (zh) | 一种基于双曲cordic的立方根求解装置及求解方法 | |
CN115062768A (zh) | 一种逻辑资源受限平台的Softmax硬件实现方法及系统 | |
CN111047037A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116719499A (zh) | 一种应用于5g最小二乘定位的自适应伪逆计算方法 | |
CN113377333B (zh) | 基于抛物线综合法求复数的n次开根号的硬件计算系统和方法 | |
CN115904507A (zh) | 面向cgra的多精度小面积simd运算系统、方法、介质及设备 | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
Dalmia et al. | Novel high speed vedic multiplier proposal incorporating adder based on quaternary signed digit number system | |
CN110489077B (zh) | 一种神经网络加速器的浮点乘法运算电路和方法 | |
Raghul et al. | Design and Implementation of Approximate Truncated adder using kogge stone adder for low power applications | |
CN205899527U (zh) | 一种除法器 | |
Hussain et al. | An area-efficient and high throughput hardware implementation of exponent function |
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 |