CN111753972A - 神经网络运算模块及方法 - Google Patents
神经网络运算模块及方法 Download PDFInfo
- Publication number
- CN111753972A CN111753972A CN201910235215.4A CN201910235215A CN111753972A CN 111753972 A CN111753972 A CN 111753972A CN 201910235215 A CN201910235215 A CN 201910235215A CN 111753972 A CN111753972 A CN 111753972A
- Authority
- CN
- China
- Prior art keywords
- precision
- gradient
- layer
- output neuron
- bit width
- 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
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 150
- 238000000034 method Methods 0.000 title claims description 67
- 210000004205 output neuron Anatomy 0.000 claims abstract description 445
- 230000005540 biological transmission Effects 0.000 claims description 67
- 238000004364 calculation method Methods 0.000 claims description 34
- 230000003247 decreasing effect Effects 0.000 claims description 26
- 210000002569 neuron Anatomy 0.000 claims description 17
- 238000010801 machine learning Methods 0.000 claims description 6
- 210000002364 input neuron Anatomy 0.000 description 16
- 238000010586 diagram Methods 0.000 description 4
- 230000007423 decrease Effects 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 1
- 230000003287 optical effect 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
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)
- Feedback Control In General (AREA)
Abstract
一种神经网络运算模块,包括存储单元存储多层神经网络的输出神经元、权重精度和输出神经元梯度精度;控制器单元,用于获取定点化前输出神经元的绝对值的平均值Y1和定点化后输出神经元的绝对值的平均值Y2;若Y1/Y2预设阈值K,则获取多层神经网络的相邻两层输出神经元梯度精度时,根据相邻两层输出神经元梯度精度和权重精度获取误差传递精度预估值An;当An小于预设精度Ar时,减小相邻两层输出神经元梯度精度及权重精度;运算单元根据减小后精度表示相邻两层输出神经元梯度及权重,并进行后续运算。采用本发明实施例可以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
Description
技术领域
本发明涉及神经网络领域,特别涉及一种神经网络运算模块及方法。
背景技术
定点数是一种可以指定小数点位置的数据格式,我们通常用位宽来表示一个定点数的数据长度。例如,16位定点数的位宽就是16。对于给定位宽的定点数,可表示数据的精度和可表示的数字范围是此消彼长的,如果可以表示的精度越大,则可表示的数字范围就越小。对于位宽为bitnum的定点数,且该定点数为有符号数,则第一位为符号位,若最大定点精度为2s。该定点表示法可以表示的范围为[neg,pos],其中pos=(2bitnum-1-1)*2s,neg=-(2bitnum-1)*2s。
在神经网络运算中,数据可以用定点数进行表示、运算。例如,在正向运算过程中,第L层的数据包括输入神经元X(l)、输出神经元Y(l)、权重W(l)。在反向运算过程中,第L层的数据包括输入神经元梯度输出神经元梯度权重梯度可以将上面的数据均用定点数进行表示,也可以用定点数进行运算。
在神经网络的训练过程通常包括正向运算和反向运算两个步骤,在反向运算时,输入神经元梯度、权重梯度和输出神经元梯度所需要的精度可能会出现变化,可能随着训练的过程增大,如果定点数的精度不够,会导致运算结果出现较大误差,甚至会导致训练失败。
发明内容
本发明实施例所要解决的技术问题在于神经网络运算过程中,输入神经元精度、权重精度或者输出神经元梯度精度不够,导致出现运算或训练的结果存在误差,本发明实施例提供一种神经网络运算模块及方法,动态调整输入神经元精度,权重精度和输出神经元梯度精度,降低了运算结果或训练结果的误差。
第一方面,本发明提供了一种神经网络运算模块,该神经网络运算模块用于执行多层神经网络的运算,包括:
存储单元,用于存储所述多层神经网络的权重精度和输出神经元梯度精度;
控制器单元,从所述存储单元获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw;
运算单元,用于根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,根据减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
在一种可行的实施例中,所述相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度和第L层输出神经元梯度精度在根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值的方面,所述控制器单元具体用于:
若所述第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An。
在一种可行的实施例中,所述控制器单元根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An。
所述控制器单元减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
在一种可行的实施例中,所述控制器单元增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,包括:
所述控制器单元根据An-Ar的绝对值按照第一预设步长N1增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元按照2倍递减的方式增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,控制器单元增加当前表示权重的定点数据格式的位宽,包括:
控制器单元根据An-Ar的绝对值按照第三预设步长N3增加当前表示权重的定点数据格式的位宽,或者;
控制器单元按照2倍递减的方式增加当前表示权重的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述权重的定点数据格式的位宽。
在一种可行的实施例中,控制器单元增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,包括:
控制器单元根据An-Ar的绝对值按照第四预设步长N4增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
控制器单元按照2倍递减的方式增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述第二预设步长N2与所述预设阈值成正比。
在一种可行的实施例中,所述控制器单元还用于:
根据经验值进行预先设置所述预设精度Ar,或者;
通过改变输入参数的方式获得与该输入参数匹配的所述预设精度Ar,或者;
还可以通过机器学习的方法获取所述预设精度Ar,或者;
根据第L-1层输出神经元的个数设置所述预设精度Ar,且所述第L-1层输出神经元的个数越大,则所述预设精度Ar越大。
第二方面,本发明提供了一种神经网络运算模块,该神经网络运算模块用于执行多层神经网络的运算,包括:
控制器单元,用于从存储单元中获取多层神经网络的输出神经元,并确定输出神经元的绝对值的平均值Y1;将输出神经元采用定点数据格式表示,以得到定点化的输出神经元;确定定点化的输出神经元的绝对值的平均值Y2;
若Y1/Y2大于预设阈值K,控制器单元用于执行如第一方面的控制器单元所执行的步骤的部分或全部;
运算单元,用于执行如第一方面的运算单元所执行的步骤的部分或全部。
第三方面,本发明实施例提供了一种神经网络运算方法,该神经网络运算方法用于执行多层神经网络运算。该方法包括:
获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw;
根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,根据减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
若所述第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An。
在一种可行的实施例中,所述根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;从多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;从多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;对多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An。
所述减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
在一种可行的实施例中,所述增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第一预设步长N1增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;根据第二预设步长N2增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述增加所述权重精度Sw,包括:
根据An-Ar的绝对值按照第二预设步长N2增加当前表示所述权重的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示所述权重的定点数据格式的位宽,或者;根据第二预设步长N2增加当前表示所述权重的定点数据格式的位宽。
根据An-Ar的绝对值按照第三预设步长N3增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;根据第二预设步长N2增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述第二预设步长N2与所述预设阈值成正比。
在一种可行的实施例中,所述方法还包括:
根据经验值进行预先设置所述预设精度Ar,或者;
通过改变输入参数的方式获得与该输入参数匹配的所述预设精度Ar,或者;
还可以通过机器学习的方法获取所述预设精度Ar,或者;
根据第L-1层输出神经元的个数设置所述预设精度Ar,且所述第L-1层输出神经元的个数越大,则所述预设精度Ar越大。
第四方面,本发明实施例提供了一种神经网络运算方法,该神经网络运算方法用于执行多层神经网络运算。该方法包括:
获取所述多层神经网络的输出神经元,并确定所述输出神经元的绝对值的平均值Y1;将所述输出神经元采用定点数据格式表示,以得到定点化的输出神经元;确定所述定点化的输出神经元的绝对值的平均值Y2;
若所述Y1/Y2大于预设阈值K,执行如第三方面所述方法的全部或部分。
可以看出,在本发明实施例的方案中,通过在神经网络运算过程中,动态调整(包括增大或者减小)第L-1层输出神经元精度权重精度Sw和第L层输出神经元梯度精度以在满足运算需求的同时,减小了运算结果的误差,提高了运算结果的精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种神经网络运算模块的结构示意图;
图2为本发明实施例提供的一种相邻两层神经输入神经元的示意图;
图3为本发明实施例提供的另一种相邻两层神经输入神经元的示意图;
图4为本发明实施例提供的一种神经网络运算方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
在神经网络运算的过程中,由于经过加减乘除和卷积等一系列运算,正向运算过程包括的输入神经元、权重和输出神经元和反向训练过程包括的输入神经元梯度、权重梯度和输出神经元梯度也会发生变化。以定点数据格式表示输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度有可能需要增大或者减小。如果输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度不够,会导致运算结果出现较大的误差,甚至会导致反向训练失败;如果输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度冗余,则会增加不必要的的运算开销,浪费运算资源。本申请提出了一种神经网络运算模块及方法,在进行神经网络运算的过程中动态调整上述数据的精度,以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
在本申请的实施例中,是通过调整上述数据的位宽来达到调整该数据精度的目的。
参见图1,图1为本申请实施例提供的一种神经网络运算模块的结构示意图。该神经网络运算模块用于执行多层神经网络运算。如图1所示,该神经网络运算模块包括:
存储单元101用于存储输出神经元梯度精度和权重精度。
控制器单元102,用于从上述存储单元101中获取第L-1层输出神经元梯度精度权重精度Sw和第L层输出神经元梯度精度其中,L为大于1的整数;根据该第L-1层输出神经元梯度精度权重精度Sw和第L层输出神经元梯度精度获取误差传递梯度更新精度A;当该误差传递精度预估值A小于预设精度Ar时,减小输出神经元梯度精度权重精度Sw和输出神经元梯度精度
在一种可行的实施例中,上述存储单元101还用于存储输出神经元和权重;上述控制器单元102从该存储单元101获取权重、第L-1层输出神经元和第L层输出神经元;根据该权重、第L-1层输出神经元和第L层输出神经元获取上述权重精度Sw、第L-1层输出神经元梯度精度和第L层输出神经元梯度精度
其中,上述控制器单元102可以根据经验进行预先设置上述预设精度Ar,也可以通过改变输入参数的方式获得与该输入参数匹配的Ar;还可以通过机器学习的方法获取上述预设精度Ar。
优选地,上述控制器单元102根据上层输出神经元的个数设置上述预设精度Ar,且上层输出神经元的个数越大,则上述预设精度Ar越大。
可选地,上述控制器单元102根据An-A的绝对值按照第一预设步长N1增加上述表示第L层输出神经元的定点数据格式的小数部分位宽s1。
具体地,对于表示上述输出神经元梯度的定点数据格式的小数部分位宽s1,上述控制器单元102每次增加N1位,即小数部分的位宽为s1+N1,并得到第L层输出神经元梯度精度
可选地,上述第一预设步长N1为1、2、4、6、7、8或者其他正整数。
可选地,上述控制器单元102按照2倍递增的方式,增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽。
比如表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽为4,即该第L层输出神经元梯度精度精度为2-4,按照2倍递增的方式增加位宽后的表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽为8,即减小后的第L层输出神经元梯度精度为2-8。
在一种可行的实施例中,上述控制器单元102确定对表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽的增加幅度b后,上述控制器单元102分多次增加上述定点数据格式的小数部分位宽,比如上述控制器单元102分两次增加上述定点数据格式的小数部分位宽,第一次增加的幅度为b1,第二次增加的幅度为b2,且b=b1+b2。
其中,上述b1与b2可以相同或者不相同。
进一步地,由于减小上述第L层输出神经元梯度精度是通过增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽,由于表示上述第L层输出神经元梯度的定点数据格式的位宽不变,若当小数部分位宽增加时,则整数部分位宽减小,该定点数据格式表示的数据的精度会提高,但是减小该定点数据格式表示的范围,因此在控制器单元102提高上述第L层输出神经元梯度精度后,该控制器单元102增加上述定点数据格式的位宽,且该定点数据格式的位宽增加后,其整数部分的位宽保持不变,即整数部分位宽的增加值与小数部分位宽的增加值相同,即在保证了小数部分位宽改变的情况下,使得该定点数据格式表示的最大值保持不变,并且提高了精度。
举例说明,上述定点数据格式的位宽为9,其中整数部分的位宽为5,小数部分的位宽为4,上述控制器单元102增加上述小数部分的位宽和整数部分的位宽后,小数部分的位宽为8,则整数部分的位宽为5,即增加上述小数部分的位宽,整数部分的位宽保持不变。
需要指出的是,上述控制器单元102增大上述第L层输出神经元梯度精度的原因是该输出神经元梯度精度控制大于上述需求精度,即精度不满足需求,此时会降低运算精度,影响运算结果的精度。因此为了提高运算精度,避免影响运算结果的精度,需要减小上述输出神经元梯度精度
具体地,由上述相关描述可知,上述控制器单元102减小上述第L层输出神经元梯度精度后,需要进一步判断精度是否满足需求,即判断输出神经元梯度精度是否大于需求精度。当确定上述输出神经元梯度精度大于上述需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽,以提高上述输出神经元梯度精度
需要指出的是,上述控制器单元102增加上述定点数据格式的位宽具体是增加该定点数据格式的整数部分的位宽。
进一步地,上述控制器单元102增加表示上述第L层输出神经元梯度的定点数据格式的位宽,包括:
上述控制器单元102按照第二预设步长N2增加表示第L层输出神经元梯度的定点数据格式的位宽,其中,第二预设步长N2可为1、2、3、4、5、7、8或者其他正整数。
具体地,当确定增加上述定点数据格式的位宽时,上述控制器单元102每次增加该定点数据格式的位宽时的增加值为上述第二预设步长N2。
在一种可行的实施例中,上述控制器单元102增加上述表示第L-1输出神经元梯度的定点数据格式的位宽,包括:
上述控制器单元102按照2倍递减的方式增加上述表示上述第L层输出神经元梯度的定点数据格式的位宽。
举例说明,上述定点数据格式除去符号位的位宽为8,则按照2倍递增的方式增加该定点数据格式的位宽后,该定点数据格式除去符号位的位宽为16;再次按照2倍递增的方式增加该定点数据格式的位宽后,该定点数据格式除去符号位的位宽为32。
在一种可行的实施例中,存储单元101还用于存储多层神经网络的输出神经元,控制器单元102从存储单元101中获取多层神经网络的输出神经元,并确定该多层神经网络的输出神经元的绝对值的平均值Y1;将多层神经网络的输出神经元采用定点数据格式表示,以得到定点化的输出神经元,并且确定定点化对的输出神经元的绝对值的平均值Y2;若Y1/Y2大于预设阈值,则控制器单元102采用本申请所公开的任一种方式减小输出神经元精度和权重精度。
在一个可能的实施例中,控制器单元102从存储单元中获取多层神经网络中相邻两层输出神经元梯度精度和权重精度Sw;根据相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当目标误差传输精度预估值An小于预设精度Ar时,减小相邻两层输出神经元梯度精度和所权重精度Sw;运算单元103,用于根据减小后的相邻两层输出神经元梯度精度来表示相邻两层输出神经元梯度,根据减小后的权重精度Sw来表示所多层神经网络的权重,并进行后续运算。
其中,相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度和第L层输出神经元梯度精度,在根据相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An,控制器单元102具体用于:
若第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度获取多个误差传递精度预估值;若第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所重精度Sw和第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从多个误差传递精度预估值选择出目标误差传递精度预估值An。
如图2所示,当上述神经网络的第L-1层输出神经元梯度精度包括M个输出神经元梯度精度,即包括时,控制器单元102根据第二预设公式对M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度进行计算,以得到M个误差传递精度预估值,即A1,A2,…,AM-1,AM。
……
上述控制器单元102根据预设策略从M个误差传输精度预估值中选取出目标误差传输精度预估值An。
具体地,上述预设策略包括:
策略1:上述控制器单元102在{A1,A2,…,AM-1,AM}中任选一个作为目标误差传输精度预估值An。
策略2:上述控制器单元102在{A1,A2,…,AM-1,AM}中选取最小值作为目标误差传输精度预估值An。
策略3:上述控制器单元102在{A1,A2,…,AM-1,AM}中选取最大值作为目标误差传输精度预估值An。
策略4:上述控制器单元102对{A1,A2,…,AM-1,AM}进行求均值计算,以得到均值,该均值作为目标误差传输精度预估值An。
策略5:上述控制器单元102根据预设的权重序列,对{A1,A2,…,AM-1,AM}进行加权后均值计算,以得到加权均值,该加权均值作为目标误差传输精度预估值An。
在一个示例中,控制器单元102根据上述第L-1层中的M个输出神经元梯度精度中的部分、权重精度和第L层输出神经元梯度精度确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可控制器单元102在根据M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度进行计算,以得到M个误差传递精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
如图3所示,当上述神经网络的第L层输出神经元梯度精度包括N个输出神经元梯度精度,即包括时,控制器单元102根据第三预设公式对N个输出神经元梯度精度、权重精度和第L-1层输出神经元梯度精度进行计算,以得到N个误差传递精度预估值,即A1,A2,…,AN-1,AN。
……
上述控制器单元102根据预设策略从N个误差传输精度预估值中选取出目标误差传输精度预估值An。
具体地,上述预设策略包括:
策略1’:上述控制器单元102在{A1,A2,…,AN-1,AN}中任选一个作为目标误差传输精度预估值An。
策略2’:上述控制器单元102在{A1,A2,…,AN-1,AN}中选取最小值作为目标误差传输精度预估值An。
策略3’:上述控制器单元102在{A1,A2,…,AN-1,AN}中选取最大值作为目标误差传输精度预估值An。
策略4’:上述控制器单元102对{A1,A2,…,AN-1,AN}进行求均值计算,以得到均值,该均值作为目标误差传输精度预估值An。
策略5’:上述控制器单元102根据预设的权重序列,对{A1,A2,…,AN-1,AN}进行加权后均值计算,以得到加权均值,该加权均值作为目标误差传输精度预估值An。
在一个示例中,控制器单元102根据上述第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可控制器单元102在根据第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度确定多个误差传输精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
其中,上述控制器单元102根据上述策略3和策略3’确定目标误差传输精度预估值An。进而根据目标误差传输精度预估值An与预设精度Ar的大小关系来调整上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度当该目标误差传输精度预估值An小于预设精度Ar时,控制器单元102减小上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度其中,M为大于1的整数。采用策略3和策略3’的好处是可以去确保精度够用,不会溢出。
需要说明的是,控制器单元102减小相邻两层输出神经元梯度精度包括减小第L-1层输出神经元梯度精度和第L层输出神经元梯度精度若第L-1层包括M个输出神经元梯度精度,则控制器单元102减小M个输出神经元梯度精度,即 若第L层包括N个输出神经元梯度精度,则控制器单元102减小该N个输出神经元梯度精度,即即
其中,控制器单元102减小第L-1层输出神经元梯度精度时,增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽;若第L-1层输出神经元梯度精度包括M个输出神经元梯度精度,则控制器单元102增加当前表示M个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
控制器单元102减小权重精度Sw时,增加当前表示权重的定点数据格式的位宽;
控制器单元102减小第L层输出神经元梯度精度时,增加当前表示第L层输出神经元梯度的定点数据格式的位宽;若第L层输出神经元梯度精度包括N个输出神经元梯度精度,则控制器单元102增加当前表示N个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
其中,用于表示输入神经元的定点数据格式的位宽和用于表示权重的定点数据格式的位宽为第一位宽,用于表示上述输出神经元梯度的定点数据格式的位宽为第二位宽。
可选地,上述第二位宽大于上述第一位宽。
进一步地,上述第二位宽为上述第一位宽的两倍,以便于电子计算机进行处理。
进一步地,上述第一位宽优选为8位,上述第二位宽优选为16位。
在一种可行的实施例中,控制器单元102增加当前表示第L层输出神经元梯度的定点数据格式的位宽,包括:
控制器单元102根据An-Ar的绝对值按照第三预设步长N3增加当前表示第L层输出神经元梯度的定点数据格式的位宽,或者;
控制器单元102按照2倍递减的方式增加当前表示第L层输出神经元梯度的定点数据格式的位宽,或者;
控制器单元102根据第四预设步长N4增加当前表示第L层输出神经元梯度的定点数据格式的位宽。
可选地,上述第三预设步长N3为1、2、4、6、7、8或者其他正整数。
在一种可行的实施例中,控制器单元102增加当前表示权重的定点数据格式的位宽,包括:
控制器单元102根据An-Ar的绝对值按照第五预设步长N5增加当前表示权重的定点数据格式的位宽,或者;
控制器单元102按照2倍递减的方式增加当前表示权重的定点数据格式的位宽,或者;
控制器单元102根据第四预设步长N4增加当前表示权重的定点数据格式的位宽。
在一种可行的实施例中,控制器单元102增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,包括:
控制器单元102根据An-Ar的绝对值按照第六预设步长N6增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,或者;
控制器单元102按照2倍递减的方式增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,或者;
控制器单元102根据第四预设步长N4增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽。
其中,第四预设步长N4与上述预设阈值K成正比。比如当第四预设步长N4为8时,上述预设阈值K的取值范围为0.01-0.5;当第四预设步长N4为4时,该预设阈值K的取值范围为0.0001-0.2。
需要说明的是,控制器单元102增加当前表示权重的定点数据格式的位宽和当前表示第L-1层输出神经元梯度的定点数据格式的位宽的具体过程可参见控制器单元102增加当前表示第L层输出神经元梯度的定点数据格式的位宽的相关描述,在此不再叙述。
运算单元103,还用于根据减小后的输出神经元梯度精度来分别表示第L-1层和第L层输出神经元梯度,根据减小后的权重精度表示权重,以进行后续运算。
按照上述方法调整上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度后,上述运算单元103在运算过程中,按照调整后的输出神经元梯度精度权重精度Sw和输出神经元梯度精度以定点数形式表示上述第L层的输出神经元、权重和第L-1层的输出神经元,然后进行后续的运算。
需要说明的是,上述控制器单元102计算目标误差传输精度预估值An的频率可以根据需求灵活设置。
其中,上述控制器单元102可根据神经网络训练过程中的训练迭代次数调整计算目标误差传输精度预估值An的频率。
可选地,上述控制器单元102在神经网络训练过程中,每迭代一轮就重新计算目标误差传输精度预估值An;或者每迭代预设次数就重新计算目标误差传输精度预估值An;或者根据目标误差传输精度预估值An的变化进行设置上述频率。
可选地,上述控制器单元102根据神经网络训练中的训练迭代次数来设置计算目标误差传输精度预估值An的频率。
可以看出,在本发明实施例的方案中,在神经网络运算过程中,动态调整上述第L-1层的输出神经元梯度精度权重精度Sw和第L层的输出梯度神经元梯度精度以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
参见图4,图4为本发明实施例提供的一种神经网络运算方法的流程示意图。该神经网络运算方法用于执行多层神经网络运算。如图4所示,该方法包括:
在一种可行的实施例中,上述神经网络运算模块获取上述神经网络的权重和第L-1层和第L层的输出神经元;然后根据上述权重和上述第L层和第L-1层的输出神经元获取上述上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度
S403、当误差传递精度预估值A小于预设精度Ar时,神经网络运算模块减小第L-1层输出神经元梯度精度、权重精度和第L输出神经元梯度精度。
其中,上述预设精度Ar可以根据经验进行预先设置,也可以通过改变输入参数的方式获得与该输入参数匹配的Ar;还可以通过机器学习的方法获取上述预设精度Ar。
优选地,上述神经网路运算模块根据上层输出神经元的个数设置上述预设精度Ar,且上层输出神经元的个数越大,则上述预设精度Ar越大。
可选地,神经网络运算模块根据An-A的绝对值按照第一预设步长N1增加上述表示第L层输出神经元的定点数据格式的小数部分位宽s1。
可选地,上述第一预设步长N1为1、2、4、6、7、8或者其他正整数。
可选地,神经网络运算模块按照2倍递增的方式,增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽。
比如表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽为4,即该第L层输出神经元梯度精度精度为2-4,按照2倍递增的方式增加位宽后的表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽为8,即增加位宽后的第L层输出神经元梯度精度为2-8。
在一种可行的实施例中,神经网络运算模块确定对表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽的增加幅度b后,神经网络运算模块分多次增加上述定点数据格式的小数部分位宽,比如神经网络运算模块分两次增加上述定点数据格式的小数部分位宽,第一次增加的幅度为b1,第二次增加的幅度为b2,且b=b1+b2。
其中,上述b1与b2可以相同或者不相同。
进一步地,由于减小上述第L层输出神经元梯度精度是通过增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽,由于表示上述第L层输出神经元梯度的定点数据格式的位宽不变,若当小数部分位宽增加时,则整数部分位宽减小,该定点数据格式表示的数据的精度会提高,但是减小该定点数据格式表示的范围,因此在控制器单元102提高上述第L层输出神经元梯度精度后,该控制器单元102增加上述定点数据格式的位宽,且该定点数据格式的位宽增加后,其整数部分的位宽保持不变,即整数部分位宽的增加值与小数部分位宽的增加值相同,即在保证了小数部分位宽改变的情况下,使得该定点数据格式表示的最大值保持不变,并且提高了精度。
举例说明,上述定点数据格式的位宽为9,其中,整数部分的位宽为5,小数部分的位宽为4,神经网络运算模块增加上述小数部分的位宽和整数部分的位宽后,小数部分的位宽为8,则整数部分的位宽为5,即增加上述小数部分的位宽,整数部分的位宽保持不变。
需要指出的是,上述控制器单元102增大上述第L层输出神经元梯度精度的原因是该输出神经元梯度精度控制大于上述需求精度,即精度不满足需求,此时会降低运算精度,影响运算结果的精度。因此为了提高运算精度,避免影响运算结果的精度,需要减小上述输出神经元梯度精度
具体地,由上述相关描述可知,上述控制器单元102减小上述第L层输出神经元梯度精度后,需要进一步判断精度是否满足需求,即判断输出神经元梯度精度是否大于需求精度。当确定上述输出神经元梯度精度大于上述需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽,以提高上述输出神经元梯度精度
需要指出的是,上述控制器单元102增加上述定点数据格式的位宽具体是增加该定点数据格式的整数部分的位宽。
进一步地,神经网络运算模块增加表示上述第L层输出神经元梯度的定点数据格式的位宽,包括:
神经网络运算模块按照第二预设步长N2增加表示第L层输出神经元梯度的定点数据格式的位宽,其中,第二预设步长N2可为1、2、3、4、5、7、8或者其他正整数。
具体地,当确定增加上述定点数据格式的位宽时,神经网络运算模块每次增加该定点数据格式的位宽时的增加值为上述第二预设步长N2。
在一种可行的实施例中,神经网络运算模块增加上述表示第L-1输出神经元梯度的定点数据格式的位宽,包括:
神经网络运算模块按照2倍递减的方式增加上述表示上述第L层输出神经元梯度的定点数据格式的位宽。
举例说明,上述定点数据格式除去符号位的位宽为8,则按照2倍递增的方式增加该定点数据格式的位宽后,该定点数据格式除去符号位的位宽为16;再次按照2倍递增的方式增加该定点数据格式的位宽后,该定点数据格式除去符号位的位宽为32。
在一个可行的实施例中,神经网络运算模块获取多层神经网络的输出神经元,并确定该多层神经网络的输出神经元的绝对值的平均值Y1;将多层神经网络的输出神经元采用定点数据格式表示,以得到定点化的输出神经元,并且确定定点化对的输出神经元的绝对值的平均值Y2;若Y1/Y2小于预设阈值,则神经网络运算模块采用本申请所公开的任一种方式减小输出神经元精度和权重精度。
在一个可能的实施例中,神经网络运算模块获取多层神经网络中相邻两层输出神经元梯度精度和权重精度Sw;根据相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当目标误差传输精度预估值An小于预设精度Ar时,减小相邻两层输出神经元梯度精度和所权重精度Sw;根据减小后的相邻两层输出神经元梯度精度来表示相邻两层输出神经元梯度,根据减小后的权重精度Sw来表示所多层神经网络的权重,并进行后续运算。
其中,相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度和第L层输出神经元梯度精度,在根据相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An,神经网络运算模块具体用于:
若第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度获取多个误差传递精度预估值;若第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所重精度Sw和第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从多个误差传递精度预估值选择出目标误差传递精度预估值An。
如图2所示,当上述神经网络的第L-1层输出神经元梯度精度包括M个输出神经元梯度精度,即包括时,神经网络运算模块根据第二预设公式对M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度进行计算,以得到M个误差传递精度预估值,即A1,A2,…,AM-1,AM。
……
神经网络运算模块根据预设策略从M个误差传输精度预估值中选取出目标误差传输精度预估值An。
具体地,上述预设策略包括:
策略1:神经网络运算模块在{A1,A2,…,AM-1,AM}中任选一个作为目标误差传输精度预估值An。
策略2:神经网络运算模块在{A1,A2,…,AM-1,AM}中选取最小值作为目标误差传输精度预估值An。
策略3:神经网络运算模块在{A1,A2,…,AM-1,AM}中选取最大值作为目标误差传输精度预估值An。
策略4:神经网络运算模块对{A1,A2,…,AM-1,AM}进行求均值计算,以得到均值,该均值作为目标误差传输精度预估值An。
策略5:神经网络运算模块根据预设的权重序列,对{A1,A2,…,AM-1,AM}进行加权后均值计算,以得到加权均值,该加权均值作为目标误差传输精度预估值An。
在一个示例中,神经网络运算模块根据上述第L-1层中的M个输出神经元梯度精度中的部分、权重精度和第L层输出神经元梯度精度确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可参见神经网络运算模块在根据M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度进行计算,以得到M个误差传递精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
如图3所示,当上述神经网络的第L层输出神经元梯度精度包括N个输出神经元梯度精度,即包括时,神经网络运算模块根据第三预设公式对N个输出神经元梯度精度、权重精度和第L-1层输出神经元梯度精度进行计算,以得到N个误差传递精度预估值,即A1,A2,…,AN-1,AN。
……
上述神经网络运算模块根据预设策略从N个误差传输精度预估值中选取出目标误差传输精度预估值An。
具体地,上述预设策略包括:
策略1’:神经网络运算模块在{A1,A2,…,AN-1,AN}中任选一个作为目标误差传输精度预估值An。
策略2’:神经网络运算模块在{A1,A2,…,AN-1,AN}中选取最小值作为目标误差传输精度预估值An。
策略3’:神经网络运算模块在{A1,A2,…,AN-1,AN}中选取最大值作为目标误差传输精度预估值An。
策略4’:神经网络运算模块对{A1,A2,…,AN-1,AN}进行求均值计算,以得到均值,该均值作为目标误差传输精度预估值An。
策略5’:神经网络运算模块根据预设的权重序列,对{A1,A2,…,AN-1,AN}进行加权后均值计算,以得到加权均值,该加权均值作为目标误差传输精度预估值An。
在一个示例神经网络运算模块根据上述第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可参见神经网络运算模块在根据第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度确定多个误差传输精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
其中,神经网络运算模块根据上述策略3和策略3’确定目标误差传输精度预估值An。进而根据目标误差传输精度预估值An与预设精度Ar的大小关系来调整上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度当该目标误差传输精度预估值An小于预设精度Ar时,神经网络运算模块减小上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度其中,M为大于1的整数。采用策略3和策略3’的好处是可以去确保精度够用,不会溢出。
需要说明的是,神经网络运算模块减小相邻两层输出神经元梯度精度包括减小第L-1层输出神经元梯度精度和第L层输出神经元梯度精度若第L-1层包括M个输出神经元梯度精度,则神经网络运算模块减小M个输出神经元梯度精度,即 若第L层包括N个输出神经元梯度精度,则控制器单元102减小该N个输出神经元梯度精度,即即
其中,神经网络运算模块减小第L-1层输出神经元梯度精度时,增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽;若第L-1层输出神经元梯度精度包括M个输出神经元梯度精度,则神经网络运算模块增加当前表示M个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
神经网络运算模块减小权重精度Sw时,增加当前表示权重的定点数据格式的位宽;
神经网络运算模块减小第L层输出神经元梯度精度时,增加当前表示第L层输出神经元梯度的定点数据格式的位宽;若第L层输出神经元梯度精度包括N个输出神经元梯度精度,则神经网络运算模块增加当前表示N个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
其中,用于表示输入神经元的定点数据格式的位宽和用于表示权重的定点数据格式的位宽为第一位宽,用于表示上述输出神经元梯度的定点数据格式的位宽为第二位宽。
可选地,上述第二位宽大于上述第一位宽。
进一步地,上述第二位宽为上述第一位宽的两倍,以便于电子计算机进行处理。
进一步地,上述第一位宽优选为8位,上述第二位宽优选为16位。
在一种可行的实施例中,神经网络运算模块增加当前表示第L层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第三预设步长N3增加当前表示第L层输出神经元梯度的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示第L层输出神经元梯度的定点数据格式的位宽,或者;根据第四预设步长N4增加当前表示第L层输出神经元梯度的定点数据格式的位宽。
可选地,上述第三预设步长N3为1、2、4、6、7、8或者其他正整数。
在一种可行的实施例中,神经网络运算模块增加当前表示权重的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第五预设步长N5增加当前表示权重的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示权重的定点数据格式的位宽,或者;根据第四预设步长N4增加当前表示权重的定点数据格式的位宽。
在一种可行的实施例中,神经网络运算模块增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第六预设步长N6增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽,或者;根据第四预设步长N4增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽。
其中,第四预设步长N4与上述预设阈值K成正比。比如当第四预设步长N4为8时,上述预设阈值K的取值范围为0.01-0.5;当第四预设步长N4为4时,该预设阈值K的取值范围为0.0001-0.2。
需要说明的是,神经网络运算模块增加当前表示权重的定点数据格式的位宽和当前表示第L-1层输出神经元梯度的定点数据格式的位宽的具体过程可参见神经网络运算模块增加当前表示第L层输出神经元梯度的定点数据格式的位宽的相关描述,在此不再叙述。
神经网络运算模块根据减小后的输出神经元梯度精度来分别表示第L-1层和第L层输出神经元梯度,根据减小后的权重精度表示权重,以进行后续运算。
按照上述方法调整上述输出神经元梯度精度权重精度Sw和输出神经元梯度精度后,神经网络运算模块在运算过程中,按照调整后的输出神经元梯度精度权重精度Sw和输出神经元梯度精度以定点数形式表示上述第L层的输出神经元、权重和第L-1层的输出神经元,然后进行后续的运算。
需要说明的是,上述神经网络运算模块计算目标误差传输精度预估值An的频率可以根据需求灵活设置。
其中,上述神经网络运算模块可根据神经网络训练过程中的训练迭代次数调整计算目标误差传输精度预估值An的频率。
可选地,神经网络运算模块在神经网络训练过程中,每迭代一轮就重新计算目标误差传输精度预估值An;或者每迭代预设次数就重新计算目标误差传输精度预估值An;或者根据目标误差传输精度预估值An的变化进行设置上述频率。
可选地,神经网络运算模块根据神经网络训练中的训练迭代次数来设置计算目标误差传输精度预估值An的频率。
可以看出,在本发明实施例的方案中,在神经网络运算过程中,动态调整上述第L-1层的输出神经元梯度精度权重精度Sw和第L层的输出梯度神经元梯度精度以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (26)
1.一种神经网络运算模块,其特征在于,所述神经网络运算模块用于执行多层神经网络的运算,所述神经网络模块包括:
存储单元,用于存储所述多层神经网络的权重精度和输出神经元梯度精度;
控制器单元,用于从所述存储单元获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw;
运算单元,用于根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,用于减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
2.根据权利要求1所述的模块,其特征在于,所述相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度和第L层输出神经元梯度精度在根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值的方面,所述控制器单元具体用于:
若所述第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An。
5.根据权利要求2-4任一项所述的模块,其特征在于,所述控制器单元根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An。
8.根据权利要求7所述的模块,其特征在于,所述控制器单元增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,包括:
所述控制器单元根据An-Ar的绝对值按照第一预设步长N1增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元按照2倍递减的方式增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
9.根据权利要求7所述的模块,其特征在于,所述控制器单元增加当前表示所述权重的定点数据格式的位宽,包括:
所述控制器单元根据An-Ar的绝对值按照第三预设步长N3增加当前表示所述权重的定点数据格式的位宽,或者;
所述控制器单元按照2倍递减的方式增加当前表示所述权重的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述权重的定点数据格式的位宽。
10.根据权利要求7所述的模块,其特征在于,所述控制器单元增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,包括:
所述控制器单元根据An-Ar的绝对值按照第四预设步长N4增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元按照2倍递减的方式增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
所述控制器单元根据第二预设步长N2增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽。
11.根据权利要求8-10任一项所述的模块,其特征在于,所述第二预设步长N2与所述预设阈值K成正比。
12.根据权利要求1-11任一项所述的模块,其特征在于,所述控制器单元还用于:
根据经验值进行预先设置所述预设精度Ar,或者;
通过改变输入参数的方式获得与该输入参数匹配的所述预设精度Ar,或者;
还可以通过机器学习的方法获取所述预设精度Ar,或者;
根据第L-1层输出神经元的个数设置所述预设精度Ar,且所述第L-1层输出神经元的个数越大,则所述预设精度Ar越大。
13.根据权利要求1-12任一项所述的模块,其特征在于,所述存储单元还用于存储所述多层神经网络的输出神经元;
所述控制器单元,用于从所述存储单元中获取所述多层神经网络的输出神经元,并确定所述输出神经元的绝对值的平均值Y1;将所述输出神经元采用定点数据格式表示,以得到定点化的输出神经元;确定所述定点化的输出神经元的绝对值的平均值Y2;
若所述Y1/Y2大于预设阈值K,所述控制器单元用于执行如权利要求1-12任一项所述控制器单元所执行的步骤。
14.一种神经网络运算方法,其特征在于,所述神经网络运算方法用于执行多层神经网络的运算,所述方法包括:
获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw;
根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,用于减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
15.根据权利要求14所述的方法,其特征在于,所述相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度和第L层输出神经元梯度精度所述根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值包括:
若所述第L-1层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An。
18.根据权利要求15-17任一项所述的方法,其特征在于,所述根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An。
21.根据权利要求19所述的方法,其特征在于,所述增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第一预设步长N1增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
按照2倍递减的方式增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;
根据第二预设步长N2增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
22.根据权利要求19所述的方法,其特征在于,所述增加当前表示所述权重的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第三预设步长N3增加当前表示所述权重的定点数据格式的位宽,或者;
按照2倍递减的方式增加当前表示所述权重的定点数据格式的位宽,或者;
根据第二预设步长N2增加当前表示所述权重的定点数据格式的位宽。
23.根据权利要求19所述的方法,其特征在于,所述增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第四预设步长N4增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
按照2倍递减的方式增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽,或者;
根据第二预设步长N2增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽。
24.根据权利要求21-23任一项所述的方法,其特征在于,所述第二预设步长N2与所述预设阈值K成正比。
25.根据权利要求14-24任一项所述的方法,其特征在于,所述方法还包括:
根据经验值进行预先设置所述预设精度Ar,或者;
通过改变输入参数的方式获得与该输入参数匹配的所述预设精度Ar,或者;
还可以通过机器学习的方法获取所述预设精度Ar,或者;
根据第L-1层输出神经元的个数设置所述预设精度Ar,且所述第L-1层输出神经元的个数越大,则所述预设精度Ar越大。
26.根据权利要求14-25任一项所述的方法,其特征在于,所述方法还包括:
获取所述多层神经网络的输出神经元,并确定所述输出神经元的绝对值的平均值Y1;将所述输出神经元采用定点数据格式表示,以得到定点化的输出神经元;确定所述定点化的输出神经元的绝对值的平均值Y2;
若所述Y1/Y2大于预设阈值K,执行如权利要求14-25任一项所述的神经网络运算方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235215.4A CN111753972A (zh) | 2019-03-26 | 2019-03-26 | 神经网络运算模块及方法 |
PCT/CN2020/080402 WO2020192582A1 (zh) | 2019-03-26 | 2020-03-20 | 神经网络运算模块及方法 |
US17/440,479 US20220156562A1 (en) | 2019-03-26 | 2020-03-20 | Neural network operation module and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910235215.4A CN111753972A (zh) | 2019-03-26 | 2019-03-26 | 神经网络运算模块及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111753972A true CN111753972A (zh) | 2020-10-09 |
Family
ID=72671423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910235215.4A Pending CN111753972A (zh) | 2019-03-26 | 2019-03-26 | 神经网络运算模块及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111753972A (zh) |
-
2019
- 2019-03-26 CN CN201910235215.4A patent/CN111753972A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112101530B (zh) | 神经网络训练方法、装置、设备及存储介质 | |
US7647284B2 (en) | Fixed-weight recurrent neural network controller with fixed long-term and adaptive short-term memory | |
JP6610278B2 (ja) | 機械学習装置、機械学習方法及び機械学習プログラム | |
CN111656315A (zh) | 一种基于卷积神经网络架构的数据处理方法及装置 | |
KR20190018885A (ko) | 중첩 신경망을 프루닝하는 방법 및 장치 | |
CN111160531B (zh) | 神经网络模型的分布式训练方法、装置及电子设备 | |
CN115952855A (zh) | 神经网络量化方法、装置及设备 | |
EP0384709B1 (en) | Learning Machine | |
CN111260056A (zh) | 一种网络模型蒸馏方法及装置 | |
CN109102067B (zh) | 神经网络节点的自增减方法、计算机设备及存储介质 | |
CN111753972A (zh) | 神经网络运算模块及方法 | |
US8190536B2 (en) | Method of performing parallel search optimization | |
CN111753970A (zh) | 神经网络运算模块及方法 | |
CN111461329B (zh) | 一种模型的训练方法、装置、设备及可读存储介质 | |
CN110880037A (zh) | 神经网络运算模块及方法 | |
US20030225554A1 (en) | Method of predicting carrying time in automatic warehouse system | |
WO2020192582A1 (zh) | 神经网络运算模块及方法 | |
CN111353597B (zh) | 一种目标检测神经网络训练方法和装置 | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
CN110580523B (zh) | 一种模拟神经网络处理器的误差校准方法及装置 | |
CN110880033A (zh) | 神经网络运算模块及方法 | |
US11886977B2 (en) | Computing apparatus, computing method, storage medium, and table generating apparatus | |
CN111753971A (zh) | 神经网络运算模块及方法 | |
CN114548360A (zh) | 用于更新人工神经网络的方法 | |
JPH05128284A (ja) | ニユーロプロセツサ |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201009 |