一种神经网络批归一化的优化方法及装置与流程

文档序号:17742783发布日期:2019-05-24 20:19阅读:188来源:国知局
一种神经网络批归一化的优化方法及装置与流程

本申请涉及神经网络领域,具体涉及一种神经网络批归一化的优化方法及装置。



背景技术:

近年来,随着深度学习技术的发展,深度神经网络成为人工智能的关键核心技术。批归一化(batchnormalization(batchnorm))是一种加速深度网络训练过程的一种方法,然而batchnorm的处理过程需要人为引入偏置,在后续的网络处理过程中,如果人为引入的偏置没有及时消除就有可能会逐步放大。如果该偏置放大幅度过大,会导致网络的定点化实现困难。如果直接对网络每一层的输出数据进行量化截位,会导致大量位宽浪费在无效的数据偏移上,而真正需要比特量化的去除偏移后的数据只能得到剩下的低位量化比特,导致网络的定点位宽膨胀。



技术实现要素:

本申请实施例提供一种神经网络批归一化的优化方法及装置,能够减少人为引入的偏置带来的影响,有效降低网络的定点位宽需求。

本申请实施例的第一方面提供了一种神经网络批归一化的优化方法,包括:

将神经网络中第一个网络层设置为起始层;

从所述起始层开始向后依次获取不同网络层的初始偏置值;

调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

若存在所述目标网络层,则将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值。

优选的,确认所述目标网络层不是位于所述神经网络的最后一层,则将所述目标网络层的后一层设置为起始层,并执行所述调用预设算法对所述从所述起始层开始向后依次获取的不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值。

本申请实施例的第二方面提供了一种神经网络批归一化的优化装置,所述装置包括:

起始层设置模块,用于将神经网络中第一个网络层设置为起始层;

初始偏置值获取模块,用于从所述起始层开始向后依次获取不同网络层的初始偏置值;

数据处理模块,用于调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

判断模块,用于判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

优化处理模块,用于在存在所述目标网络层时,将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值。

本申请实施例的第三方面提供一种终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如本申请实施例第一方面的步骤指令。

本申请实施例的第四方面提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。

本申请实施例的第五方面提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

实施本申请实施例,至少具有如下有益效果:

通过本申请实施例,将每一个网络层的初始偏置值进行处理,得到每一个网络层的等效偏置值,通过获取到目标网络层,其中,目标网络层的前一层所对应的等效偏置值与该目标网络层所对应的等效偏置值之间的比值不小于预设阈值,以便确定该目标网络层的等效偏置值为一定范围内较小的等效偏置值,则将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则保障了非目标网络层的偏置值为0,目标网络层的偏置值为很小的偏置值,达到最终神经网络的不同网络层的偏置值均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。采用本方案,能够有效减少网络定点化后的位宽,有利于网络在各种现有位宽受限的ai硬件平台上部署。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种神经网络批归一化的优化装置的交互示意图;

图2为本申请实施例提供的一种神经网络批归一化的优化方法的流程示意图;

图3为本申请实施例提供的一种神经网络批归一化的优化方法的流程示意图;

图4为本申请实施例提供的一种终端的结构示意图;

图5为本申请实施例提供的一种神经网络批归一化的优化装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。

一般的,神经网络结构由若干网络层组成,其中,所述若干网络层可分为输入层、卷积层、激活层、全连接层、批归一化层等等。

参照图1,图1为本申请实施例提供了一种神经网络批归一化的优化交互示意图。如图1所示,该交互包括终端101、预设算法数据库102,其中,终端101将神经网络中第一个网络层设置为起始层,所述终端101从预设算法数据库102调用预设算法计算所述起始层开始不同网络层的等效bias(偏置)值;所述终端101判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效bias值与所述目标网络层所对应的等效bias值之间的比值不小于预设阈值;若存在,则所述终端101将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值;若不存在目标网络层,则各网络层的初始偏置值不作处理;所述终端101确认所述目标网络层是否位于所述神经网络的最后一层;若不是,则所述终端101将所述目标网络层的后一层设置为起始层,并执行所述终端101从预设算法数据库102调用预设算法计算所述起始层开始不同网络层的等效bias值;若是,则所述终端101结束该神经网络批归一化的优化操作。

通过本申请实施例,将每一个网络层的初始偏置值进行处理,得到每一个网络层的等效偏置值,通过获取到目标网络层,其中,目标网络层的前一层所对应的等效偏置值与该目标网络层所对应的等效偏置值之间的比值不小于预设阈值,以便确定该目标网络层的等效偏置值为一定范围内较小的等效偏置值,则将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则保障了非目标网络层的偏置值为0,目标网络层的偏置值为很小的偏置值,达到最终神经网络的不同网络层的偏置值均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。采用本方案,能够有效减少网络定点化后的位宽,有利于网络在各种现有位宽受限的ai硬件平台上部署。

参照图2,图2为本申请实施例提供了一种神经网络批归一化的优化方法的流程示意图。如图2所示,其可包括步骤201-205,具体如下:

201,将神经网络中第一个网络层设置为起始层;

202,从所述起始层开始向后依次获取不同网络层的初始偏置值;

其中,该初始偏置值是指神经网络中根据机器训练学习得到的bias值,作为优化前的初始偏置值;

203,调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

优选的,其中,起始层第一个网络层的等效偏置值即为第一个网络层的初始偏置值;第二个网络层的等效偏置值的计算,是通过将起始层的初始偏置值乘以第二个网络层的各权重所得到的和,再加上所述第二个网络层的初始偏置值,即得到第二个网络层的等效偏置值;则第n个网络层的等效偏置值即为第n-1个网络层的等效偏置值乘以第n个网络层的权重和所得到的值,再加上所述第n个网络层的初始偏置值,即得到第n个网络层的等效偏置值。

204,判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

其中,所述预设阈值可为100、1000或者几千不等,如预设阈值为100,目标网络层所对应的等效bias值为3.5,目标网络层的前一层所对应的等效bias值为2000,则2000除以3.5等于571.43,则571.43不小于预设阈值。

205,若存在所述目标网络层,则将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值;

在存在所述目标网络层时,则将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值;即通过将满足条件的等效偏置值所对应的网络层的偏置值优化为其对应的等效偏置值,将该网络层之前的各网络层的偏置值优化为0,使得最终神经网络的不同网络层的偏置均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。

进一步,还包括:确认所述目标网络层不是位于所述神经网络的最后一层,则将所述目标网络层的后一层设置为起始层,并执行所述调用预设算法对所述从所述起始层开始向后依次获取的不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值。

通过本申请实施例,将每一个网络层的初始偏置值进行处理,得到每一个网络层的等效偏置值,通过获取到目标网络层,其中,目标网络层的前一层所对应的等效偏置值与该目标网络层所对应的等效偏置值之间的比值不小于预设阈值,以便确定该目标网络层的等效偏置值为一定范围内较小的等效偏置值,则将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则保障了非目标网络层的偏置值为0,目标网络层的偏置值为很小的偏置值,达到最终神经网络的不同网络层的偏置值均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。采用本方案,能够有效减少网络定点化后的位宽,有利于网络在各种现有位宽受限的ai硬件平台上部署。

在该实施例的基础上,当对于同一个起始层,在存在n个所述目标网络层时,为了确定出一个合适的等效bias值,即一个目标网络层,则:

可获取所述n个所述目标网络层分别对应的等效bias值中最小的等效bias值;将所述最小的等效bias值所对应的网络层确定为优化的目标网络层。

通过将最小的等效bias值所对应的网络层确定为目标网络层,则目标网络层之前的各网络层的偏置值为0,使得最终神经网络的不同网络层的偏置值较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。

可替代的,当存在n个所述目标网络层时,则将n个所述目标网络层中的最后一个网络层确定为目标网络层。

通过将位于后面的等效bias值所对应的网络层确定为目标网络层,相比选取位于较前面网络层为目标网络层而言,当选取较前的网络层为目标网络层时,则在下一次循环获取目标网络层时候,需要将当前目标网络层的后一层作为起始层,依次获取所述目标网络层的后一层及其后面各层的等效偏置值,以及获取所述目标网络层的后一层及其后面各层的相邻前后层的等效偏置值的比值;因此相比较而言,一定程度上选取位于后面的等效bias值所对应的网络层为目标网络层,可以减少该优化方法在选取目标网络层时候的计算量,提高了优化处理的效率。

请参阅图3,图3为本申请实施例提供了一种神经网络批归一化的优化方法的流程示意图。当网络层的bias改变时,需要对激活层的激活操作进行相应修改,即需要对不同激活层的激活函数进行相应修改,否则如果在网络层的bias没有加入的情况下仍然按小于0的数据置0将产生错误。如图3所示,其可包括步骤301-309,具体如下:

301、将神经网络中第一个网络层设置为起始层;

302、从所述起始层开始向后依次获取不同网络层的初始偏置值;

303、调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

304、判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

305、若存在所述目标网络层,则将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值;

若不存在所述目标网络层,则从起始层开始向后所有网络层的初始偏置值均不作任何改变,则按照正常神经网络的批归一化处理流程进行处理。

306、获取所述起始层至所述目标网络层之间的不同激活层的初始激活函数;

307、对所述起始层至所述目标网络层之间的不同激活层的初始激活函数分别进行处理,以得到所述起始层至所述目标网络层之间的不同激活层的激活函数;

通过获取所述起始层至所述目标网络层之间的不同激活层的等效偏置值;根据所述不同激活层的等效偏置值,对所述不同激活层的初始激活函数分别进行处理,以得到所述起始层至所述目标网络层之间的不同激活层的激活函数;

其中,常规的激活操作采用如下激活函数进行:

将上述激活函数进行优化,则优化后的激活函数如下:

relu(x+bias_eq)=relu_new(x)+bias_eq;

其中,x为调整前不同激活层的激活函数的输入值,bias_eq为不同激活层的等效偏置,relu_new(x)为修改后的激活函数。

308、对所述起始层至所述目标网络层之间的不同激活层按照所述不同激活层的激活函数分别进行激活处理;

309、确认所述目标网络层不是位于所述神经网络的最后一层,则将所述目标网络层的后一层设置为起始层,并执行所述调用预设算法对所述从所述起始层开始向后依次获取的不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值。

通过本申请实施例,将每一个网络层的初始偏置值进行处理,获取到目标网络层,将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则在相应修改偏置值的情况下对激活层的激活函数做出相应修改,以保证激活操作的正常进行。

进一步地,在上述各实施例的基础上,还包括:

确认所述起始层至所述目标网络层之间存在第a个网络层,所述第a个网络层存在有初始填充值,其中,a为整数,且a不小于1;

对所述第a个网络层的初始填充值进行处理,以得到所述第a个网络层的填充值。

通过获取所述第a个网络层的等效偏置值,根据所述第a个网络层的等效偏置值,对所述第a个网络层的初始填充值进行处理;

其中,padding_new(y)=y-bias_eq,y为优化前的不同网络层的初始padding(填充)值,采用该算法对神经网络中存在有初始填充值的层的不同padding值做出相应调整。

通过本申请实施例,在对各网络层的偏置值进行优化处理后,同时对不同网络层的填充值分别通过特定算法作相应调整,使得对该神经网络所做的优化之后,保障了该神经网络的其他参数的正常化。

进一步地,在对所述各网络层的偏置值进行优化之前,还包括:

获取所述神经网络中的p个批归一化层,其中,p为正整数;

确认所述p个批归一化层中存在p’个批归一化层,其中,所述p’个批归一化层中的每个批归一化层的前一网络层均为卷积层/全连接层,1≤p’≤p;

将所述p’个批归一化层中的每个批归一化层与所述每个批归一化层对应的前一网络层分别进行合并。

即,在进行偏置值优化处理之前,对满足条件的p’个批归一化层与其对应的前一网络层进行合并,使得该神经网络的层数变少,则相应的在进行计算各网络层的等效偏置值时以及查找目标网络层时的计算量减少,提高处理效率。

作为该方案的一具体的实施例,对于神经网络中batchnorm层进行如下操作:

第k层为batchnorm层且其包括多路输出,对所述第k个batchnorm层的第i路输出可表示为:

data_meank[i]=mean(datak[i,:,:])

data_vark[i]=var(datak[i,:,:])

其中,datak[i,:,:]为第k层的输入数据,gammak[i]、betak[i]均为训练得到的第k个网络层的第i路的参数,data_vark[i]为训练得到的第k个网络层的第i路的方差,data_meank[i]训练得到的第k个网络层的第i路的均差,ε为常数;

对式(1)继续进行扩展处理并合并,可得到第k个网络层的第i路输出表达式简化如下:

定义:

其中,weightk[i]表示第k个网络层的第i路的权重,biask[i]表示第k个网络层的第i路的合并前的偏置值;

为了减少计算量,通常在神经网络部署时对式(2)可以进行处理,将其进行合并操作,并入第k-1个网络层,其中第k-1个网络层为卷积层或全连接层,即:

其中,weight_newk-1[i]=weightk[i]*weightk-1[i];

bias_newk-1[i]=weightk[i]*biask-1[i]+biask[i];

bias_newk-1[i]表示第k-1个网络层的第i路按照上述公式合并后的初始偏置值,weight_newk-1[i]表示第k-1个网络层的第i路的变换后的权重。即第k层的输出可以采用第k-1层来表示,且第k-1层采用weight_newk-1和bias_newk-1作为系数和偏移。

将批归一化层与其对应的前一卷积层或全连接层进行合并,使得该神经网络的层数变少,则相应的在进行计算各网络层的等效偏置值时的计算量减少,提高处理效率。

则对于合并后的各网络层的等效偏置值的计算如下:

其中第k个网络层为卷积或全连接层时,所述第k个网络层包括多个支路,等效bias采用如下公式往后传递叠加:

bias_eqk[i]=bias_newk[i]+sum(weight_newk-1[i])*bias_eqk-1;(4)

bias_eqk+1[i]=bias_newk+1[i]+sum(weight_newk[i])*bias_eqk;(5)

其中,bias_eqk[i]为第k个网络层的第i路的等效偏置值。

计算出各层的等效偏置值后,如果某一网络层的前一层所对应的等效偏置值与该网络层所对应的等效偏置值之间的比值不小于预设阈值,则在该层将起始层至该网络层之前一层的所有偏置值设为0,并将该层的等效偏置值作为该层的偏置值。通过将该层之前的各层的偏置值均设为0,则该层之前的定点数据主要对变化丰富的有效数据进行编码,可以大大减小网络的位宽。

采用上面的处理,在偏置值进行修改时候,由于网络中一般都存在非线性的激活操作,因此相应的,还需要对激活操作进行修改,否则如果在网络的bias没有加入的情况下仍然按小于0的数据置0将产生错误。

常规的激活操作按下式进行:

将上述激活操作进行修改,则修改后的激活操作如下:

relu(x+bias_eq)=relu_new(x)+bias_eq;

其中,x为调整前不同激活层的激活操作的输入值,bias_eq为不同激活层的等效偏置,relu_new(x)为修改后的激活函数。

此外,在网络中存在padding的情况下,需要相应修改padding值。修改方式与激活操作类似,如果padding值为0,需要将padding值修改为-bias_eq。一般的,如果padding值为v,则修改后的padding值为v-bias_eq。

通过对不同网络层的激活操作以及存在padding值的层的padding值分别通过特定算法作相应调整,使得对该神经网络所做的优化调整之后,保障了该神经网络的其他参数的正常化。

与上述实施例一致的,请参阅图4,图4为本申请实施例提供的一种终端的结构示意图,如图所示,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,上述程序包括用于执行以下步骤的指令;

将神经网络中第一个网络层设置为起始层;

从所述起始层开始向后依次获取不同网络层的初始偏置值;

调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

若存在所述目标网络层,则将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值;

确认所述目标网络层不是位于所述神经网络的最后一层,则将所述目标网络层的后一层设置为起始层,并执行所述调用预设算法对所述从所述起始层开始向后依次获取的不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值。

通过本申请实施例,将每一个网络层的初始偏置值进行处理,得到每一个网络层的等效偏置值,通过获取到目标网络层,其中,目标网络层的前一层所对应的等效偏置值与该目标网络层所对应的等效偏置值之间的比值不小于预设阈值,以便确定该目标网络层的等效偏置值为一定范围内较小的等效偏置值,则将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则保障了非目标网络层的偏置值为0,目标网络层的偏置值为很小的偏置值,达到最终神经网络的不同网络层的偏置值均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。采用本方案,能够有效减少网络定点化后的位宽,有利于网络在各种现有位宽受限的ai硬件平台上部署。

上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据上述方法示例对终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

与上述一致的,请参阅图5,图5为本申请实施例提供了一种神经网络批归一化的优化装置的结构示意图,所述装置包括起始层设置模块501、初始偏置值获取模块502、数据处理模块503、判断模块504、优化处理模块505,其中:

起始层设置模块501,用于将神经网络中第一个网络层设置为起始层;

初始偏置值获取模块502,用于从所述起始层开始向后依次获取不同网络层的初始偏置值;

数据处理模块503,用于调用预设算法对所述不同网络层的初始偏置值分别进行处理,以得到所述不同网络层的等效偏置值;

判断模块504,用于判断是否存在目标网络层,其中,所述目标网络层的前一层所对应的等效偏置值与所述目标网络层所对应的等效偏置值之间的比值不小于预设阈值;

优化处理模块505,用于在存在所述目标网络层时,将所述起始层至所述目标网络层的前一层之间的不同网络层的偏置值均设为0,并将所述目标网络层的等效偏置值作为所述目标网络层的偏置值。

进一步,还包括激活函数处理模块,用于:

获取所述起始层至所述目标网络层之间的不同激活层的初始激活函数,并获取所述起始层至所述目标网络层之间的不同激活层的等效偏置值,并根据所述不同激活层的等效偏置值,对所述不同激活层的初始激活函数分别进行处理,以得到所述起始层至所述目标网络层之间的不同激活层的激活函数;对所述起始层至所述目标网络层之间的不同激活层按照其激活函数分别进行激活处理。

进一步,还包括填充值处理模块,用于:

确认所述起始层至所述目标网络层之间存在第a个网络层,所述第a个网络层存在有初始填充值,其中,a为整数,且a不小于1,并对所述第a个网络层的初始填充值进行处理,以得到所述第a个网络层的填充值。

进一步,还包括合并处理模块,用于:

获取所述神经网络中的p个批归一化层,其中,p为正整数,并确认所述p个批归一化层中存在p’个批归一化层时,将所述p’个批归一化层中的每个批归一化层与所述每个批归一化层对应的前一网络层分别进行合并,其中,所述p’个批归一化层中的每个批归一化层的前一网络层均为卷积层/全连接层,1≤p’≤p。

进一步,还包括目标网络层确定模块,用于:

在存在n个所述目标网络层时,获取所述n个所述目标网络层分别对应的等效偏置值中最小的等效偏置值,其中,n为大于1的整数,并将所述最小的等效偏置值所对应的网络层确定为目标网络层;

或者,用于在存在n个所述目标网络层时,将n个所述目标网络层中的最后一个网络层确定为目标网络层。

通过本申请实施例,将每一个网络层的初始偏置值进行处理,得到每一个网络层的等效偏置值,通过获取到目标网络层,其中,目标网络层的前一层所对应的等效偏置值与该目标网络层所对应的等效偏置值之间的比值不小于预设阈值,以便确定该目标网络层的等效偏置值为一定范围内较小的等效偏置值,则将目标网络层之前的各网络层的偏置值设为0,并将目标网络层的等效偏置值作为目标网络层的偏置值,则保障了非目标网络层的偏置值为0,目标网络层的偏置值为很小的偏置值,达到最终神经网络的不同网络层的偏置值均较小,解决了含批归一化操作的神经网络中人为引入的偏置过大,导致信息定点化时浪费高位信息比特的问题。采用本方案,能够有效减少网络定点化后的位宽,有利于网络在各种现有位宽受限的ai硬件平台上部署。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种神经网络批归一化的定点化方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种神经网络批归一化的定点化方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在申请明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1