一种卷积神经网络的训练方法、验证方法及装置与流程

文档序号:17327452发布日期:2019-04-05 21:52阅读:318来源:国知局
一种卷积神经网络的训练方法、验证方法及装置与流程

本申请涉及深度学习领域,特别是涉及一种卷积神经网络的训练方法。验证方法及装置。



背景技术:

目前,深度学习在图像检测、语音识别等领域的应用越来越广泛,卷积神经网络是深度学习的一种重要算法。由于卷积神经网络的计算量比较大,因此相对来讲计算效率比较低。

而卷积神经网络的计算效率在一定程度上限制了其在一些场景例如手机等终端设备中的应用。因此,如何提升卷积神经网络的计算效率,是目前急需解决的问题。



技术实现要素:

本申请所要解决的技术问题是如何提升卷积神经网络的计算效率,提供一种卷积神经网络的训练方法、验证方法及装置。

第一方面,本申请实施例提供了一种卷积神经网络的训练方法,所述方法包括:

第一步:初始化神经网络的各个卷积核参数的初始值;

第二步:按照所述神经网络的结构进行前向计算;其中,所述前向计算中的激活计算具体为:

若所述激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中n为正整数;若所述激活计算的输入数据为大于或者等于0的值,则保持所述输入数据的值不变;

第三步:判断所述神经网络的损失函数是否达到给定阈值,或者,所述神经网络的训练次数是否达到预设次数,如果是则执行第七步;反之执行第四步;

第四步:按照所述神经网络的神经网络结构进行反向传播计算;

第五步:按照所述神经网络的神经网络结构更新所述神经网络的卷积核参数的权重;

第六步:返回执行所述第二步进行训练;

第七步:保存所述神经网络对应的网络结构以及训练得到的神经网络模型。

可选的,所述n=3或者,所述n=4。

第二方面,本申请实施例提供了一种卷积神经网络的验证方法,应用于arm处理器,所述方法包括:

获取目标输入数据;

将所述目标输入数据作为神经网络模型的输入,计算得到所述卷积神经网络的输出结果;其中,所述神经网络模型为利用如权利要求1-2任意一项的方法训练得到的。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括激活计算;所述激活计算具体包括:

利用arm处理器的单指令、多数据扩展结构neon的比较函数,确定所述激活计算的输入数据是否小于0;

如果是,则将所述小于0的输入数据执行取反操作,并将取反之后得到的数据执行向左移位n位的操作;

将执行所述向左移位n位的操作之后得到的数据执行取反操作。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括最大池化;所述最大池化具体包括:

利用arm处理器的单指令、多数据扩展结构neon的取最大值函数,确定所述池化的输入数据中的最大值。

第三方面,本申请实施例提供了一种卷积神经网络的训练装置,所述装置包括:

初始化单元,用于初始化神经网络的各个卷积核参数的初始值;

前向计算单元,用于按照所述神经网络的结构进行前向计算;其中,所述前向计算中的激活计算具体为:

若所述激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中n为正整数;若所述激活计算的输入数据为大于或者等于0的值,则保持所述输入数据的值不变;

判断单元,用于判断所述神经网络的损失函数是否达到给定阈值,或者,所述神经网络的训练次数是否达到预设次数,如果是则执行第七步;反之执行第四步;

反向传播计算单元,用于按照所述神经网络的神经网络结构进行反向传播计算;

权重更新单元,用于按照所述神经网络的神经网络结构更新所述神经网络的卷积核参数的权重;

循环单元,用于返回执行所述第二步进行训练;

保存单元,用于保存所述神经网络对应的网络结构以及训练得到的神经网络模型。

可选的,所述n=3或者,所述n=4。

第四方面,本申请实施例提供了一种卷积神经网络的验证装置,应用于arm处理器,所述装置包括:

获取单元,用于获取目标输入数据;

计算单元,用于将所述目标输入数据作为神经网络模型的输入,计算得到所述卷积神经网络的输出结果;其中,所述神经网络模型为利用如权利要求1-2任意一项的方法训练得到的。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括激活计算;所述激活计算具体包括:

利用arm处理器的单指令、多数据扩展结构neon的比较函数,确定所述激活计算的输入数据是否小于0;

如果是,则将所述小于0的输入数据执行取反操作,并将取反之后得到的数据执行向左移位n位的操作;

将执行所述向左移位n位的操作之后得到的数据执行取反操作。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括最大池化;所述最大池化具体包括:

利用arm处理器的单指令、多数据扩展结构neon的取最大值函数,确定所述池化的输入数据中的最大值。

与现有技术相比,本申请实施例具有以下优点:

本申请实施例提供的卷积神经网络的训练方法,在对神经网络进行训练时,对前向计算中的激活计算进行了改进,将传统技术中的若激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/10,改进为激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中,n为正整数。因为将一个数据修改为原来的1/2n,可以通过移位操作来实现,效率远远高于将一个数据修改为原来的1/10。因此,利用本申请实施例提供的训练方法训练得到神经网络模型,在进行前向运算时,由于在进行激活计算时提升了计算效率,因此,整个神经网络模型的计算效率也得到了提升。

附图说明

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

图1为本申请实施例提供的一种卷积神经网络的训练方法的流程示意图;

图2为本申请实施例提供的一种卷积神经网络的验证方法的流程示意图;

图3为本申请实施例提供的一种激活计算的计算方法的流程示意图;

图4为本申请实施例中一种卷积神经网络的训练装置的结构示意图;

图5为本申请实施例中一种卷积神经网络的验证装置的结构示意图。

具体实施方式

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

一方面,本申请的发明人经过研究发现,现有技术中,由于卷积神经网络的计算量比较大,因此相对来讲计算效率比较低。而卷积神经网络的计算效率在一定程度上限制了其在一些场景例如手机等终端设备中的应用。因此,如何提升卷积神经网络的计算效率,是目前急需解决的问题。

另一方面,本申请的发明人经过研究发现,在传统技术中,卷积神经网络的前向计算中的激活计算在具体实现时,是若激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/10。而由于计算机存储的均为二进制数据,将一个数据修改为原来的1/10,操作效率比较低。若将一个数据修改为原来的1/2n,操作效率会提升很多。

鉴于此,本申请实施例提供了一种卷积神经网络的训练方法,在对神经网络进行训练时,对前向计算中的激活计算进行了改进,将传统技术中的若激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/10,改进为激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中,n为正整数。因为将一个数据修改为原来的1/2n,可以通过移位操作来实现,效率远远高于将一个数据修改为原来的1/10。因此,利用本申请实施例提供的训练方法训练得到神经网络模型,在进行前向运算时,由于在进行激活计算时提升了计算效率,因此,整个神经网络模型的计算效率也得到了提升。

下面结合附图,详细说明本申请的各种非限制性实施方式。

示例性方法

参见图1,该图为本申请实施例提供的一种卷积神经网络的训练方法的流程示意图。

在本实施例中,所述方法例如可以包括以下步骤s101-s107。

s101:初始化神经网络的各个卷积核参数的初始值。

s102:按照所述神经网络的结构进行前向计算;其中,所述前向计算中的激活计算具体为:若所述激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中n为正整数;若所述激活计算的输入数据为大于或者等于0的值,则保持所述输入数据的值不变。

s103:判断所述神经网络的损失函数是否达到给定阈值,或者,所述神经网络的训练次数是否达到预设次数,如果是则执行s107;反之执行s104。

s104:按照所述神经网络的神经网络结构进行反向传播计算。

s105:按照所述神经网络的神经网络结构更新所述神经网络的卷积核参数的权重。

s106:返回执行所述s102进行训练。

s107:保存所述神经网络对应的网络结构以及训练得到的神经网络模型。

关于以上s101-s107需要说明的是,s102是本申请实施例的核心。关于s102需要说明的是,本申请实施例不具体限定所述n的具体取值,所述n的具体取值可以根据实际情况确定。

在本申请实施例的一种实现方式中,考虑到传统激活计算中,对于小于0的输入数据,是将其值修改为原来的1/10,因此,可以将1/2n确定为与1/10接近的值。例如,所述n可以为3,此时对应1/2n=1/8;又如,所述n可以为4,此时对应1/2n=1/16。

关于其它步骤,由于与传统技术类似,故在此不再赘述。

通过以上描述可知,利用本申请实施例提供的卷积神经网络的训练方法,在对神经网络进行训练时,对前向计算中的激活计算进行了改进,将传统技术中的若激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/10,改进为激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中,n为正整数。因为将一个数据修改为原来的1/2n,可以通过移位操作来实现,效率远远高于将一个数据修改为原来的1/10。因此,利用本申请实施例提供的训练方法训练得到神经网络模型,在进行前向运算时,由于在进行激活计算时提升了计算效率,因此,整个神经网络模型的计算效率也得到了提升。

基于以上实施例提供的卷积神经网络训练方法,本申请实施例还提供了一种卷积神经网络的验证方法,以下结合附图介绍该方法。

参见图2,该图为本申请实施例提供的一种卷积神经网络的验证方法的流程示意图。

需要说明的是,考虑到应用卷积神经网络的许多设备上都使用arm处理器,因此,本申请实施例提供的卷积神经网络的验证方法可以应用于arm处理器。

所述方法例如可以通过如下步骤s201-s202实现。

s201:获取目标输入数据。

s202:将所述目标数据作为神经网络模型的输入,计算得到所述卷积神经网络的输出结果。

其中,s202中提及的神经网络模型,是指,利用以上实施例提供的卷积神经网络的训练方法训练得到的神经网络模型。

需要说明的是,本申请实施例不具体限定所述目标输入数据,所述目标输入数据与所述神经网络模型的应用场景相关。例如,所述神经网络模型应用于图像识别,则所述输入数据可以为图像数据;又如,所述神经网络模型应用于语音识别,则所述输入数据可以为语音数据。

可以理解的是,在s202计算得到所述卷积神经网络的输出结果的过程中,包括激活计算。而由于在训练所述神经网络模型时,对前向计算中的激活计算进行了改进,改进后的激活计算为:若所述激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中n为正整数;若所述激活计算的输入数据为大于或者等于0的值,则保持所述输入数据的值不变。对于改进后的激活计算,在arm处理器中执行时,可以通过如图3所示的步骤实现。

s301:利用arm处理器的单指令、多数据扩展结构neon的比较函数,确定所述激活计算的输入数据是否小于0。

需要说明的是,neon是适用于armcortex-a系列处理器的一种128位单指令、多数据(singleinstruction、multipledata,simd)扩展结构。也就是说,利用neon,可以同时对多个数据执行比较操作。若激活计算的输入数据的数据位宽为32bit,则可以同时对4个数据执行比较操作;若激活计算的输入数据的位宽为16bit,则可以同时对8个数据执行比较操作。因此,利用neon的比较函数,可以同时为激活函数的多个输入数据执行比较操作,而无需一个一个按序执行比较操作,提升了计算效率。

举例说明,激活计算的输入数据的数据位宽为32bit,则可以同时对4个数据执行比较操作,例如,同时对数据1,1,-1,-1与0执行比较操作,输出为0,0,-1,-1;即确定小于0的数据为第三个数-1和第四个数-1。

s302:如果是,则将所述小于0的输入数据执行取反操作,并将取反之后得到的数据执行向左移位n位的操作。

s303:将执行所述向左移位n位的操作之后得到的数据执行取反操作。

执行步骤s302-s303之后,则完成了将小于0的输入数据修改为原来的1/2n

由此可见,采用图3所述的方法,与传统技术相比,一方面进行移位操作提升了激活计算的效率;另一方面,利用利用neon的比较函数,可以同时为激活函数的多个输入数据执行比较操作,而无需一个一个按序执行比较操作,提升了计算效率。从而大大提升了卷积神经网络的计算效率。

可以理解的是,在s202计算得到所述卷积神经网络的输出结果的过程中,包括最大池化。所谓最大池化是指,从若干个数据中确定出最大值。以2*2池化为例,即确定出2*2矩阵中四个元素的最大值。

考虑到传统技术中,若要确定出四个元素例如a1、a2、a3和a4的最大值,要按顺序进行3次比较,从而确定出其中的最大值,也就是说,要利用3-4个时钟周期才可以得到该四个元素的最大值。

考虑到neon是一种单指令、多数据的扩展结构,因此,利用neon可以同时执行多个比较操作,也就是说,在一个时钟周期内可以执行多次比较操作,因此,若利用neon的取最大值函数,可以仅利用1-2个时钟周期即可确定前述四个元素的最大值。

因此,在本申请实施例中,可以利用arm处理器的单指令、多数据扩展结构neon的取最大值函数,确定所述池化的输入数据中的最大值。从而提升最大池化过程的计算效率。

可以理解的是,由于池化的输入数据是例如2*2的矩阵形式,而neon的取最大值函数的数据是m*1的形式,因此,若二者形式不匹配,在利用所述取最大值函数之前,还可以进行数据格式的转换,使得转换后的数据格式满足neon的取最大值函数对输入数据的格式要求。

可以理解的是,在s202计算得到所述卷积神经网络的输出结果的过程中,也可能包括平均池化。所谓平均池化是指,确定若干个数据的平均值。以2*2池化为例,即确定出2*2矩阵中四个元素的平均值。

基于与上述最大池化类似的构思,在本申请实施例中,若池化输入数据的个数为2n,则可以利用arm处理器的单指令、多数据扩展结构neon的求和函数,确定所述池化的输入数据的和,然后利用移位操作(向左移n位)计算得到所述2n个数据的平均值。从而提升平均池化过程的计算效率。

示例性设备

参见图4,该图为本申请实施例中一种卷积神经网络的训练装置的结构示意图。

所述装置400例如可以具体包括:初始化单元410、前向计算单元420、判断单元430、反向传播计算单元440、权重更新单元450、循环单元460和保存单元470。

初始化单元410,用于初始化神经网络的各个卷积核参数的初始值;

前向计算单元420,用于按照所述神经网络的结构进行前向计算;其中,所述前向计算中的激活计算具体为:

若所述激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中n为正整数;若所述激活计算的输入数据为大于或者等于0的值,则保持所述输入数据的值不变;

判断单元430,用于判断所述神经网络的损失函数是否达到给定阈值,或者,所述神经网络的训练次数是否达到预设次数,如果是则执行第七步;反之执行第四步;

反向传播计算单元440,用于按照所述神经网络的神经网络结构进行反向传播计算;

权重更新单元450,用于按照所述神经网络的神经网络结构更新所述神经网络的卷积核参数的权重;

循环单元460,用于返回执行所述第二步进行训练;

保存单元470,用于保存所述神经网络对应的网络结构以及训练得到的神经网络模型。

可选的,所述n=3或者,所述n=4。

由于所述装置400是与以上方法实施例提供图1所示的方法对应的装置,所述装置400的各个单元的具体实现,均与以上方法实施例图1所示的方法为同一构思,因此,关于所述装置400的各个单元的具体实现,可以参考以上方法实施例关于图1所示的方法的描述部分,此处不再赘述。

由此可见,利用本申请实施例提供的卷积神经网络的训练装置,在对神经网络进行训练时,对前向计算中的激活计算进行了改进,将传统技术中的若激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/10,改进为激活计算的输入数据为小于0的值,则将所述输入数据修改为所述输入数据的1/2n,其中,n为正整数。因为将一个数据修改为原来的1/2n,可以通过移位操作来实现,效率远远高于将一个数据修改为原来的1/10。因此,利用本申请实施例提供的训练方法训练得到神经网络模型,在进行前向运算时,由于在进行激活计算时提升了计算效率,因此,整个神经网络模型的计算效率也得到了提升。

参见图5,该图为本申请实施例中一种卷积神经网络的验证装置的结构示意图。

所述装置500可以应用于arm处理器,所述装置500例如可以包括:

获取单元510,用于获取目标输入数据;

计算单元520,用于将所述目标输入数据作为神经网络模型的输入,计算得到所述卷积神经网络的输出结果;其中,所述神经网络模型为利用如以上方法实施例提供的卷积神经网络的训练方法训练得到的。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括激活计算;所述激活计算具体包括:

利用arm处理器的单指令、多数据扩展结构neon的比较函数,确定所述激活计算的输入数据是否小于0;

如果是,则将所述小于0的输入数据执行取反操作,并将取反之后得到的数据执行向左移位n位的操作;

将执行所述向左移位n位的操作之后得到的数据执行取反操作。

可选的,在计算得到所述卷积神经网络的输出结果的过程中,包括最大池化;所述最大池化具体包括:

利用arm处理器的单指令、多数据扩展结构neon的取最大值函数,确定所述池化的输入数据中的最大值。

由于所述装置500是与以上方法实施例提供卷积神经网络的验证方法对应的装置,所述装置500的各个单元的具体实现,均与以上方法实施例提供卷积神经网络的验证方法为同一构思,因此,关于所述装置500的各个单元的具体实现,可以参考以上方法实施例提供卷积神经网络的验证方法的描述部分,此处不再赘述。

通过以上描述可知,采用本申请实施例提供的卷积神经网络的验证装置,与传统技术相比,一方面进行移位操作提升了激活计算的效率;另一方面,利用利用neon的比较函数,可以同时为激活函数的多个输入数据执行比较操作,而无需一个一个按序执行比较操作,提升了计算效率。从而大大提升了卷积神经网络的计算效率。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制

以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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