CN110688088A - 一种面向神经网络的通用非线性激活函数计算装置和方法 - Google Patents

一种面向神经网络的通用非线性激活函数计算装置和方法 Download PDF

Info

Publication number
CN110688088A
CN110688088A CN201910944451.3A CN201910944451A CN110688088A CN 110688088 A CN110688088 A CN 110688088A CN 201910944451 A CN201910944451 A CN 201910944451A CN 110688088 A CN110688088 A CN 110688088A
Authority
CN
China
Prior art keywords
function
unit
neural network
calculating
linear
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.)
Granted
Application number
CN201910944451.3A
Other languages
English (en)
Other versions
CN110688088B (zh
Inventor
潘红兵
席挺
王宇宣
朱杏伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201910944451.3A priority Critical patent/CN110688088B/zh
Publication of CN110688088A publication Critical patent/CN110688088A/zh
Application granted granted Critical
Publication of CN110688088B publication Critical patent/CN110688088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种面向神经网络的通用非线性激活函数计算装置和方法。其计算装置包括乘法器、输入选择单元、寻址单元、查找表单元、FIFO单元、乘加运算单元、线性转换单元和输出选择单元。本发明提供的面向神经网络的通用非线性函数计算装置和方法,使用分段线性逼近方法对sigmoid函数进行分段线性拟合操作,利用sigmoid函数和tanh函数的数学关系,共用寻址单元和查找表资源,通过模式选择和相应的线性变化来实现神经网络中不同的非线性函数的运算,从而减少片上计算和存储资源的消耗。

Description

一种面向神经网络的通用非线性激活函数计算装置和方法
技术领域
本发明涉及一种面向神经网络的通用非线性激活函数计算装置和方法,属于神经网络和数字信号处理技术领域。
背景技术
近年来,神经网络在各个领域得到广泛运用,比如图像识别、语音处理等方面。在目前使用的神经网络中,每一层网络的结果都要通过激活函数的处理,以增加神经网络模型的非线性,激活函数的不断发展是深度网络不断进步完善的一个重要环节。当前在神经网络中使用较多的激活函数有sigmoid,tanh以及relu。
其中relu作为分段线性函数,在硬件上实现相对简单,而sigmoid和tanh是非线性函数,在硬件上实现相对复杂。目前在FPGA上实现方法主要包括查找表法、分段线性逼近法、泰勒级数展开发、Cordic算法、分段非线性逼近法。其中,分段线性逼近法和查找表法结合是目前较为流行的一种方法。但是当要求逼近的精度较高时,必须增加分段区间的个数,这样又会消耗大量的存储资源。尤其是如LSTM等网络同时有sigmoid和tanh两种激活函数,通常方法是两种函数分别进行分段,使用独立计算和存储资源,这样消耗资源更是成倍增加。
发明内容
针对以上现有技术中存在的缺陷,本发明基于sigmoid函数和tanh函数的数学关系,提出一种面向神经网络的通用非线性激活函数计算装置和方法,可以极大地节约计算和存储资源。
本发明的装置采用的技术方案如下:
一种面向神经网络的通用非线性激活函数计算装置,包括:
乘法器,用于对计算sigmoid函数的输入数据进行乘2运算,得到用于计算tanh函数时的输入数据;
输入选择单元,用于根据所计算的激活函数类型来选择输入数据,并输出数据;
寻址单元,用于比较输入选择单元的输出数据和sigmoid函数分段后对应的区间端点值,确定输入选择单元的输出数据所在的线性区间,从而给出查找表的地址索引值;
查找表单元,用于根据地址索引值来得到查找表中储存的sigmoid函数线性分段的参数值;
FIFO单元,用于对输入选择单元的输出数据进行延时缓冲;
乘加运算单元,用于根据FIFO单元缓存数据和查找表单元得到的参数值来计算乘加结果,得到装置计算sigmoid函数的输出数据;
线性转换单元,用于将乘加运算单元得到的输出数据做线性转换操作,得到装置计算tanh函数的输出数据;
输出选择单元,用于根据所计算激活函数的类型来选择输出数据。
进一步地,所述寻址单元采用并行结构,包括比较器和选择器,所述选择器采用减法器。
进一步地,所述查找表单元中包括sigmoid函数线性分段的斜率k和y轴截距h的参数值,且计算tanh函数与计算sigmoid函数共用查找表中的参数值。
进一步地,所述乘加运算单元包括乘法器和加法器。
进一步地,所述线性转换单元包括乘法器和减法器。
本发明一种面向神经网络的通用非线性激活函数计算方法,包括以下步骤:(1)对sigmoid函数进行分段线性拟合处理,获得分段端点值和分段线性函数的参数值;(2)比较输入数据和分段端点值的大小,根据比较结果确定地址索引值;当计算tanh函数时,将所述输入数据乘2;(3)根据所述地址索引值,利用查找法找出对应的分段线性函数的参数值;(4)将经延时缓存的输入数据和步骤(3)得到的参数值进行乘加运算,得出计算sigmoid函数的结果;(5)当计算tanh函数时,对步骤(4)的结果做线性转换操作,得到计算tanh函数的结果;(6)输入步骤(4)或步骤(5)的结果。
本发明使用分段线性逼近方法将sigmoid函数进行分段线性拟合操作,利用sigmoid函数和tanh函数的数学关系,共用地址索引单元和查找表资源,通过模式选择和相应的线性变化来进行神经网络中不同的非线性函数的运算,从而减少片上计算和存储资源的消耗。
附图说明
图1是本发明计算装置的整体架构图。
图2是本发明实施例中寻址单元的内部结构图。
具体实施方式
下面结合附图对本发明方案进行详细说明。
tanh函数和sigmoid函数的表达式如下所示:
Figure BDA0002223777440000021
由数学推导可知,sigmoid函数和tanh函数存在如下的数学关系:
tanh(x)=2σ(2x)-1
对sigmoid函数进行分段线性拟合操作,可得:
Figure BDA0002223777440000031
则tanh函数根据和sigmoid函数的数学关系,可分段线性拟合为:
Figure BDA0002223777440000032
图1是面向神经网络的通用非线性激活函数计算装置的整体架构图,该装置包括:依次连接地输入选择单元、寻址单元、查找表单元、乘加运算单元、线性转换单元和输出选择单元,FIFO单元连接在输入选择单元和乘加运算单元之间。其中,乘法器,用于对输入数据进行乘2运算,得到本装置用于计算tanh函数时的输入数据;输入选择单元,用于根据所计算激活函数的类型来选择输入数据;寻址单元,用于比较输入选择单元的输出数据和sigmoid函数分段后对应的区间端点值,确定输入选择单元的输出数据所在的线性区间,从而给出查找表的地址索引值;查找表单元,用于根据地址索引值来得到查找表中提前储存的sigmoid函数线性分段的参数值;FIFO单元,用于对输入选择单元的输出数据进行延时缓冲;乘加运算单元,由一个乘法器和一个加法器组成,用于根据FIFO单元缓冲数据和查找表中得到的参数值来计算出乘加结果,即本装置用于计算sigmoid函数时的输出数据;线性转换单元,由一个乘法器和一个减法器组成,用于将乘加运算单元得到的输出数据做线性转换操作,得到本装置用于计算tanh函数时的输出数据;输出选择单元,用于根据所计算激活函数的类型来选择输出数据。
图2是地址索引单元的内部结构图,地址索引单元采用完全并行结构,包括比较器、选择器,所述选择器采用减法器实现。假设sigmoid函数总共分为n段,把分段端点值存储在图2的寄存器组中,将输入数据同时与这些分段端点值进行比较。如果输入数据大于分段端点值,则结果为0,反之结果为1,将各比较数据组合为一个nbit的比较结果,则有以下n+1种情况:0…000,0…001,0…011,……,1…111,其中第一个端点值到第n个端点值是按从大到小的顺序排列的,所以当比较结果为0…000,表明输入数据比所有端点值都大,则最终的区间输出索引值为0;当比较结果为1…111,表示输入数据比所有端点值都小,则最终的区间输出索引值为n。比较结果中有多少个1,则最终的区间输出索引值就为多少。
1、假设本发明装置计算sigmoid函数在x=a处的值,计算过程如下:
(1)模式选择信号设为0,输入选择单元的输出数据为原始输入数据,即为a;
(2)将输入选择单元的输出数据输入寻址单元,与存在寄存器组中的分段端点值并行比较大小,根据比较结果得出地址索引值;
(3)根据寻址单元得到的地址索引值从查找表中找出输入数据对应的分段函数的参数值k和h;
(4)将经过FIFO缓存的输入数据和对应的参数值k和h送入乘加运算单元进行计算;
(5)模式选择信号为0,输出即为乘加运算单元输出。
2、假设本发明装置计算tanh函数在x=a处的值,计算过程如下:
(1)模式选择信号设为1,输入选择单元的输出数据为经过乘法器乘2后的输入数据,即为2a;
(2)将输入选择单元的输出数据输入寻址单元,与存在寄存器组中的分段端点值并行比较大小,根据比较结果得出地址索引值;
(3)根据寻址单元得到的地址索引值从查找表中找出输入数据对应的分段函数的参数值k和h;
(4)将经过FIFO缓存的输入数据和对应的参数值k和h送入乘加运算单元进行计算;
(5)将乘加单元计算结果送入线性转换单元,进行计算;
(6)模式选择信号为1,输出即为线性转换单元计算结果。

Claims (7)

1.一种面向神经网络的通用非线性激活函数计算装置,其特征在于,包括:
乘法器,用于对计算sigmoid函数的输入数据进行乘2运算,得到用于计算tanh函数时的输入数据;
输入选择单元,用于根据所计算的激活函数类型来选择输入数据;
寻址单元,用于比较输入选择单元的输出数据和sigmoid函数分段后对应的区间端点值,确定输入选择单元的输出数据所在的线性区间,从而给出查找表的地址索引值;
查找表单元,用于根据地址索引值来得到查找表中储存的sigmoid函数线性分段的参数值;
FIFO单元,用于对输入选择单元的输出数据进行延时缓冲;
乘加运算单元,用于根据FIFO单元缓存数据和查找表单元得到的参数值来计算乘加结果,得到装置计算sigmoid函数的输出数据;
线性转换单元,用于将乘加运算单元得到的输出数据做线性转换操作,得到装置计算tanh函数的输出数据;
输出选择单元,用于根据所计算激活函数的类型来选择输出数据。
2.根据权利要求1所述的一种面向神经网络的通用非线性激活函数计算装置,其特征在于,所述寻址单元采用并行结构,包括比较器和选择器,所述选择器采用减法器。
3.根据权利要求1所述的一种面向神经网络的通用非线性激活函数计算装置,其特征在于,所述查找表单元中包括sigmoid函数线性分段的斜率k和y轴截距h的参数值,且计算tanh函数与计算sigmoid函数共用查找表中的参数值。
4.根据权利要求1所述的一种面向神经网络的通用非线性激活函数计算装置,其特征在于,所述乘加运算单元包括乘法器和加法器。
5.根据权利要求1所述的一种面向神经网络的通用非线性激活函数计算装置,其特征在于,所述线性转换单元包括乘法器和减法器。
6.一种面向神经网络的通用非线性激活函数计算方法,其特征在于,包括以下步骤:
(1)对sigmoid函数进行分段线性拟合处理,获得分段端点值和分段线性函数的参数值;
(2)比较输入数据和分段端点值的大小,根据比较结果确定地址索引值;当计算tanh函数是,将所述输入数据乘2;
(3)根据所述地址索引值,利用查找法找出对应的分段线性函数的参数值;
(4)将经延时缓存的输入数据和步骤(3)得到的参数值进行乘加运算,得出计算sigmoid函数的结果;
(5)当计算tanh函数时,对步骤(4)的结果做线性转换操作,得到计算tanh函数的结果;
(6)输入步骤(4)或步骤(5)的结果。
7.根据权利要求6所述的一种面向神经网络的通用非线性激活函数计算方法,其特征在于,所述步骤(1)中,分段线性函数的参数值包括斜率k和在y轴上的截距h。
CN201910944451.3A 2019-09-30 2019-09-30 一种面向神经网络的通用非线性激活函数计算装置和方法 Active CN110688088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910944451.3A CN110688088B (zh) 2019-09-30 2019-09-30 一种面向神经网络的通用非线性激活函数计算装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910944451.3A CN110688088B (zh) 2019-09-30 2019-09-30 一种面向神经网络的通用非线性激活函数计算装置和方法

Publications (2)

Publication Number Publication Date
CN110688088A true CN110688088A (zh) 2020-01-14
CN110688088B CN110688088B (zh) 2023-03-28

Family

ID=69111457

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910944451.3A Active CN110688088B (zh) 2019-09-30 2019-09-30 一种面向神经网络的通用非线性激活函数计算装置和方法

Country Status (1)

Country Link
CN (1) CN110688088B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111525921A (zh) * 2020-05-15 2020-08-11 矽力杰半导体技术(杭州)有限公司 用于神经网络中信号转换的系统和方法
CN111814107A (zh) * 2020-07-10 2020-10-23 上海擎昆信息科技有限公司 一种高精度实现平方根倒数的计算系统及其计算方法
CN112051980A (zh) * 2020-10-13 2020-12-08 浙江大学 一种基于牛顿迭代法的非线性激活函数计算装置
CN112540946A (zh) * 2020-12-18 2021-03-23 清华大学 可重构处理器及其上多种神经网络激活函数计算方法
US20210334631A1 (en) * 2020-04-22 2021-10-28 SK Hynix Inc. Activation function processing method, activation function processing circuit, and neural network system including the same
CN116432711A (zh) * 2023-02-13 2023-07-14 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备
CN116506218A (zh) * 2023-06-25 2023-07-28 杭州世平信息科技有限公司 一种云环境下用户数据交互式计算隐私保护方法及系统
CN111581593B (zh) * 2020-04-21 2023-09-05 天津大学 可配置重用的分段式查找表激活函数实现装置
CN116720554A (zh) * 2023-08-11 2023-09-08 南京师范大学 一种基于fpga技术的多段线性拟合的神经元电路实现方法
CN117391164A (zh) * 2023-10-26 2024-01-12 上海闪易半导体有限公司 兼容线性和非线性激活函数的数字电路、相关设备及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0546624A1 (fr) * 1991-12-11 1993-06-16 Laboratoires D'electronique Philips S.A.S. Système de traitement de données opérant avec une fonction non linéaire par morceaux
CN107729984A (zh) * 2017-10-27 2018-02-23 中国科学院计算技术研究所 一种适用于神经网络激活函数的计算装置及方法
CN108921288A (zh) * 2018-05-04 2018-11-30 中国科学院计算技术研究所 神经网络激活处理装置和基于该装置的神经网络处理器
CN110058841A (zh) * 2019-04-22 2019-07-26 南京大学 面向具有对称性的非线性函数通用计算装置和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0546624A1 (fr) * 1991-12-11 1993-06-16 Laboratoires D'electronique Philips S.A.S. Système de traitement de données opérant avec une fonction non linéaire par morceaux
CN107729984A (zh) * 2017-10-27 2018-02-23 中国科学院计算技术研究所 一种适用于神经网络激活函数的计算装置及方法
CN108921288A (zh) * 2018-05-04 2018-11-30 中国科学院计算技术研究所 神经网络激活处理装置和基于该装置的神经网络处理器
CN110058841A (zh) * 2019-04-22 2019-07-26 南京大学 面向具有对称性的非线性函数通用计算装置和方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张智明等: "神经网络激活函数及其导数的FPGA实现", 《现代电子技术》 *

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111581593B (zh) * 2020-04-21 2023-09-05 天津大学 可配置重用的分段式查找表激活函数实现装置
US20210334631A1 (en) * 2020-04-22 2021-10-28 SK Hynix Inc. Activation function processing method, activation function processing circuit, and neural network system including the same
US11928575B2 (en) * 2020-04-22 2024-03-12 SK Hynix Inc. Activation function processing method, activation function processing circuit, and neural network system including the same
CN111525921A (zh) * 2020-05-15 2020-08-11 矽力杰半导体技术(杭州)有限公司 用于神经网络中信号转换的系统和方法
CN111525921B (zh) * 2020-05-15 2023-09-08 矽力杰半导体技术(杭州)有限公司 用于神经网络中信号转换的系统和方法
CN111814107A (zh) * 2020-07-10 2020-10-23 上海擎昆信息科技有限公司 一种高精度实现平方根倒数的计算系统及其计算方法
CN111814107B (zh) * 2020-07-10 2021-03-12 上海擎昆信息科技有限公司 一种高精度实现平方根倒数的计算系统及其计算方法
CN112051980A (zh) * 2020-10-13 2020-12-08 浙江大学 一种基于牛顿迭代法的非线性激活函数计算装置
CN112051980B (zh) * 2020-10-13 2022-06-21 浙江大学 一种基于牛顿迭代法的非线性激活函数计算装置
CN112540946A (zh) * 2020-12-18 2021-03-23 清华大学 可重构处理器及其上多种神经网络激活函数计算方法
CN116432711B (zh) * 2023-02-13 2023-12-05 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备
CN116432711A (zh) * 2023-02-13 2023-07-14 杭州菲数科技有限公司 SiLU激活函数的硬件实现方法、装置及计算设备
CN116506218A (zh) * 2023-06-25 2023-07-28 杭州世平信息科技有限公司 一种云环境下用户数据交互式计算隐私保护方法及系统
CN116506218B (zh) * 2023-06-25 2023-08-29 杭州世平信息科技有限公司 一种云环境下用户数据交互式计算隐私保护方法及系统
CN116720554B (zh) * 2023-08-11 2023-11-14 南京师范大学 一种基于fpga技术的多段线性拟合的神经元电路实现方法
CN116720554A (zh) * 2023-08-11 2023-09-08 南京师范大学 一种基于fpga技术的多段线性拟合的神经元电路实现方法
CN117391164A (zh) * 2023-10-26 2024-01-12 上海闪易半导体有限公司 兼容线性和非线性激活函数的数字电路、相关设备及方法
CN117391164B (zh) * 2023-10-26 2024-05-03 上海闪易半导体有限公司 兼容线性和非线性激活函数的数字电路、相关设备及方法

Also Published As

Publication number Publication date
CN110688088B (zh) 2023-03-28

Similar Documents

Publication Publication Date Title
CN110688088B (zh) 一种面向神经网络的通用非线性激活函数计算装置和方法
Namin et al. Efficient hardware implementation of the hyperbolic tangent sigmoid function
US10929746B2 (en) Low-power hardware acceleration method and system for convolution neural network computation
WO2017185412A1 (zh) 一种支持较少位数定点数的神经网络运算的装置和方法
CN110533164B (zh) 一种面向卷积神经网络加速器的Winograd卷积拆分方法
CN111581593B (zh) 可配置重用的分段式查找表激活函数实现装置
CN111240746B (zh) 一种浮点数据反量化及量化的方法和设备
CN111984227B (zh) 一种针对复数平方根的近似计算装置及方法
CN110058841B (zh) 面向具有对称性的非线性函数通用计算装置和方法
CN112051980B (zh) 一种基于牛顿迭代法的非线性激活函数计算装置
CN111310890A (zh) 深度学习模型的优化方法、装置及终端设备
US11615607B2 (en) Convolution calculation method, convolution calculation apparatus, and terminal device
US11704543B2 (en) Neural network hardware acceleration with stochastic adaptive resource allocation
CN111738427B (zh) 一种神经网络的运算电路
Wu et al. Efficient dynamic fixed-point quantization of CNN inference accelerators for edge devices
WO2022170811A1 (zh) 一种适用于混合精度神经网络的定点乘加运算单元及方法
CN113837365A (zh) 实现sigmoid函数逼近的模型、FPGA电路及工作方法
CN116384455A (zh) 一种非均匀分段线性化激活函数硬件实现方法
CN110837885A (zh) 一种基于概率分布的Sigmoid函数拟合方法
CN110555519B (zh) 一种基于符号随机计算的低复杂度卷积神经网络架构
CN115526131A (zh) 多级编码近似计算Tanh函数的方法及装置
CN114648101A (zh) 基于transformer结构的softmax函数量化实现方法和装置
CN107256140A (zh) 实现基于硬件加速的非标准浮点数重建算法的方法和设备
Sanjeet et al. Energy-efficient FPGA implementation of power-of-2 weights-based convolutional neural networks with low bit-precision input images
CN112732223B (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