本公开涉及计算机领域,更具体地涉及一种防止数据溢出的方法、装置和芯片。
背景技术:
在现有技术使用的板卡上,由于在机器学习单元上的表示精度是float16浮点数格式,一个float16浮点数格式数据占据两个字节,其中1位符号位,5位指数位,10位有效精度。数值计算公式为:(-1)^signbit*2^(e)*(1+significantbits)。一个float16浮点数格式数据最大值为:0111101111111111=(-1)^0*2^15*(1+1-2^-10)=65504,最小值为:0000010000000000=2^-14=6.10*10^-5,即一个float16浮点数格式数据表示范围是[6.10*10^-5,65504]。而在中央处理单元(cpu)上表示的精度是float32浮点数格式数据。
现有技术存在的缺陷在于,因为cpu和机器学习单元存在交互行为,数据从cpu拷贝到机器学习单元上,数据就从float32浮点数格式数据转换到了float16浮点数格式数据。但是float16浮点数格式数据因为狭窄的表示范围会带来溢出问题。网络的输入、输出或者权值表示的范围超出了float16浮点数格式数据的表示范围后,在机器学习单元上这个数值就会溢出(上溢或者下溢)。
技术实现要素:
为了至少解决在上述背景技术部分所描述的问题,以避免数据的溢出,本公开提出了如下的技术方案。
根据本公开的第一方面,提供了一种防止数据溢出的方法,可以包括下面的步骤:
在数据上溢的情况下,将输入数据先缩小n倍,然后在后续的输出单元再放大相应的倍数;和/或
在数据下溢的情况下,将输入数据先放大n倍,然后在后续的输出单元再缩小相应的倍数。
根据本公开的第二方面,提供了一种用于防止数据溢出的装置,可以包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储程序指令,当程序指令由处理器加载并执行时,使得装置执行根据上述的方法。
根据本公开的第三方面,提供了一种用于防止数据溢出的芯片,可以包括:
输入端,其配置成用于接收输入数据;
处理器,其配置成用于:
在数据上溢的情况下,将输入数据先缩小n倍,然后在后续的输出单元再放大相应的倍数;和/或
在数据下溢的情况下,将输入数据先放大n倍,然后在后续的输出单元再缩小相应的倍数。
借助于上述的技术方案,使得在cpu和机器学习单元交互的时候,数据从cpu拷到机器学习单元上,即数据在从float32浮点数格式数据转换到float16浮点数格式数据的时候,不会出现float16浮点数格式数据因为狭窄的表示范围造成的溢出问题。
附图说明
图1示意性示出了现有技术中cpu的批量归一化层(bn层)的计算逻辑图。
图2示意性示出了根据本公开一个实施例的防止数据溢出的方法流程图;
图3示意性示出了根据本公开另一个实施例的机器学习单元的批量归一化层(bn层)的计算逻辑图;
图4示意性示出根据本公开一个实施例的一种组合处理装置的结构图;以及
图5示意性示出根据本公开一个实施例的一种板卡的结构示意图。
图6示意性示出了hw方向求和的例子。
具体实施方式
下面将结合附图1-6介绍现有技术以及本公开中的详细内容。
在现有技术中卷积层的作用是用来特征提取。批量归一化层(bn)层的作用是使每一层神经网络的输入保持相同分布,即,数据归一化。
关于本公开中使用的术语“上溢”与“下溢”,需要说明的是,“上溢”是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数据、上一条指令的指针,或者是其他程序的输出内容,这些内容都被覆盖或者破坏掉。可见一小部分数据或者一套指令的溢出就可能导致一个程序或者操作系统崩溃。与之对应的就是“下溢”,下溢是当一个超长的数据进入到缓冲区时,超出部分被写入下级缓冲区,下级缓冲区存放的是下一条指令的指针,或者是其他程序的输出内容。或者说,上溢:超出所能表示的最大正数;下溢:超出所能表示的最小负数。
在下面的描述中,计算中输出的权值形式是四维矩阵形式n,c,h,w,其中n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽。为了将代表的含义与具体的数值进行区分,大写的字母n,c,h,w代表了具体的含义,例如上面提到的n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽。小写字母n,c,h,w代表了相应的具体数值。例如n表示了输入数据的批数据量具体数值,c表示了每个数据的具体通道数,h表示了每个通道的高的数值、w表示了每个通道的宽的数值。
卷积层的输出和/或训练模式的输出是由卷积层和/或训练模式的输入数据、权值和偏置得到的。这里需要介绍一下本领域的批量归一化层(简称bn层或者batchnorm层)的计算公式:
批量归一化层的计算公式:
图1示意性示出了现有技术中cpu的批量归一化层(bn层)的计算逻辑图。
图1中的步骤101到步骤102是对输入数据在h和w方向进行求和(即,在每个通道的高h、每个通道的宽w方向求和),然后缩小hw倍。这个过程可以参考图6中的i、ii、iii、iv的四张图片。图6i的输入数据的形状是(1,2,3,4)四维向量,(即,n,c,h,w格式),然后对w方向(每个通道的宽方向)求和得到(1,2,3,1)的形状,即图6ii所示。例如将第一行w方向的数值求和,得到0+1+2+3=6;将第二行w方向的数值求和,得到4+5+6+7=22;将第三行w方向的数值求和,得到8+9+10+11=38;将第四行w方向的数值求和,得到12+13+14+15=54……;从而得到了图6ii所示的求和后的6、22、38、54、70、86数值。然后对h方向(每个通道的高方向)求和,得到(1,2,1,1)的形状,即图6iii所示。例如将第一数据通道的h方向的数值求和,得到6+22+38=66;将第二数据通道的h方向的数值求和,得到54+70+86=210。然后缩小hw倍,即3×4=12倍,得到图6iv所示的结果。例如将第一数据通道的数值缩小hw倍,即66/12=5.5;将第二数据通道的数值缩小hw倍,即210/12=17.5。针对图6的图6i,0的左边由四个“[”符号组成,也就是代表了4个维度。“[”从左到右的顺序依次代表n,c,h,w的具体数值。图1中的形状的变化是按照cpu的运算得到的。输入一般是4维(n,c,h,w),在某个维度求和后,那么这个维度的形状就是1了。
图1中会存在两处数据上溢的地方。第一处出现数据上溢的地方是对hw方向求和的时候,如果输入数据(input(n,c,h,w))数值偏大,规模偏大,hw方向求和就会溢出。另一处出现数据上溢的地方是除hw的时候,如果h和w相乘超过65504,即hw超过65504,也会存在数据上溢。
即,图1中的步骤101-->步骤102-->步骤103是在求取均值(存在上文说的两处溢出),步骤101-->步骤105-->步骤106-->步骤107-->步骤108是在求取方差(步骤101-->步骤105之间的平方步骤会出现溢出,另外在步骤105-->步骤106之间对hw方向求和存在溢出,然后除hw存在溢出)。步骤104,步骤107,步骤108,步骤109,步骤110在做一系列运算得到新的方差,如在图1中所示的(步骤109-->步骤110这里会出现数据的下溢),然后根据步骤101,步骤103,步骤110就可以得到最终的输出结果了,即output=(input-batch_mean)/(batch_variance)。步骤108-->步骤109出现的“加上eps这个值”,这里的eps一般是1e-5,一个很小的数,防止在做除法的时候,分母出现0。这是本领域技术人员常用的技术,在此不再赘述。
本公开的发明人设想了解决数据上溢的方法。总的原则是,第一处解决方法是先找到一个最大值,对输入数据进行缩放,在进行求和。第二处解决方法是分开除,即除w和除h分开除,避免上溢。关于这一点,还将在下面详细描述。
在数据上溢的情况下,对于输入数据或者权值先缩小n倍,然后在后面的输出单元再放大相应的倍数(放大n倍)。在数据下溢的情况下,对于输入数据或者权值要先放大n倍,然后在后面的输出单元再缩小相应的倍数(缩小n倍)。这里的“放大n倍”、“缩小n倍”中的n就是输入数据的批数据量具体数值。
例如在数据上溢的时候:两个数1000和100求乘积,得到100000,在除100得到1000。这个在cpu上是可以正常运算的。但在机器学习单元上求乘积这步会上溢得到65504,产生了数据的上溢。可以先缩小1000倍,然后在除法得到的结果那里再放大1000倍。下溢同理。
在有些情况下,会在卷积层中发生溢出。例如卷积层的权值存在问题,在cpu上卷积层的输出值表示范围正常,但在机器学习单元上的时候,输出就会溢出,影响卷积层及后面层的表示精度。发明人设想了在出问题的卷积层后面接批量归一化层。而批量归一化层的计算公式见下面的计算公式。批量归一化层的输入就是卷积层的输出,均值和方差是根据权值计算得到。所以需要把卷积层的权值先缩小n倍,那么卷积层的输出也就缩小n倍,然后对批量归一化层的均值缩小n倍,方差缩小n2倍。缩小的原理见下面的公式。分子和分母的
批量归一化层的计算公式:
其中的x表示输入数据,mean表示均值,var表示方差。
在有些情况下,会在bn层中发生溢出。bn层实际上是batchnorm层的一个变种。虽然bn层和batchnorm层都称为批量归一化层,但bn层和batchnorm层实现起来不太一样。由于上述针对批量归一化层阐述的原理,在bn层上也是可以使用的,因此上述设想的在数据上溢的情况下,对于输入数据或者权值先缩小n倍,然后在后面的输出单元再放大相应的倍数(放大n倍)。在数据下溢的情况下,对于输入数据或者权值要先放大n倍,然后在后面的输出单元再缩小相应的倍数(缩小n倍)(如在图2中的方法200的步骤202和204所示的),同样也应用于bn层。在bn层有两种模式,推理模式和训练模式。溢出发生在训练模式中。推理模式的均值和方差是从训练后的权值文件中计算得到。而训练模式是根据输入的值动态计算得到的。由于输入的不确定性,导致了均值和方差的不确定性,也就是存在上溢和下溢的问题。
cpu上的bn层计算流程就是按照图1所示的那样。若不发生溢出,机器学习单元上的计算流程也应当是按照图1的计算逻辑图进行。由于bn层发生了数据的溢出,因此图3是在机器学习单元上运行的改进的bn层运算逻辑,即,防止了数据溢出的计算流程。
如在上面提到的,在本公开的一个实施例中,其中卷积层的输出是批量归一化层的输入,在批量归一化层的输入中包含了需要优化的参数;或者训练模式的输出是推理模式的输入,在推理模式的输入中包含了需要优化的参数。
在本公开的一个实施例中,其中卷积层的输出和/或训练模式的输出是由卷积和/或训练模式的输入、权值和偏置得到的,优化参数包括根据权值优化均值和方差的计算过程。
在本公开的一个实施例中,其中优化均值和方差的计算过程可以包括:
在数据上溢的情况下,将权值先缩小n倍,然后将批量归一化层的均值缩小n倍,并且将批量归一化层的方差缩小n2倍;或者
在数据上溢的情况下,将训练模式输出的权值先缩小n倍,然后将推理模式的均值缩小n倍,并且将所推理模式的方差缩小n2倍。
其中输出的权值形式是四维矩阵形式n,c,h,w,其中n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽,在优化均值和方差的计算过程的步骤中是分别除以每个通道的高和每个通道的宽。
为了解决上面说到的溢出,采用了例如图2的运算方法。即,将输出的权值取绝对值,求取绝对值中的最大值,使用最大值缩放输出的权值。例如,针对输入相加会溢出的问题,首先求取输入的绝对值的最大值max(例如图6中的图6i,输入的绝对值的最大值max是23),然后对输入进行缩小max倍,见图3的步骤301到步骤304步。图3中的步骤305,步骤306,步骤307,步骤308,步骤309,步骤3010,步骤311对应于图1中的步骤101,步骤102,步骤103。图3中的步骤303,步骤306,步骤307,步骤308是对求完和后的值除h,然后再扩大max倍。图3的步骤305,步骤312,步骤313,步骤314,步骤315,步骤316,步骤317,步骤318,步骤319对应于图1中的步骤101,步骤105,步骤106,步骤107。其中图3的步骤303直接到步骤314得到的运算结果是
然后图3中的步骤311,步骤319,步骤320,步骤321,步骤322,步骤323对应于图1的步骤104,步骤107,步骤108,步骤109,步骤110,步骤111。这里没有数据溢出的情况出现,因此就没有必要进行防止溢出的处理。即,图3所示的机器学习单元上运行的bn层运算逻辑步骤311,步骤319,步骤320,步骤321,步骤322,步骤323与图1所示的cpu上的bn层计算流程步骤104,步骤107,步骤108,步骤109,步骤110,步骤111在运算逻辑上是一致的。
上面分析了图1所示的cpu上的bn层计算流程和图3所示的机器学习单元上运行的bn层运算逻辑。正如上面分析的,图1所示的cpu上的bn层计算流程拷贝到图3所示的机器学习单元上运算的时候,就会在图1的步骤101到步骤102,步骤101到步骤105,步骤103到步骤104的时候出现上溢;步骤109到步骤110,步骤101到步骤102和步骤105到步骤106(当h和w的乘积太大,除hw时)出现数据的下溢。
总之,本公开的解决方法是先对输入的绝对值中求取个最大值max(图3中的步骤301、步骤302、步骤303),然后把输入值缩小max倍(图3中的步骤303、步骤304、步骤305)。除hw的时候,分开除(图3中的步骤306、步骤307、步骤308、步骤309)。
上面介绍了防止数据上溢的计算逻辑。一般数据下溢的情况只针对数据的少部分,对操作完后的数据,影响不是很大。在数据上溢的时候,对操作完的数据影响会很大,这是因为上溢的数据更加重要。对于数据的下溢可以进行类似的处理。这是因为,在实践中,先和cpu的输出(即没有溢出的数据)比较误差,如果误差很小的话,对于这个下溢可以不用解决。因此上文的介绍主要是针对于防止数据的上溢进行了详细的介绍。
在本公开的一个实施例中,其中优化均值和方差的计算过程包括:
在数据下溢的情况下,将权值先放大n倍,然后将批量归一化层的均值放大n倍,并且将批量归一化层的方差放大n2倍;或者
在数据下溢的情况下,将训练模式输出的权值先放大n倍,然后将推理模式的均值放大n倍,并且将所推理模式的方差放大n2倍。
在本公开的一个实施例中,包括将输出的权值取绝对值,求取绝对值中的最大值,使用最大值放大输出的权值。
在本公开的一个实施例中,其中输出的权值形式是四维矩阵形式n,c,h,w,其中n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽,在优化均值和方差的计算过程步骤中是分别除以每个通道的高和每个通道的宽。
需要指出的是,本公开的各个实施例中提到的上溢和下溢并没有顺序上的限制。有可能只需要判断上溢,有可能只需要判断下溢,也有可能需要同时判断上溢和下溢。
图4示意性示出根据本公开一个实施例的一种组合处理装置400的结构图,该组合处理装置400还包括通用互联接口404和其他处理装置406。根据本公开的防止数据溢出的装置402可以通过通用互联接口404与其他处理装置406进行交互,共同完成用户指定的操作。
根据本公开的方案,该其他处理装置可以包括中央处理器(“cpu”)、图形处理器(“gpu”)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以包括前述的基准硬件平台或基准运算装置,从而其可以与包括测试硬件平台的防止数据溢出的装置形成一个测试的系统。在一个或多个实施例中,该其他处理装置可以作为本公开的防止数据溢出的装置(其可以具体化为人工智能相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运,完成对本机器学习运算装置的开启、停止等的基本控制;其他处理装置也可以和机器学习相关运算装置协作共同完成运算任务。
根据本公开的方案,该通用互联接口可以用于在防止数据溢出的装置与其他处理装置间传输数据和控制指令。例如,该防止数据溢出的装置可以经由通用互联接口从其他处理装置中获取所需的输入数据,写入该防止数据溢出的装置上的存储装置(或称存储器)。进一步,该防止数据溢出的装置可以经由通用互联接口从其他处理装置中获取控制指令,写入防止数据溢出的装置上的控制缓存。替代地或可选地,通用互联接口也可以读取防止数据溢出的装置的存储模块中的数据并传输给其他处理装置。
可选的,该组合处理装置还可以包括存储装置408,其可以分别与防止数据溢出的装置和其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存防止数据溢出的装置和其他处理装置的数据,尤其那些在防止数据溢出的装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据应用场景的不同,本公开的组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。在此情况下,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件例如摄像头、显示器、鼠标、键盘、网卡或wifi接口。
在一些实施例里,本公开还公开了一种芯片,其包括了上述防止数据溢出的装置或组合处理装置。在另一些实施例里,本公开还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本公开还公开了一种板卡,其包括了上述芯片封装结构。参阅图5,其提供了前述的示例性板卡,上述板卡除了包括上述芯片502以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件504、接口装置506和控制器件508。
存储器件与芯片封装结构内的芯片通过总线连接,用于存储数据。存储器件可以包括多组存储单元510。每一组存储单元与芯片通过总线连接。可以理解,每一组存储单元可以是ddrsdram(“doubledataratesdram,双倍速率同步动态随机存储器”)。
ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,存储器件可以包括4组存储单元。每一组存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。
在一个实施例中,每一组存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在芯片中设置控制ddr的控制器,用于对每个存储单元的数据传输与数据存储的控制。
接口装置与芯片封装结构内的芯片电连接。接口装置用于实现芯片与外部设备512(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至芯片,实现数据转移。在另一个实施例中,接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,接口单元能够实现转接功能即可。另外,芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件与芯片电连接。控制器件用于对芯片的状态进行监控。具体地,芯片与控制器件可以通过spi接口电连接。控制器件可以包括单片机(microcontrollerunit,mcu)。在一个或多个实施例中,芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,芯片可以处于多负载和轻负载等不同的工作状态。通过控制装置可以实现对芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本公开还公开了一种电子设备或装置,其包括了上述板卡。根据不同的应用场景,电子设备或装置可以包括防止数据溢出的装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、b超仪和/或心电图仪。
根据应用场景的不同,本公开的防止数据溢出的装置、或者含有该防止数据溢出的装置的组合处理装置、用于优化填充参数的芯片、以及对应的计算机可读存储介质、用于优化填充参数的集成电路可以应用在防止数据溢出的装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备等等设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、b超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本公开的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款a1、一种防止数据溢出的方法,可以包括:
在数据上溢的情况下,将输入数据先缩小n倍,然后在后续的输出单元再放大相应的倍数;和
在数据下溢的情况下,将输入数据先放大n倍,然后在后续的输出单元再缩小相应的倍数。
条款a2、根据条款a1的防止数据溢出的方法,其中卷积层的输出是批量归一化层的输入,在批量归一化层的输入中包含了需要优化的参数;或者训练模式的输出是推理模式的输入,在推理模式的输入中包含了需要优化的参数。
条款a3、根据条款a1-2的防止数据溢出的方法,其中卷积层的输出和/或训练模式的输出是由卷积和/或训练模式的输入、权值和偏置得到的,优化参数包括根据权值优化均值和方差的计算过程。
条款a4、根据条款a1-3的防止数据溢出的方法,其中优化均值和方差的计算过程包括:
在数据上溢的情况下,将权值先缩小n倍,然后将批量归一化层的均值缩小n倍,并且将批量归一化层的方差缩小n2倍;或者
在数据上溢的情况下,将训练模式输出的权值先缩小n倍,然后将推理模式的均值缩小n倍,并且将所推理模式的方差缩小n2倍。
条款a5、根据条款a1-4的防止数据溢出的方法,包括将输出的权值取绝对值,求取绝对值中的最大值,使用最大值缩放输出的权值。
条款a6、根据条款a1-5的防止数据溢出的方法,其中输出的权值形式是四维矩阵形式n,c,h,w,其中n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽,在优化均值和方差的计算过程的步骤中是分别除以每个通道的高和每个通道的宽。
条款a7、根据条款a1-6的防止数据溢出的方法,其中优化均值和方差的计算过程包括:
在数据下溢的情况下,将权值先放大n倍,然后将批量归一化层的均值放大n倍,并且将批量归一化层的方差放大n2倍;或者
在数据下溢的情况下,将训练模式输出的权值先放大n倍,然后将推理模式的均值放大n倍,并且将所推理模式的方差放大n2倍。
条款a8、根据条款a1-7的防止数据溢出的方法,包括将输出的权值取绝对值,求取绝对值中的最大值,使用最大值放大输出的权值。
条款a9、根据条款a1-8的防止数据溢出的方法,其中输出的权值形式是四维矩阵形式n,c,h,w,其中n,c,h,w分别代表输入数据的批数据量、每个数据的通道数、每个通道的高、每个通道的宽,在优化均值和方差的计算过程步骤中是分别除以每个通道的高和每个通道的宽。
条款a10、一种用于防止数据溢出的装置,可以包括:
处理器,其配置用于执行程序指令;以及
存储器,其配置用于存储程序指令,当程序指令由处理器加载并执行时,使得装置执行上述的方法。
条款a11、一种用于防止数据溢出的芯片,可以包括:
输入端,其配置成用于接收输入数据;
处理器,其配置成用于:
在数据上溢的情况下,将输入数据先缩小n倍,然后在后续的输出单元再放大相应的倍数;和
在数据下溢的情况下,将输入数据先放大n倍,然后在后续的输出单元再缩小相应的倍数。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本公开的限制。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本公开的方法及其核心思想。同时,本领域技术人员依据本公开的思想,基于本公开的具体实施方式及应用范围上做出的改变或变形之处,都属于本公开保护的范围。综上,本说明书内容不应理解为对本公开的限制。