CN107480771B - 基于深度学习的激活函数的实现方法及装置 - Google Patents
基于深度学习的激活函数的实现方法及装置 Download PDFInfo
- Publication number
- CN107480771B CN107480771B CN201710669937.1A CN201710669937A CN107480771B CN 107480771 B CN107480771 B CN 107480771B CN 201710669937 A CN201710669937 A CN 201710669937A CN 107480771 B CN107480771 B CN 107480771B
- Authority
- CN
- China
- Prior art keywords
- subintervals
- interval
- activation function
- storage space
- subinterval
- 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.)
- Active
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/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明提供了一种基于深度学习的激活函数的实现方法及装置。该激活函数的实现方法包括:将激活函数的区间划分为多个子区间;根据多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;根据每个子区间的区间类型,计算多个子区间所需的存储空间;以及在多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对多个子区间进行存储空间分配。通过采用本发明的激活函数实现方法,在硬件资源有限的情况下,保证激活函数的实现精度,同时提高了硬件的运行效率。
Description
技术领域
本发明涉及神经网络技术领域,特别是一种基于深度学习的激活函数的实现方法。
背景技术
随着计算机及互联网技术的高速发展,数据规模呈爆发式增长,海量数据的智能化分析处理也逐渐成为有效利用数据价值的关键。作为近年来兴起的人工智能的一个典型代表,深度学习神经网络的深度学习算法模型在模式识别、人机对抗等领域得到高度发展,并取得了诸多的成果。
在神经网络中,激活函数能够引入非线性因素,使得神经网络可以更好地解决较为复杂的问题。常用的激活函数(sigmoid,tanh,softmax)被视为神经网络的核心所在。然而,激活函数的实现一直是难点。当在硬件上实现激活函数时,需要考虑实现时占据的硬件资源、运行效率,计算精度等。
发明内容
鉴于上述情况,本发明的一个方面提供了一种激活函数实现方法,所述方法包括以下步骤:将所述激活函数的区间划分为多个子区间;根据所述多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;根据所述每个子区间的区间类型,计算所述多个子区间所需的存储空间;以及在所述多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对所述多个子区间进行存储空间分配。
在一个实施例中,在所述多个子区间所需的存储空间大于所述存储器的存储空间的情况下,对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至所述多个子区间所需的存储空间小于等于所述存储器的存储空间。
在一个实施例中,所述对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,包括:为所述多个子区间中的一个或多个设置步进值更大的区间类型。
在一个实施例中,所述将所述激活函数的区间划分为多个子区间,包括:根据所述激活函数的区间的梯度(计算该区间结束位置的梯度),将所述激活函数的区间划分为多个子区间,其中不同的子区间具有不同的梯度。
在一个实施例中,所述计算所述多个子区间所需的存储空间,包括:计算多个子区间中的每个子区间所需的存储空间;将所述多个子区间中的每个子区间所需的存储空间相加得到所述多个子区间所需的存储空间。
在一个实施例中,所述步进值为2n,其中,n为自然数,(硬件不需要乘法器)。
在一个实施例中,所述激活函数为sigmoid函数、tanh函数或softmax函数。
本发明的一个方面提供了一种激活函数实现装置,所述装置包括:划分单元,用于将所述激活函数的区间划分为多个子区间;确定单元,用于根据所述多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;计算单元,用于根据所述每个子区间的区间类型,计算所述多个子区间所需的存储空间;以及分配单元,用于在所述多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对所述多个子区间进行存储空间分配。
在一个实施例中,所述装置还包括再分配单元,用于在所述多个子区间所需的存储空间大于所述存储器的存储空间的情况下,对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至所述多个子区间所需的存储空间小于等于所述存储器的存储空间。
在一个实施例中,所述再分配单元还用于为所述多个子区间中的一个或多个设置步进值更大的区间类型。
本发明的一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述激活函数实现方法。
通过采用本发明的激活函数实现方法,在硬件资源有限的情况下,保证激活函数的实现精度,同时提高了硬件的运行效率。
附图说明
从下面结合附图对本发明实施例的详细描述中,本发明的这些和/或其它方面和优点将变得更加清楚并更容易理解,其中:
图1为本发明实施例的激活函数实现方法的示意性流程图;
图2为本发明实施例的激活函数的示例函数sigmoid的示意图;
图3为本发明实施例的激活函数实现装置的示意性功能结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的激活函数实现方法的示意性流程图。图1的方法可以由服务器来执行。该激活函数实现方法包括以下步骤。
S110:将激活函数的区间划分为多个子区间。
例如,激活函数可以是sigmoid函数、tanh函数或softmax函数等。本发明的激活函数不限于此。根据存储器的存储空间以及数据运算精度,为激活函数的区间设置多个区间类型。存储器例如可以是SRAM。SRAM的存储空间通常比较有限。根据SRAM的存储空间以及数据运算精度,为激活函数的区间设置多个步进值(步进值为2n(n为自然数))不同的区间类型,例如,步进值为2的区间类型,步进值为4的区间类型,步进值为8的区间类型。步进值是指在区间内隔多少个点取一个输出。当步进值为2时,每隔2个点取一个点。当子区间长度一定时,步进值越大,需要取的点越少。例如,当激活函数的区间为(0,1000)时,可以将激活函数的区间(0,1000)划分为(0,100),(100,200),(200,300),(300,400),(400,500),(500,600),(600,700),(700,800),(800,900),(900,1000)。
S120:根据激活函数的每个子区间的梯度,确定每个子区间的区间类型其中不同区间类型的子区间的采样点具有不同的步进值。
在激活函数的曲线的梯度比较大情况下,需要取更多的点进行拟合。例如,在梯度比较大的子区间,可以设置步进值为2的区间类型。在激活函数的曲线的梯度比较小的情况下,可以取较少的点进行拟合。例如,可以设置步进值为32的区间类型。
S130:根据每个子区间的区间类型,计算多个子区间所需的存储空间。
具体地,每个子区间所需的存储空间为在该子区间取的点数乘以每个点所占的存储空间大小。将每个子区间所需的存储空间相加得到多个子区间所需的内存空间。多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对多个子区间进行存储空间分配。
通过采用本发明的激活函数实现方法,在硬件资源有限的情况下,保证激活函数的实现精度,同时提高了硬件的运行效率。
在一个实施例中,在多个子区间所需的存储空间大于存储器的存储空间的情况下,对激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至多个子区间所需的存储空间小于等于存储器的存储空间。
在一个实施例中,在多个子区间所需的存储空间大于存储器的存储空间的情况下,为多个子区间中的一个或多个设置步进值更大的区间类型。
在一个实施例中,根据激活函数的区间的梯度,将激活函数的区间划分为多个子区间,其中不同的子区间具有不同的梯度。
在一个实施例中,激活函数为sigmoid函数、tanh函数或softmax函数。
图2为本发明实施例的激活函数的示例函数sigmoid的示意图。Sigmoid函数的值在(0,1)区间。考虑到查找效率,假设SRAM的空间为4KB,定点化数据位宽为16bit,因此最多取2000个点进行拟合。根据该函数的特性,只需考虑x>0的区间,x<0的区间可以由x>0的区间来计算。为该函数设置4个区间类型,具体为,步进值为8的区间类型,步进值为16的区间类型,步进值为32的区间类型,步进值为64的区间类型。假设x=3,将该函数区间(0,3)划分为6个子区间(0,0.5),(0.5,1),(1,1.5),(1.5,2),(2,2.5),(2.5,3)。子区间(0,0.5)的梯度较大,将该子区间的区间类型设置为步进值为8的区间类型。子区间(2.5,3)的梯度较小,将该子区间的区间类型设置为步进值为32的区间类型。根据区间类型计算每个子区间的点数,并对所有子区间的点数进行求和,如果总点数小于等于2000,则成功,否则,重新确定每个子区间的区间类型直至总点数小于等于2000。
图3为本发明实施例的激活函数实现装置的示意性功能图。该激活函数实现装置3包括:划分单元310,用于将激活函数的区间划分为多个子区间;确定单元320,用于根据多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;计算单元330,用于根据每个子区间的区间类型,计算多个子区间所需的存储空间;以及分配单元340,用于在多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对多个子区间进行存储空间分配。
例如,激活函数可以是sigmoid函数、tanh函数或softmax函数等。本发明的激活函数不限于此。根据存储器的存储空间以及数据运算精度,为激活函数的区间设置多个区间类型。存储器例如可以是SRAM。根据存储器的存储空间以及数据运算精度,为激活函数的区间设置多个步进值(步进值为2n(n为自然数))不同的区间类型,例如,步进值为2的区间类型,步进值为4的区间类型,步进值为8的区间类型。步进值是指在区间内隔多少个点计算一个输出。当步进值为2时,每隔2个点取一个点。当子区间长度一定时,步进值越大,需要取的点越少。例如,当激活函数的区间为(0,1000)时,划分单元310可以将激活函数的区间(0,1000)划分为(0,100),(100,200),(200,300),(300,400),(400,500),(500,600),(600,700),(700,800),(800,900),(900,1000)。
在激活函数的曲线的梯度比较大情况下,需要取更多的点进行拟合。例如,在梯度比较大的子区间,可以设置步进值为2的区间类型。在激活函数的曲线的梯度比较小的情况下,可以取较少的点进行拟合。例如,可以设置步进值为32的区间类型。每个子区间所需的存储空间与该子区间的区间类型相关。具体地,每个子区间所需的存储空间为在该子区间取的点数乘以每个点所占的存储空间大小。
在一个实施例中,激活函数实现装置还包括再分配单元,用于在多个子区间所需的存储空间大于存储器的存储空间的情况下,对激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至多个子区间所需的存储空间小于等于存储器的存储空间。
在一个实施例中,再分配单元还用于为多个子区间中的一个或多个设置步进值更大的区间类型。
本发明的实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述激活函数实现方法。
Claims (9)
1.一种基于深度学习的激活函数实现方法,其特征在于,所述方法包括:
将所述激活函数的区间划分为多个子区间;
根据所述多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;步进值小的采样点对应的子区间的梯度大,步进值大的采样点对应的子区间的梯度小;根据所述每个子区间的区间类型,计算所述多个子区间所需的存储空间;在所述多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对所述多个子区间进行存储空间分配;以及
在所述多个子区间所需的存储空间大于所述存储器的存储空间的情况下,对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至所述多个子区间所需的存储空间小于等于所述存储器的存储空间。
2.根据权利要求1所述的激活函数实现方法,其特征在于,所述对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,包括:
为所述多个子区间中的一个或多个设置步进值更大的区间类型。
3.根据权利要求1或2所述的激活函数实现方法,其特征在于,所述将所述激活函数的区间划分为多个子区间,包括:
根据所述激活函数的区间的梯度,将所述激活函数的区间划分为多个子区间,其中不同的子区间具有不同的梯度。
4.根据权利要求1或2所述的激活函数实现方法,其特征在于,所述计算所述多个子区间所需的存储空间,包括:
计算多个子区间中的每个子区间所需的存储空间;
将所述多个子区间中的每个子区间所需的存储空间相加得到所述多个子区间所需的存储空间。
5.根据权利要求1或2所述的激活函数实现方法,其特征在于,所述步进值为2n,其中,n为自然数。
6.根据权利要求1或2所述的激活函数实现方法,所述激活函数为sigmoid函数、tanh函数或softmax函数。
7.一种基于深度学习的激活函数实现装置,其特征在于,所述装置包括:
划分单元,用于将所述激活函数的区间划分为多个子区间;
确定单元,用于根据所述多个子区间中的每个子区间的梯度,确定每个子区间的区间类型,其中不同区间类型的子区间的采样点具有不同的步进值;步进值小的采样点对应的子区间的梯度大,步进值大的采样点对应的子区间的梯度小;
计算单元,用于根据所述每个子区间的区间类型,计算所述多个子区间所需的存储空间;分配单元,用于在所述多个子区间所需的存储空间小于等于存储器的存储空间的情况下,对所述多个子区间进行存储空间分配;以及
再分配单元,用于在所述多个子区间所需的存储空间大于所述存储器的存储空间的情况下,对所述激活函数的区间进行重新划分和/或重新确定每个子区间的区间类型,直至所述多个子区间所需的存储空间小于等于所述存储器的存储空间。
8.根据权利要求7所述的激活函数实现装置,其特征在于,所述再分配单元还用于为所述多个子区间中的一个或多个设置步进值更大的区间类型。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述的激活函数实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710669937.1A CN107480771B (zh) | 2017-08-07 | 2017-08-07 | 基于深度学习的激活函数的实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710669937.1A CN107480771B (zh) | 2017-08-07 | 2017-08-07 | 基于深度学习的激活函数的实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107480771A CN107480771A (zh) | 2017-12-15 |
CN107480771B true CN107480771B (zh) | 2020-06-02 |
Family
ID=60599018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710669937.1A Active CN107480771B (zh) | 2017-08-07 | 2017-08-07 | 基于深度学习的激活函数的实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107480771B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647045B (zh) * | 2018-03-20 | 2021-10-01 | 科大讯飞股份有限公司 | 激活函数的实现方法及装置、存储介质、电子设备 |
CN108537332A (zh) * | 2018-04-12 | 2018-09-14 | 合肥工业大学 | 一种基于Remez算法的Sigmoid函数硬件高效率实现方法 |
CN109871941B (zh) * | 2019-02-18 | 2020-02-21 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置及相关产品 |
CN112256094A (zh) * | 2020-11-13 | 2021-01-22 | 广东博通科技服务有限公司 | 一种基于深度学习的激活函数装置及其使用方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678293A (zh) * | 2012-08-29 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法及装置 |
CN104484703A (zh) * | 2014-12-30 | 2015-04-01 | 合肥工业大学 | 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路 |
CN105893159A (zh) * | 2016-06-21 | 2016-08-24 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN106980898A (zh) * | 2017-03-30 | 2017-07-25 | 微额速达(上海)金融信息服务有限公司 | 深度学习系统及其使用方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6876989B2 (en) * | 2002-02-13 | 2005-04-05 | Winbond Electronics Corporation | Back-propagation neural network with enhanced neuron characteristics |
-
2017
- 2017-08-07 CN CN201710669937.1A patent/CN107480771B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678293A (zh) * | 2012-08-29 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种数据存储方法及装置 |
CN104484703A (zh) * | 2014-12-30 | 2015-04-01 | 合肥工业大学 | 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路 |
CN105893159A (zh) * | 2016-06-21 | 2016-08-24 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
CN106980898A (zh) * | 2017-03-30 | 2017-07-25 | 微额速达(上海)金融信息服务有限公司 | 深度学习系统及其使用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107480771A (zh) | 2017-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480771B (zh) | 基于深度学习的激活函数的实现方法及装置 | |
CN106951211B (zh) | 一种可重构定浮点通用乘法器 | |
CN108415845A (zh) | Ab测试系统指标置信区间的计算方法、装置和服务器 | |
CN110413539B (zh) | 一种数据处理方法及装置 | |
CN110415160B (zh) | 一种gpu拓扑分区方法与装置 | |
CN103825946A (zh) | 一种基于网络感知的虚拟机放置方法 | |
CN109445863B (zh) | 一种基于fpga的数据处理方法、装置、设备及介质 | |
CN115858648A (zh) | 数据库生成方法、数据流切分方法、装置、设备及介质 | |
US11748255B1 (en) | Method for searching free blocks in bitmap data, and related components | |
CN107368281B (zh) | 一种数据处理方法及装置 | |
CN113052290B (zh) | 神经网络的生成、数据处理方法、装置及电子设备和介质 | |
QasemiZadeh et al. | Random indexing explained with high probability | |
Malakar et al. | A divide and conquer strategy for scaling weather simulations with multiple regions of interest | |
CN109901931B (zh) | 一种归约函数数量确定方法、装置及系统 | |
CN112015539A (zh) | 任务分配方法、装置和计算机存储介质 | |
CN108805319B (zh) | 一种风电功率建模最优状态数的确定方法及系统 | |
JP6961950B2 (ja) | 格納方法、格納装置および格納プログラム | |
CN105468603A (zh) | 数据选择方法及装置 | |
CN109816110A (zh) | Scrypt算法工作量证明方法及装置 | |
CN114553700B (zh) | 设备分组方法、装置、计算机设备及存储介质 | |
CN110309127B (zh) | 一种数据处理方法、装置及电子设备 | |
CN116088935B (zh) | 应用于磁轴承转子参数辨识的数据的处理方法 | |
CN114356565A (zh) | FaaS资源扩缩容模型的训练及确定方法和装置 | |
CN115617351B (zh) | 算子的切分图样搜索方法、装置、计算机设备及存储介质 | |
CN111828248B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180418 Address after: 100191 Xueyuan Road, Haidian District, Haidian District, Beijing, No. 607, No. six Applicant after: Beijing Vimicro AI Chip Technology Co Ltd Address before: 100191, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 16 floor Applicant before: Beijing Vimicro Corporation |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |