CN111753972A - 神经网络运算模块及方法 - Google Patents

神经网络运算模块及方法 Download PDF

Info

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
Application number
CN201910235215.4A
Other languages
English (en)
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910235215.4A priority Critical patent/CN111753972A/zh
Priority to PCT/CN2020/080402 priority patent/WO2020192582A1/zh
Priority to US17/440,479 priority patent/US20220156562A1/en
Publication of CN111753972A publication Critical patent/CN111753972A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical 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层的数据包括输入神经元梯度
Figure BDA0002007230370000011
输出神经元梯度
Figure BDA0002007230370000012
权重梯度
Figure BDA0002007230370000013
可以将上面的数据均用定点数进行表示,也可以用定点数进行运算。
在神经网络的训练过程通常包括正向运算和反向运算两个步骤,在反向运算时,输入神经元梯度、权重梯度和输出神经元梯度所需要的精度可能会出现变化,可能随着训练的过程增大,如果定点数的精度不够,会导致运算结果出现较大误差,甚至会导致训练失败。
发明内容
本发明实施例所要解决的技术问题在于神经网络运算过程中,输入神经元精度、权重精度或者输出神经元梯度精度不够,导致出现运算或训练的结果存在误差,本发明实施例提供一种神经网络运算模块及方法,动态调整输入神经元精度,权重精度和输出神经元梯度精度,降低了运算结果或训练结果的误差。
第一方面,本发明提供了一种神经网络运算模块,该神经网络运算模块用于执行多层神经网络的运算,包括:
存储单元,用于存储所述多层神经网络的权重精度和输出神经元梯度精度;
控制器单元,从所述存储单元获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw
运算单元,用于根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,根据减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
在一种可行的实施例中,所述相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度
Figure BDA0002007230370000014
和第L层输出神经元梯度精度
Figure BDA0002007230370000015
在根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值的方面,所述控制器单元具体用于:
若所述第L-1层输出神经元梯度精度
Figure BDA0002007230370000016
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA00020072303700000214
获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度
Figure BDA0002007230370000021
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000022
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An
在一种可行的实施例中,所述控制器单元根据所述第L-1层中多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000023
获取多个误差传递精度预估值,包括:
所述控制器单元根据第一预设公式对所述第L-1层中多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000024
进行计算,以得到所述多个误差传递精度预估值;
其中,所述第一预设公式为:
Figure BDA0002007230370000025
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure BDA0002007230370000026
为所述第L-1层中多个输出神经元中的第i个。
在一种可行的实施例中,所述控制器单元根据所述第L-1输出神经元梯度精度
Figure BDA0002007230370000027
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度,获取多个误差传递精度预估值,包括:
所述控制器单元根据第二预设公式对所述第L-1层输出神经元梯度精度
Figure BDA0002007230370000028
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度进行计算,以得到所述多个误差传递精度预估值;
其中,所述第二预设公式为:
Figure BDA0002007230370000029
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure BDA00020072303700000210
为所述第L层中多个输出神经元中的第i个。
在一种可行的实施例中,所述控制器单元根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An
在一种可行的实施例中,所述控制器单元减小所述相邻两层输出神经元梯度精度包括减小所述第L-1层输出神经元梯度精度
Figure BDA00020072303700000211
和第L层输出神经元梯度精度
Figure BDA00020072303700000212
在一种可行的实施例中,所述控制器单元减小所述第L-1层中多个输出神经元梯度精度
Figure BDA00020072303700000213
时,增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽;
所述控制器单元减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
所述控制器单元减小所述第L层输出神经元梯度精度
Figure BDA0002007230370000031
时,增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述控制器单元增加当前表示所述第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层输出神经元梯度精度
Figure BDA0002007230370000041
和第L层输出神经元梯度精度
Figure BDA0002007230370000042
所述根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值包括:
若所述第L-1层输出神经元梯度精度
Figure BDA0002007230370000043
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000044
获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度
Figure BDA0002007230370000045
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000046
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An
在一种可行的实施例中,所述根据所述第L-1层中的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000047
获取多个误差传递精度预估值,包括:
根据第一预设公式对所述第L-1层中的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure BDA0002007230370000048
进行计算,以得到所述多个误差传递精度预估值;
其中,所述第一预设公式为:
Figure BDA0002007230370000049
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure BDA00020072303700000410
为所述第L-1层中多个输出神经元中的第i个。
在一种可行的实施例中,所述根据所述第L-1层输出神经元梯度精度
Figure BDA00020072303700000411
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度,获取多个误差传递精度预估值,包括:
根据第二预设公式对所述第L-1层输出神经元梯度精度
Figure BDA00020072303700000412
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度进行计算,以得到所述多个误差传递精度预估值;
其中,所述第二预设公式为:
Figure BDA00020072303700000417
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure BDA00020072303700000413
为所述第L层中多个输出神经元中的第i个。
在一种可行的实施例中,所述根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;从多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;从多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;对多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An
在一种可行的实施例中,所述减小所相述邻两层输出神经元梯度精度包括减小所述第L-1层输出神经元梯度精度
Figure BDA00020072303700000414
和第L层输出神经元梯度精度
Figure BDA00020072303700000415
在一种可行的实施例中,所述减小所述第L-1层输出神经元梯度精度
Figure BDA00020072303700000416
时,增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽;
所述减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
所述减小所述第L层输出神经元梯度精度
Figure BDA0002007230370000051
时,增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,包括:
根据An-Ar的绝对值按照第一预设步长N1增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽,或者;根据第二预设步长N2增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
在一种可行的实施例中,所述增加所述权重精度Sw,包括:
根据An-Ar的绝对值按照第二预设步长N2增加当前表示所述权重的定点数据格式的位宽,或者;按照2倍递减的方式增加当前表示所述权重的定点数据格式的位宽,或者;根据第二预设步长N2增加当前表示所述权重的定点数据格式的位宽。
在一种可行的实施例中,所述增加当前表示所述第L-1层输出神经元梯度精度
Figure BDA0002007230370000054
的定点数据格式的位宽,包括:
根据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层输出神经元精度
Figure BDA0002007230370000052
权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000053
以在满足运算需求的同时,减小了运算结果的误差,提高了运算结果的精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种神经网络运算模块的结构示意图;
图2为本发明实施例提供的一种相邻两层神经输入神经元的示意图;
图3为本发明实施例提供的另一种相邻两层神经输入神经元的示意图;
图4为本发明实施例提供的一种神经网络运算方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
在神经网络运算的过程中,由于经过加减乘除和卷积等一系列运算,正向运算过程包括的输入神经元、权重和输出神经元和反向训练过程包括的输入神经元梯度、权重梯度和输出神经元梯度也会发生变化。以定点数据格式表示输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度有可能需要增大或者减小。如果输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度不够,会导致运算结果出现较大的误差,甚至会导致反向训练失败;如果输入神经元、权重、输出神经元、输入神经元梯度、权重梯度和输出神经元梯度的精度冗余,则会增加不必要的的运算开销,浪费运算资源。本申请提出了一种神经网络运算模块及方法,在进行神经网络运算的过程中动态调整上述数据的精度,以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
在本申请的实施例中,是通过调整上述数据的位宽来达到调整该数据精度的目的。
参见图1,图1为本申请实施例提供的一种神经网络运算模块的结构示意图。该神经网络运算模块用于执行多层神经网络运算。如图1所示,该神经网络运算模块包括:
存储单元101用于存储输出神经元梯度精度和权重精度。
控制器单元102,用于从上述存储单元101中获取第L-1层输出神经元梯度精度
Figure BDA0002007230370000061
权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000062
其中,L为大于1的整数;根据该第L-1层输出神经元梯度精度
Figure BDA0002007230370000063
权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000064
获取误差传递梯度更新精度A;当该误差传递精度预估值A小于预设精度Ar时,减小输出神经元梯度精度
Figure BDA0002007230370000065
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000066
在一种可行的实施例中,上述存储单元101还用于存储输出神经元和权重;上述控制器单元102从该存储单元101获取权重、第L-1层输出神经元和第L层输出神经元;根据该权重、第L-1层输出神经元和第L层输出神经元获取上述权重精度Sw、第L-1层输出神经元梯度精度
Figure BDA0002007230370000067
和第L层输出神经元梯度精度
Figure BDA0002007230370000068
在一种可行的实施例中,控制器单元102根据该第L-1层输出神经元梯度精度
Figure BDA0002007230370000069
权重精度Sw和第L层输出神经元梯度精度
Figure BDA00020072303700000610
获取误差传递梯度更新精度A,包括:
控制器单元102根据第一预设公式及第L-1层输出神经元梯度精度
Figure BDA00020072303700000611
权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000071
获取误差传递梯度更新精度A。其中,第一预设公式为:
Figure BDA0002007230370000072
其中,上述控制器单元102可以根据经验进行预先设置上述预设精度Ar,也可以通过改变输入参数的方式获得与该输入参数匹配的Ar;还可以通过机器学习的方法获取上述预设精度Ar
优选地,上述控制器单元102根据上层输出神经元的个数设置上述预设精度Ar,且上层输出神经元的个数越大,则上述预设精度Ar越大。
需要指出的是,由于上述第L层输出神经元梯度精度
Figure BDA0002007230370000073
上述控制器单元102减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000074
是指增加表示该输出神经元梯度的定点数据格式的小数部分位宽s1。
可选地,上述控制器单元102根据An-A的绝对值按照第一预设步长N1增加上述表示第L层输出神经元的定点数据格式的小数部分位宽s1。
具体地,对于表示上述输出神经元梯度的定点数据格式的小数部分位宽s1,上述控制器单元102每次增加N1位,即小数部分的位宽为s1+N1,并得到第L层输出神经元梯度精度
Figure BDA0002007230370000075
可选地,上述第一预设步长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可以相同或者不相同。
可选地,上述控制器单元102减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000076
时,增加表示该输出神经元梯度的定点数据格式的位宽。
进一步地,由于减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000077
是通过增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽,由于表示上述第L层输出神经元梯度的定点数据格式的位宽不变,若当小数部分位宽增加时,则整数部分位宽减小,该定点数据格式表示的数据的精度会提高,但是减小该定点数据格式表示的范围,因此在控制器单元102提高上述第L层输出神经元梯度精度
Figure BDA0002007230370000078
后,该控制器单元102增加上述定点数据格式的位宽,且该定点数据格式的位宽增加后,其整数部分的位宽保持不变,即整数部分位宽的增加值与小数部分位宽的增加值相同,即在保证了小数部分位宽改变的情况下,使得该定点数据格式表示的最大值保持不变,并且提高了精度。
举例说明,上述定点数据格式的位宽为9,其中整数部分的位宽为5,小数部分的位宽为4,上述控制器单元102增加上述小数部分的位宽和整数部分的位宽后,小数部分的位宽为8,则整数部分的位宽为5,即增加上述小数部分的位宽,整数部分的位宽保持不变。
在一种可行的实施例中,上述控制器单元102增加上述第L层输出神经元梯度精度
Figure BDA0002007230370000079
后,该控制器单元102还用于:
判断第L层输出神经元梯度精度
Figure BDA0002007230370000081
是否大于需求精度,该需求精度为进行多层神经网络运算时输出神经元梯度的最小精度;
当第L层输出神经元梯度精度
Figure BDA0002007230370000082
大于需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽。
需要指出的是,上述控制器单元102增大上述第L层输出神经元梯度精度
Figure BDA0002007230370000083
的原因是该输出神经元梯度精度
Figure BDA0002007230370000084
控制大于上述需求精度,即精度不满足需求,此时会降低运算精度,影响运算结果的精度。因此为了提高运算精度,避免影响运算结果的精度,需要减小上述输出神经元梯度精度
Figure BDA0002007230370000085
具体地,由上述相关描述可知,上述控制器单元102减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000086
后,需要进一步判断精度是否满足需求,即判断输出神经元梯度精度
Figure BDA0002007230370000087
是否大于需求精度。当确定上述输出神经元梯度精度
Figure BDA0002007230370000088
大于上述需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽,以提高上述输出神经元梯度精度
Figure BDA0002007230370000089
需要指出的是,上述控制器单元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层输出神经元梯度精度
Figure BDA0002007230370000091
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000092
获取多个误差传递精度预估值;若第L层输出神经元梯度精度
Figure BDA0002007230370000093
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000094
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从多个误差传递精度预估值选择出目标误差传递精度预估值An
在一个可能的实施例中,控制器单元102根据第L-1层中多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000095
获取多个误差传递精度预估值,包括:
控制器单元102根据第二预设公式对第L-1层中多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000096
进行计算,以得到多个误差传递精度预估值;
其中,第二预设公式为:
Figure BDA0002007230370000097
Ai为多个误差传递精度预估值中的第i个,
Figure BDA0002007230370000098
为第L-1层中多个输出神经元中的第i个。
如图2所示,当上述神经网络的第L-1层输出神经元梯度精度
Figure BDA0002007230370000099
包括M个输出神经元梯度精度,即包括
Figure BDA00020072303700000910
时,控制器单元102根据第二预设公式对M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度
Figure BDA00020072303700000911
进行计算,以得到M个误差传递精度预估值,即A1,A2,…,AM-1,AM
其中,
Figure BDA00020072303700000912
Figure BDA00020072303700000913
……
Figure BDA00020072303700000914
Figure BDA00020072303700000915
上述控制器单元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层输出神经元梯度精度
Figure BDA00020072303700000916
确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可控制器单元102在根据M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度
Figure BDA0002007230370000101
进行计算,以得到M个误差传递精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
如图3所示,当上述神经网络的第L层输出神经元梯度精度
Figure BDA0002007230370000102
包括N个输出神经元梯度精度,即包括
Figure BDA0002007230370000103
时,控制器单元102根据第三预设公式对N个输出神经元梯度精度、权重精度和第L-1层输出神经元梯度精度
Figure BDA0002007230370000104
进行计算,以得到N个误差传递精度预估值,即A1,A2,…,AN-1,AN
其中,
Figure BDA0002007230370000105
Figure BDA0002007230370000106
……
Figure BDA0002007230370000107
Figure BDA0002007230370000108
上述控制器单元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层输出神经元梯度精度
Figure BDA0002007230370000109
确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可控制器单元102在根据第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度
Figure BDA00020072303700001010
确定多个误差传输精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
其中,上述控制器单元102根据上述策略3和策略3’确定目标误差传输精度预估值An。进而根据目标误差传输精度预估值An与预设精度Ar的大小关系来调整上述输出神经元梯度精度
Figure BDA00020072303700001011
权重精度Sw和输出神经元梯度精度
Figure BDA00020072303700001012
当该目标误差传输精度预估值An小于预设精度Ar时,控制器单元102减小上述输出神经元梯度精度
Figure BDA00020072303700001013
权重精度Sw和输出神经元梯度精度
Figure BDA00020072303700001014
其中,M为大于1的整数。采用策略3和策略3’的好处是可以去确保精度够用,不会溢出。
需要说明的是,控制器单元102减小相邻两层输出神经元梯度精度包括减小第L-1层输出神经元梯度精度
Figure BDA00020072303700001015
和第L层输出神经元梯度精度
Figure BDA00020072303700001016
若第L-1层包括M个输出神经元梯度精度,则控制器单元102减小M个输出神经元梯度精度,即
Figure BDA00020072303700001017
Figure BDA00020072303700001018
若第L层包括N个输出神经元梯度精度,则控制器单元102减小该N个输出神经元梯度精度,即即
Figure BDA0002007230370000111
其中,控制器单元102减小第L-1层输出神经元梯度精度
Figure BDA0002007230370000112
时,增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽;若第L-1层输出神经元梯度精度
Figure BDA0002007230370000113
包括M个输出神经元梯度精度,则控制器单元102增加当前表示M个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
控制器单元102减小权重精度Sw时,增加当前表示权重的定点数据格式的位宽;
控制器单元102减小第L层输出神经元梯度精度
Figure BDA0002007230370000114
时,增加当前表示第L层输出神经元梯度的定点数据格式的位宽;若第L层输出神经元梯度精度
Figure BDA0002007230370000115
包括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层输出神经元梯度的定点数据格式的位宽的相关描述,在此不再叙述。
在一个示例中,若Y1/Y2小于预设阈值K,则控制器单元102对相邻两层输出神经元梯度精度(包括第L-1层输出神经元梯度精度
Figure BDA0002007230370000121
和第L层输出神经元梯度精度
Figure BDA0002007230370000122
和权重精度Sw不进行调整。
运算单元103,还用于根据减小后的输出神经元梯度精度来分别表示第L-1层和第L层输出神经元梯度,根据减小后的权重精度表示权重,以进行后续运算。
按照上述方法调整上述输出神经元梯度精度
Figure BDA0002007230370000123
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000124
后,上述运算单元103在运算过程中,按照调整后的输出神经元梯度精度
Figure BDA0002007230370000125
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000126
以定点数形式表示上述第L层的输出神经元、权重和第L-1层的输出神经元,然后进行后续的运算。
需要说明的是,上述控制器单元102计算目标误差传输精度预估值An的频率可以根据需求灵活设置。
其中,上述控制器单元102可根据神经网络训练过程中的训练迭代次数调整计算目标误差传输精度预估值An的频率。
可选地,上述控制器单元102在神经网络训练过程中,每迭代一轮就重新计算目标误差传输精度预估值An;或者每迭代预设次数就重新计算目标误差传输精度预估值An;或者根据目标误差传输精度预估值An的变化进行设置上述频率。
可选地,上述控制器单元102根据神经网络训练中的训练迭代次数来设置计算目标误差传输精度预估值An的频率。
可以看出,在本发明实施例的方案中,在神经网络运算过程中,动态调整上述第L-1层的输出神经元梯度精度
Figure BDA0002007230370000127
权重精度Sw和第L层的输出梯度神经元梯度精度
Figure BDA0002007230370000128
以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
参见图4,图4为本发明实施例提供的一种神经网络运算方法的流程示意图。该神经网络运算方法用于执行多层神经网络运算。如图4所示,该方法包括:
S401、神经网络运算模块获取神经网络第L-1层输出神经元梯度精度
Figure BDA0002007230370000129
权重精度Sw和第L层输出神经元梯度精度
Figure BDA00020072303700001210
其中,上述第L-1层输出神经元梯度精度
Figure BDA00020072303700001211
权重精度Sw和第L层输出神经元梯度精度
Figure BDA00020072303700001212
的取值可以相等,也可以是部分相等或者两两不相等。
其中,上述神经网络为多层神经网络,上述输出神经元梯度精度
Figure BDA00020072303700001213
为该多层神经网络中的除了第一层之外的任一层输出神经元梯度精度;上述输出神经元梯度精度
Figure BDA00020072303700001214
为上述多层神经网络中的任一层输出神经元梯度精度。
在一种可行的实施例中,上述神经网络运算模块获取上述神经网络的权重和第L-1层和第L层的输出神经元;然后根据上述权重和上述第L层和第L-1层的输出神经元获取上述上述输出神经元梯度精度
Figure BDA00020072303700001215
权重精度Sw和输出神经元梯度精度
Figure BDA00020072303700001216
S402、神经网络运算模块根据第L-1层输出神经元梯度精度
Figure BDA00020072303700001217
权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000131
获取误差传递梯度更新精度A。
具体地,上述神经网络运算模块根据第一预设公式对上述输出神经元梯度精度
Figure BDA0002007230370000132
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000133
进行计算,以得到上述误差传递精度预估值A。
其中,上述第一预设公式为
Figure BDA0002007230370000134
S403、当误差传递精度预估值A小于预设精度Ar时,神经网络运算模块减小第L-1层输出神经元梯度精度、权重精度和第L输出神经元梯度精度。
其中,上述预设精度Ar可以根据经验进行预先设置,也可以通过改变输入参数的方式获得与该输入参数匹配的Ar;还可以通过机器学习的方法获取上述预设精度Ar
优选地,上述神经网路运算模块根据上层输出神经元的个数设置上述预设精度Ar,且上层输出神经元的个数越大,则上述预设精度Ar越大。
需要指出的是,由于上述第L层输出神经元梯度精度
Figure BDA0002007230370000135
神经网络运算模块减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000136
是指增加表示该输出神经元梯度的定点数据格式的小数部分位宽s1。
可选地,神经网络运算模块根据An-A的绝对值按照第一预设步长N1增加上述表示第L层输出神经元的定点数据格式的小数部分位宽s1。
具体地,对于表示上述输出神经元梯度的定点数据格式的小数部分位宽s1,神经网络运算模块每次增加N1位,即小数部分的位宽为s1+N1,并得到第L层输出神经元梯度精度
Figure BDA0002007230370000137
可选地,上述第一预设步长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层输出神经元梯度精度
Figure BDA0002007230370000138
时,增加表示该输出神经元梯度的定点数据格式的位宽。
进一步地,由于减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000139
是通过增加表示上述第L层输出神经元梯度的定点数据格式的小数部分位宽,由于表示上述第L层输出神经元梯度的定点数据格式的位宽不变,若当小数部分位宽增加时,则整数部分位宽减小,该定点数据格式表示的数据的精度会提高,但是减小该定点数据格式表示的范围,因此在控制器单元102提高上述第L层输出神经元梯度精度
Figure BDA00020072303700001310
后,该控制器单元102增加上述定点数据格式的位宽,且该定点数据格式的位宽增加后,其整数部分的位宽保持不变,即整数部分位宽的增加值与小数部分位宽的增加值相同,即在保证了小数部分位宽改变的情况下,使得该定点数据格式表示的最大值保持不变,并且提高了精度。
举例说明,上述定点数据格式的位宽为9,其中,整数部分的位宽为5,小数部分的位宽为4,神经网络运算模块增加上述小数部分的位宽和整数部分的位宽后,小数部分的位宽为8,则整数部分的位宽为5,即增加上述小数部分的位宽,整数部分的位宽保持不变。
在一种可行的实施例中,神经网络运算模块增加上述第L层输出神经元梯度精度
Figure BDA0002007230370000141
后,该神经网络运算模块还用于:
判断第L层输出神经元梯度精度
Figure BDA0002007230370000142
是否大于需求精度,该需求精度为进行多层神经网络运算时输出神经元梯度的最小精度;
当第L层输出神经元梯度精度
Figure BDA0002007230370000143
大于需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽。
需要指出的是,上述控制器单元102增大上述第L层输出神经元梯度精度
Figure BDA0002007230370000144
的原因是该输出神经元梯度精度
Figure BDA0002007230370000145
控制大于上述需求精度,即精度不满足需求,此时会降低运算精度,影响运算结果的精度。因此为了提高运算精度,避免影响运算结果的精度,需要减小上述输出神经元梯度精度
Figure BDA0002007230370000146
具体地,由上述相关描述可知,上述控制器单元102减小上述第L层输出神经元梯度精度
Figure BDA0002007230370000147
后,需要进一步判断精度是否满足需求,即判断输出神经元梯度精度
Figure BDA0002007230370000148
是否大于需求精度。当确定上述输出神经元梯度精度
Figure BDA0002007230370000149
大于上述需求精度时,增加表示第L层输出神经元梯度的定点数据格式的位宽,以提高上述输出神经元梯度精度
Figure BDA00020072303700001410
需要指出的是,上述控制器单元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层输出神经元梯度精度
Figure BDA0002007230370000151
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000152
获取多个误差传递精度预估值;若第L层输出神经元梯度精度
Figure BDA0002007230370000153
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000154
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从多个误差传递精度预估值选择出目标误差传递精度预估值An
在一个可能的实施例中,神经网络运算模块根据第L-1层中多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000155
获取多个误差传递精度预估值,包括:
控制器单元根据第二预设公式对第L-1层中多个输出神经元梯度精度、权重精度Sw和第L层输出神经元梯度精度
Figure BDA0002007230370000156
进行计算,以得到多个误差传递精度预估值;
其中,第二预设公式为:
Figure BDA0002007230370000157
Ai为多个误差传递精度预估值中的第i个,
Figure BDA0002007230370000158
为第L-1层中多个输出神经元中的第i个。
如图2所示,当上述神经网络的第L-1层输出神经元梯度精度
Figure BDA0002007230370000159
包括M个输出神经元梯度精度,即包括
Figure BDA00020072303700001510
时,神经网络运算模块根据第二预设公式对M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度
Figure BDA00020072303700001511
进行计算,以得到M个误差传递精度预估值,即A1,A2,…,AM-1,AM
其中,
Figure BDA00020072303700001512
Figure BDA00020072303700001513
……
Figure BDA00020072303700001514
Figure BDA00020072303700001515
神经网络运算模块根据预设策略从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层输出神经元梯度精度
Figure BDA0002007230370000161
确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可参见神经网络运算模块在根据M个输出神经元梯度精度、权重精度和第L层输出神经元梯度精度
Figure BDA0002007230370000162
进行计算,以得到M个误差传递精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
如图3所示,当上述神经网络的第L层输出神经元梯度精度
Figure BDA0002007230370000163
包括N个输出神经元梯度精度,即包括
Figure BDA0002007230370000164
时,神经网络运算模块根据第三预设公式对N个输出神经元梯度精度、权重精度和第L-1层输出神经元梯度精度
Figure BDA0002007230370000165
进行计算,以得到N个误差传递精度预估值,即A1,A2,…,AN-1,AN
其中,
Figure BDA0002007230370000166
Figure BDA0002007230370000167
……
Figure BDA0002007230370000168
Figure BDA0002007230370000169
上述神经网络运算模块根据预设策略从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层输出神经元梯度精度
Figure BDA00020072303700001610
确定多个误差传输精度预估值,并根据上述预设策略确定目标误差传输精度预估值An。具体过程可参见神经网络运算模块在根据第L层中的N个输出神经元梯度精度中的部分、权重精度和第L-1层输出神经元梯度精度
Figure BDA00020072303700001611
确定多个误差传输精度预估值及目标误差传输精度预估值An的方面的相关描述,在此不再叙述。
其中,神经网络运算模块根据上述策略3和策略3’确定目标误差传输精度预估值An。进而根据目标误差传输精度预估值An与预设精度Ar的大小关系来调整上述输出神经元梯度精度
Figure BDA00020072303700001612
权重精度Sw和输出神经元梯度精度
Figure BDA00020072303700001613
当该目标误差传输精度预估值An小于预设精度Ar时,神经网络运算模块减小上述输出神经元梯度精度
Figure BDA00020072303700001614
权重精度Sw和输出神经元梯度精度
Figure BDA00020072303700001615
其中,M为大于1的整数。采用策略3和策略3’的好处是可以去确保精度够用,不会溢出。
需要说明的是,神经网络运算模块减小相邻两层输出神经元梯度精度包括减小第L-1层输出神经元梯度精度
Figure BDA0002007230370000171
和第L层输出神经元梯度精度
Figure BDA0002007230370000172
若第L-1层包括M个输出神经元梯度精度,则神经网络运算模块减小M个输出神经元梯度精度,即
Figure BDA0002007230370000173
Figure BDA0002007230370000174
若第L层包括N个输出神经元梯度精度,则控制器单元102减小该N个输出神经元梯度精度,即即
Figure BDA0002007230370000175
其中,神经网络运算模块减小第L-1层输出神经元梯度精度
Figure BDA0002007230370000176
时,增加当前表示第L-1层输出神经元梯度的定点数据格式的位宽;若第L-1层输出神经元梯度精度
Figure BDA0002007230370000177
包括M个输出神经元梯度精度,则神经网络运算模块增加当前表示M个输出神经元梯度中每个输出神经元梯度的定点数据格式的位宽。
神经网络运算模块减小权重精度Sw时,增加当前表示权重的定点数据格式的位宽;
神经网络运算模块减小第L层输出神经元梯度精度
Figure BDA0002007230370000178
时,增加当前表示第L层输出神经元梯度的定点数据格式的位宽;若第L层输出神经元梯度精度
Figure BDA0002007230370000179
包括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层输出神经元梯度的定点数据格式的位宽的相关描述,在此不再叙述。
在一个示例中,若Y1/Y2小于预设阈值K,则神经网络运算模块对相邻两层输出神经元梯度精度(包括第L-1层输出神经元梯度精度
Figure BDA0002007230370000181
和第L层输出神经元梯度精度
Figure BDA0002007230370000182
和权重精度Sw不进行调整。
神经网络运算模块根据减小后的输出神经元梯度精度来分别表示第L-1层和第L层输出神经元梯度,根据减小后的权重精度表示权重,以进行后续运算。
按照上述方法调整上述输出神经元梯度精度
Figure BDA0002007230370000183
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000184
后,神经网络运算模块在运算过程中,按照调整后的输出神经元梯度精度
Figure BDA0002007230370000185
权重精度Sw和输出神经元梯度精度
Figure BDA0002007230370000186
以定点数形式表示上述第L层的输出神经元、权重和第L-1层的输出神经元,然后进行后续的运算。
需要说明的是,上述神经网络运算模块计算目标误差传输精度预估值An的频率可以根据需求灵活设置。
其中,上述神经网络运算模块可根据神经网络训练过程中的训练迭代次数调整计算目标误差传输精度预估值An的频率。
可选地,神经网络运算模块在神经网络训练过程中,每迭代一轮就重新计算目标误差传输精度预估值An;或者每迭代预设次数就重新计算目标误差传输精度预估值An;或者根据目标误差传输精度预估值An的变化进行设置上述频率。
可选地,神经网络运算模块根据神经网络训练中的训练迭代次数来设置计算目标误差传输精度预估值An的频率。
可以看出,在本发明实施例的方案中,在神经网络运算过程中,动态调整上述第L-1层的输出神经元梯度精度
Figure BDA0002007230370000187
权重精度Sw和第L层的输出梯度神经元梯度精度
Figure BDA0002007230370000188
以在满足运算需求的同时,减小了运算结果的误差和运算开销,节省了运算资源。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

Claims (26)

1.一种神经网络运算模块,其特征在于,所述神经网络运算模块用于执行多层神经网络的运算,所述神经网络模块包括:
存储单元,用于存储所述多层神经网络的权重精度和输出神经元梯度精度;
控制器单元,用于从所述存储单元获取所述多层神经网络相邻两层输出神经元梯度精度和权重精度Sw;根据所述相邻两层输出神经元梯度精度和权重精度Sw确定目标误差传递精度预估值An;当所述目标误差传输精度预估值An小于所述预设精度Ar时,减小所述相邻两层输出神经元梯度精度和所述权重精度Sw
运算单元,用于根据减小后的相邻两层输出神经元梯度精度来表示所述相邻两层输出神经元梯度,用于减小后的权重精度Sw来表示所述多层神经网络的权重,并进行后续运算。
2.根据权利要求1所述的模块,其特征在于,所述相邻两层输出神经元梯度精度包括第L-1层输出神经元梯度精度
Figure FDA0002007230360000011
和第L层输出神经元梯度精度
Figure FDA0002007230360000012
在根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值的方面,所述控制器单元具体用于:
若所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000013
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000014
获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度
Figure FDA0002007230360000015
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000016
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An
3.根据权利要求2所述的模块,其特征在于,所述控制器单元根据所述第L-1层中多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000017
获取多个误差传递精度预估值,包括:
所述控制器单元根据第一预设公式对所述第L-1层中多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000018
进行计算,以得到所述多个误差传递精度预估值;
其中,所述第一预设公式为:
Figure FDA0002007230360000019
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure FDA00020072303600000110
为所述第L-1层中多个输出神经元中的第i个。
4.根据权利要求2所述的模块,其特征在于,所述控制器单元根据所述第L-1输出神经元梯度精度
Figure FDA00020072303600000111
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度,获取多个误差传递精度预估值,包括:
所述控制器单元根据第二预设公式对所述第L-1层输出神经元梯度精度
Figure FDA00020072303600000112
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度进行计算,以得到所述多个误差传递精度预估值;
其中,所述第二预设公式为:
Figure FDA00020072303600000113
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure FDA00020072303600000114
为所述第L层中多个输出神经元中的第i个。
5.根据权利要求2-4任一项所述的模块,其特征在于,所述控制器单元根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An
6.根据权利要求2-5任一项所述的模块,其特征在于,所述控制器单元减小所述相邻两层输出神经元梯度精度包括减小所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000022
和第L层输出神经元梯度精度
Figure FDA0002007230360000021
7.根据权利要求6所述的模块,其特征在于,所述控制器单元减小所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000023
时,增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽;
所述控制器单元减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
所述控制器单元减小所述第L层输出神经元梯度精度
Figure FDA0002007230360000024
时,增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
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层输出神经元梯度精度
Figure FDA0002007230360000031
和第L层输出神经元梯度精度
Figure FDA0002007230360000032
所述根据所述相邻两层输出神经元梯度精度和权重精度确定目标误差传递精度预估值包括:
若所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000041
包括多个输出神经元梯度精度,则根据第L-1层多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000042
获取多个误差传递精度预估值;若所述第L层输出神经元梯度精度
Figure FDA0002007230360000043
包括多个输出神经元梯度精度,则根据第L层的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000044
获取多个误差传递精度预估值;其中,L为大于1的整数;
根据预设策略从所述多个误差传递精度预估值选择出所述目标误差传递精度预估值An
16.根据权利要求15所述的方法,其特征在于,所述根据所述第L-1层中的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000045
获取多个误差传递精度预估值,包括:
根据第一预设公式对所述第L-1层中的多个输出神经元梯度精度、所述权重精度Sw和所述第L层输出神经元梯度精度
Figure FDA0002007230360000046
进行计算,以得到所述多个误差传递精度预估值;
其中,所述第一预设公式为:
Figure FDA0002007230360000047
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure FDA0002007230360000048
为所述第L-1层中多个输出神经元中的第i个。
17.根据权利要求15所述的模块,其特征在于,所述根据所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000049
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度,获取多个误差传递精度预估值,包括:
根据第二预设公式对所述第L-1层输出神经元梯度精度
Figure FDA00020072303600000410
所述权重精度Sw和所述第L层中的多个输出神经元梯度精度进行计算,以得到所述多个误差传递精度预估值;
其中,所述第二预设公式为:
Figure FDA00020072303600000411
所述Ai为所述多个误差传递精度预估值中的第i个,所述
Figure FDA00020072303600000412
为所述第L层中多个输出神经元中的第i个。
18.根据权利要求15-17任一项所述的方法,其特征在于,所述根据预设策略从所述多个误差传递精度预估值选择出目标误差传递精度预估值An,包括:
从所述多个误差传递精度预估值中任选一个作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最大值作为所述目标误差传递精度预估值An,或者;
从所述多个误差传递精度预估值中选取最小值作为所述目标误差传递精度预估值An,或者;
对所述多个误差传递精度预估值进行求均值计算,以得到计算结果,所述计算结果为所述目标误差传递精度预估值An,或者;
根据预设权重对所述多个误差传递精度预估值进行加权后均值计算,以得到加权均值结果,所述加权均值结果为所述目标误差传递精度预估值An
19.根据权利要求15-18任一项所述的方法,其特征在于,所述减小所述相邻两层输出神经元梯度精度包括减小所述第L-1层输出神经元梯度精度
Figure FDA00020072303600000414
和第L层输出神经元梯度精度
Figure FDA00020072303600000413
20.根据权利要求19所述的方法,其特征在于,所述减小所述第L-1层输出神经元梯度精度
Figure FDA0002007230360000051
时,增加当前表示所述第L-1层输出神经元梯度的定点数据格式的位宽;
所述减小所述权重精度Sw时,增加当前表示所述权重的定点数据格式的位宽;
所述减小所述第L层输出神经元梯度精度
Figure FDA0002007230360000052
时,增加当前表示所述第L层输出神经元梯度的定点数据格式的位宽。
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任一项所述的神经网络运算方法。
CN201910235215.4A 2019-03-26 2019-03-26 神经网络运算模块及方法 Pending CN111753972A (zh)

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)

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