神经网络及其构建方法、装置和系统与流程

文档序号:12597493阅读:449来源:国知局
神经网络及其构建方法、装置和系统与流程

本发明涉及图像处理技术领域,更具体地涉及一种神经网络及其构建方法、装置和系统。



背景技术:

神经网络在图像识别、语音识别以及文字识别等领域中已经有了广泛且成功的应用。实际使用神经网络时,由于神经网络参数多,消耗的计算资源较大。特别在手机等计算能力受限的平台上,计算造成长延时,还对功耗、散热等带来挑战。



技术实现要素:

为了解决上述问题而提出了本发明。根据本发明一方面,提供了一种神经网络的构建方法,所述方法包括:获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层;以及根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络;其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

在本发明的一个实施例中,所述第一卷积层为输入信道每信道共享卷积的卷积层或输出信道每信道共享卷积的卷积层。

在本发明的一个实施例中,所述第一卷积层的输入等于所述原始卷积层的输入,所述第一卷积层的输出作为所述第二卷积层的输入,所述第二卷积层的输出等于所述原始卷积层的输出。

在本发明的一个实施例中,所述第二卷积层的输入等于所述原始卷积层的输入,所述第二卷积层的输出作为所述第一卷积层的输入,所述第一卷积层的输出等于所述原始卷积层的输出。

在本发明的一个实施例中,所述第一卷积层的卷积核的尺寸等于所述原始卷积层的卷积核的尺寸。

在本发明的一个实施例中,所述第二卷积层为1×1卷积层。

在本发明的一个实施例中,所述第一卷积层的卷积核的维度等于所述原始卷积层的卷积核的维度。

根据本发明另一方面,提供了一种神经网络的构建装置,所述装置包括:获取模块,用于获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层;以及变换模块,用于根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络;其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

在本发明的一个实施例中,所述第一卷积层为输入信道每信道共享卷积的卷积层或输出信道每信道共享卷积的卷积层。

在本发明的一个实施例中,所述第一卷积层的输入等于所述原始卷积层的输入,所述第一卷积层的输出作为所述第二卷积层的输入,所述第二卷积层的输出等于所述原始卷积层的输出。

在本发明的一个实施例中,所述第二卷积层的输入等于所述原始卷积层的输入,所述第二卷积层的输出作为所述第一卷积层的输入,所述第一卷积层的输出等于所述原始卷积层的输出。

在本发明的一个实施例中,所述第一卷积层的卷积核的尺寸等于所述原始卷积层的卷积核的尺寸。

在本发明的一个实施例中,所述第二卷积层为1×1卷积层。

在本发明的一个实施例中,所述第一卷积层的卷积核的维度等于所述原始卷积层的卷积核的维度。

根据本发明又一方面,提供了一种神经网络的构建系统,所述系统包括处理器和存储装置,所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行上述任一项所述的方法。

根据本发明再一方面,提供了一种神经网络,所述神经网络是通过采用上述任一项或几项所述的方法、装置或系统而构建的。

根据本发明实施例的神经网络及其构建方法、装置和系统通过将神经网络的至少一个卷积层变换为每信道共享卷积的卷积层与卷积核尺寸变小的卷积层的组合来构建新的神经网络,可在确保神经网络实现功能不变的情况下减小神经网络的计算量。

附图说明

通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1示出用于实现根据本发明实施例的神经网络的构建方法和装置的示例电子设备的示意性框图;

图2示出根据本发明实施例的神经网络的构建方法的示意性流程图;

图3A~图3F示例性地示出不同变换规则下变换为不同的新的卷积层的示意图;

图4示出根据本发明实施例的神经网络的构建装置的示意性框图;以及

图5示出根据本发明实施例的神经网络的构建系统的示意性框图。

具体实施方式

为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。

首先,参照图1来描述用于实现本发明实施例的神经网络的构建方法和装置的示例电子设备100。

如图1所示,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像传感器110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。

所述处理器102可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备100中的其它组件以执行期望的功能。

所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。

所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。

所述输出装置108可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。

所述图像传感器110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。

示例性地,用于实现根据本发明实施例的神经网络的构建方法和装置的示例电子设备可以被实现为诸如智能手机、平板电脑等。

下面,将参考图2描述根据本发明实施例的神经网络的构建方法200。

在步骤S210,获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层。

在一个实施例中,获取的神经网络可以为包括卷积层的任意神经网络,例如卷积神经网络等。此处,将所获取的神经网络称为原始神经网络是为了与将要构建的新的神经网络相区别,而非起到任何限定作用。类似地,将所获取的神经网络所包括的卷积层定义为原始卷积层是为了与将要构建的新的神经网络的新的卷积层相区别,而非起到任何限定作用。

在步骤S210中,之所以要获取包括卷积层的神经网络以用于后续的步骤,是因为经过本申请的发明人和申请人研究发现,神经网络的计算量主要集中在卷积层上(当然,是在神经网络包括卷积层的前提下)。

例如,常用的卷积层的参数可以表示为(K,C,H,W)。其中,C为该卷积层的输入信道的数目,K为该卷积层的输出信道的数目,H和W分别为该卷积层的卷积核的高和宽(其决定卷积核的尺寸/大小)。对于该卷积层的计算,上述参数意味着每次计算会对C个输入信道采集尺寸为高H宽W的图片小块(patch),然后计算K个输出信道的值。对于该卷积层,一次前向传播的计算量为上述四个参数的乘积,即该卷积层的计算量Q1=KCHW。由此,可以注意到该卷积层的计算量和H与W的乘积成正比。此外,该卷积层的参数个数也为上述四个参数的乘积,即该卷积层的参数个数N1=KCHW。在本申请中,主要针对原始卷积层的卷积核的大小为H>1、W>1的情况。

在一个示例中,当上述卷积层的四个参数取值为(512,256,3,3)时,该卷积层的一次前向传播的计算量为512×256×3×3=1179648,参数个数为512×256×3×3=1179648。这样的计算量是相当庞大的。因此,可以对其进行改进以减小计算量。

下面返回参考图2继续描述根据本发明实施例的神经网络的构建方法200的步骤。

在步骤S220,根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络。其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

在一个实施例中,可以将原始神经网络所包括的所有卷积层(即所有的原始卷积层)都变换为根据本发明实施例的新的卷积层(后面将对所述新的卷积层进行详细描述)。在另一个实施例中,可以将原始神经网络所包括的一个或一部分原始卷积层变换为根据本发明实施例的新的卷积层,这都可以根据预定需求来决定。因此,可以根据预定需求有选择地对原始神经网络的至少一个原始卷积层进行变换。

在一个实施例中,将原始神经网络的原始卷积层变换为新的卷积层可遵循一定的变换规则,不同的变换规则将会使原始神经网络的原始卷积层变换为不同的新卷积层(下文将参考图3A-3F示例性地描述不同的变换规则以及变换为的不同的新的卷积层)。

示例性地,多种不同的变换规则都包括基本变换规则,即,变换后得到的新的卷积层包括第一卷积层和与第一卷积层连接的第二卷积层。其中,第一卷积层为每信道共享卷积的卷积层,第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,新的卷积层的输入输出与原始卷积层的输入输出均相同。

其中,每信道共享卷积可以指输入信道每信道共享卷积或输出信道每信道共享卷积。输入信道每信道共享卷积的卷积层可以理解为所有的输入信道共享该卷积层的卷积,也就意味着该卷积层的计算量与输入信道的个数无关,仅取决于输出信道的个数和卷积核的尺寸。类似地,输出信道每信道共享卷积的卷积层可以理解为所有的输出信道共享该卷积层的卷积,也就意味着该卷积层的计算量与输出信道的个数无关,仅取决于输入信道的个数和卷积核的尺寸。很明显,不论是输入信道每信道共享卷积还是输出信道每信道共享卷积,每信道共享卷积的卷积层的计算量会大大减小。

而对于第二卷积层,其卷积核的尺寸小于原始卷积层的卷积核的尺寸,其输入信道或输出信道中的一个取决于原始卷积层的输入信道或输出信道。因此,相比较而言,其计算量也会减小。

新的卷积层的计算量等于第一卷积层的计算量加上第二卷积层的计算量,也就是说,通过变换,将参数均是相乘关系的计算量变为了部分相乘部分相加的关系,因此可大大减小计算量。下面将通过具体的实施例来描述。

图3A~图3F示例性地示出不同变换规则下变换为不同的新的卷积层的示意图。示例性地,不同的变换规则都包括基本变换规则,即变换后的所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

参考图3A,图3A示出了根据变换规则R1将原始卷积层300变换为新的卷积层310的示意图。为了描述简单,仅在图3A中示出对原始神经网络的一个原始卷积层300的变换,但应理解,也可以对原始神经网络的多个或所有原始卷积层进行变换。

如图3A所示,原始卷积层300的参数为(K,C,H,W)。如前所述,C为原始卷积层300的输入信道的数目,K为原始卷积层300的输出信道的数目,H和W分别为原始卷积层300的卷积核的高和宽。如前所述,原始卷积层300的计算量Q1=KCHW。

基于变换规则R1,将原始卷积层300变换为新的卷积层310。如图3A所示,新的卷积层包括每信道共享卷积的第一卷积层311以及卷积核尺寸小于原始卷积层300的卷积层尺寸的第二卷积层312。其中,第一卷积层311的卷积核的高和宽分别为H0和W0,第二卷积层312的高和宽分别为H1和W1,而且有H1W1<HW。第一卷积层311进行的卷积为H0×W0每信道卷积,第二卷积层312进行的卷积为H1×W1卷积,如图3A所示的。

如图3A所示,新的卷积层310的输入信道和输出信道的个数分别为C和K,即与原始卷积层300相比输入输出保持不变。在图3A中,将第一卷积层311的输入示出为等于原始卷积层300的输入,将第二卷积层312的输出示出为等于原始卷积层300的输出,但其仅是示例性的,还可以倒置过来,即将第二卷积层312的输入可以等于原始卷积层300的输入,第一卷积层311的输出等于原始卷积层300的输出(该示例将在图3B中示出)。此外,在图3A中,将第一卷积层311与第二卷积层312之间的信道个数设为Z(关于Z的取值稍后讨论),即第一卷积层311的输出的信道的个数为Z,且第一卷积层311的参数为(Z,C,H0,W0),第二卷积层312的输入的信道的个数为Z,且第二卷积层312的参数为(K,Z,H1,W1)。

下面讨论如图3A所示的新的卷积层310的计算量和其参数个数。新的卷积层310的计算量等于第一卷积层311的计算量加上第二卷积层312的计算量,新的卷积层310的参数个数等于第一卷积层311的参数个数加上第二卷积层312的参数个数。

在一个示例中,当第一卷积层311为输入信道每信道共享卷积的卷积层时,第一卷积层311的计算量为ZH0W0,参数个数为ZH0W0/C;第二卷积层312的计算量和参数个数均为KZH1W1。因此,此时新的卷积层310的计算量为ZH0W0+KZH1W1,参数个数为ZH0W0/C+KZH1W1

在另一个示例中,当第一卷积层311为输出信道每信道共享卷积的卷积层时,第一卷积层311的计算量为CH0W0,参数个数为CH0W0/Z;第二卷积层312的计算量和参数个数均为KZH1W1。因此,此时新的卷积层310的计算量为CH0W0+KZH1W1,参数个数为CH0W0/Z+KZH1W1

基于上述两个示例,鉴于参数个数一般为自然数,因此当第一卷积层311为输入信道每信道共享卷积的卷积层时,Z的取值可以为C的倍数。当第一卷积层311为输出信道每信道共享卷积的卷积层时,Z的取值可以为C的约数。

只要对第一卷积层311和第二卷积层312的各自的参数选择合适的数值,即可很容易使新的卷积层310的计算量小于原始卷积层300的计算量,即满足ZH0W0+KZH1W1<KCHW,或满足CH0W0+KZH1W1<KCHW。

现在描述前面提到的将图3A中的第一卷积层311和第二卷积层312倒置的情况,参见图3B。

图3B示出了根据变换规则R1’将原始卷积层300变换为新的卷积层310’的示意图。由于图3B与图3A相比,所示对原始卷积层300的变换的区别仅在于将第一卷积层和第二卷积层的位置互换,其余配置都不变,因此为了简洁,与图3A相同的地方不再详细描述。

如图3B所示,第一卷积层311’的参数为(K,Z,H0,W0),第二卷积层312’的参数为(Z,C,H1,W1)。新的卷积层310’的计算量等于第二卷积层312’的计算量加上第一卷积层311’的计算量,新的卷积层310’的参数个数等于第二卷积层312’的参数个数加上第一卷积层311’的参数个数。

在一个示例中,当第一卷积层311’为输入信道每信道共享卷积的卷积层时,第一卷积层311’的计算量为KH0W0,参数个数为KH0W0/Z;第二卷积层312’的计算量和参数个数均为ZCH1W1。因此,此时新的卷积层310’的计算量为KH0W0+ZCH1W1,参数个数为KH0W0/Z+ZCH1W1

在另一个示例中,当第一卷积层311’为输出信道每信道共享卷积的卷积层时,第一卷积层311’的计算量为ZH0W0,参数个数为ZH0W0/K;第二卷积层312’的计算量和参数个数均为ZCH1W1。因此,此时新的卷积层310’的计算量为ZH0W0+ZCH1W1,参数个数为ZH0W0/K+ZCH1W1

基于上述两个示例,鉴于参数个数一般为自然数,因此当第一卷积层311’为输入信道每信道共享卷积的卷积层时,Z的取值可以为K的约数。当第一卷积层311’为输出信道每信道共享卷积的卷积层时,Z的取值可以为K的倍数。

只要对第一卷积层311’和第二卷积层312’的各自的参数选择合适的数值,即可很容易使新的卷积层310’的计算量小于原始卷积层300的计算量,即满足KH0W0+ZCH1W1<KCHW,或ZH0W0+ZCH1W1<KCHW。

在一个实施例中,第一卷积层的卷积核的尺寸可以等于原始卷积层的卷积核的尺寸。该实施例体现在图3A中时,意味着第一卷积层311的卷积核的高H0和宽W0满足H0=H且W0=W,或者满足H0W0=HW。这样对第一卷积层的参数进行设定可以使计算更为简便。进一步地,在一个实施例中,第二卷积层可以为1×1卷积层。这样对第二卷积层的参数进行的设定可以进一步简化计算过程,且因为结构简单,所以更易于实现。该实施例体现在图3A中时,意味着第二卷积层312的高H1和宽W1均为1。下面参考图3C描述这两个实施例相结合的实施例。

图3C示出了根据变换规则R2将原始卷积层300变换为新的卷积层320的示意图。为了描述简单,仅在图3C中示出对原始神经网络的一个原始卷积层300的变换,但应理解,也可以对原始神经网络的多个或所有原始卷积层进行变换。

如图3C所示,原始卷积层300的参数为(K,C,H,W)。如前所述,C为原始卷积层300的输入信道的数目,K为原始卷积层300的输出信道的数目,H和W分别为原始卷积层300的卷积核的高和宽。如前所述,原始卷积层300的计算量Q1=KCHW。

基于变换规则R2,将原始卷积层300变换为新的卷积层320。如图3C所示,新的卷积层包括每信道共享卷积的第一卷积层321以及卷积核大小为1×1的第二卷积层322。其中,第一卷积层321的卷积核的高和宽分别为H和W,第二卷积层322的卷积核的高和宽均为1。第一卷积层321进行的卷积为H×W每信道卷积,第二卷积层322进行的卷积为1×1卷积,如图3C所示的。

如图3C所示,新的卷积层320的输入信道和输出信道的个数分别为C和K,即与原始卷积层300相比输入输出保持不变。在图3C中,将第一卷积层321的输入示出为等于原始卷积层300的输入,将第二卷积层322的输出示出为等于原始卷积层300的输出,但其仅是示例性的,还可以倒置过来,即将第二卷积层322的输入可以等于原始卷积层300的输入,第一卷积层321的输出等于原始卷积层300的输出(该示例将在图3D中示出)。此外,在图3C中,将第一卷积层321与第二卷积层322之间的信道个数设为Z,即第一卷积层321的参数为(Z,C,H,W),第二卷积层322的参数为(K,Z,1,1)。

下面讨论如图3C所示的新的卷积层320的计算量和其参数个数。新的卷积层320的计算量等于第一卷积层321的计算量加上第二卷积层322的计算量,新的卷积层320的参数个数等于第一卷积层321的参数个数加上第二卷积层322的参数个数。

在一个示例中,当第一卷积层321为输入信道每信道共享卷积的卷积层时,第一卷积层321的计算量为ZHW,参数个数为ZHW/C;第二卷积层322的计算量和参数个数均为KZ。因此,此时新的卷积层320的计算量为ZHW+KZ,参数个数为ZHW/C+KZ。

在该示例中,继续采用先前的示例取(K,C,H,W)=(512,256,3,3),Z通常可取C的倍数,例如简单地取C的1倍,即Z=256,则新的卷积层320的计算量为ZHW+KZ=256×3×3+512×256=133376,参数个数为ZHW/C+KZ=256×3×3/256+512×256=131081。与原始卷积层300的计算量(KCHW=512×256×3×3=1179648)相比,计算量变为原来的11.3%,参数个数变为了原来的11.1%,达到了明显加速与减小模型大小的效果。

在另一个示例中,当第一卷积层321为输出信道每信道共享卷积的卷积层时,第一卷积层321的计算量为CHW,参数个数为CHW/Z;第二卷积层322的计算量和参数个数均为KZ。因此,此时新的卷积层320的计算量为CHW+KZ,参数个数为CHW/Z+KZ。

在该示例中,Z通常可取C的约数,例如简单地取Z=C,则Z=256,则新的卷积层320的计算量为CHW+KZ=256×3×3+512×256=133376,参数个数为ZHW/C+KZ=256×3×3/256+512×256=131081。与原始卷积层300相比,计算量变为原来的11.3%,参数个数变为了原来的11.1%,达到了明显加速与减小模型大小的效果。

现在描述前面提到的将图3C中的第一卷积层321和第二卷积层322倒置的情况,参见图3D。

图3D示出了根据变换规则R2’将原始卷积层300变换为新的卷积层320’的示意图。由于图3D与图3C相比,所示对原始卷积层300的变换的区别仅在于将第一卷积层和第二卷积层的位置互换,其余配置都不变,因此为了简洁,与图3C相同的地方不再详细描述。

如图3D所示,第一卷积层321’的参数为(K,Z,H,W),第二卷积层322’的参数为(Z,C,1,1)。新的卷积层320’的计算量等于第二卷积层322’的计算量加上第一卷积层321’的计算量,新的卷积层320’的参数个数等于第二卷积层322’的参数个数加上第一卷积层321’的参数个数。

在一个示例中,当第一卷积层321’为输入信道每信道共享卷积的卷积层时,第一卷积层321’的计算量为KHW,参数个数为KHW/Z;第二卷积层322’的计算量和参数个数均为ZC。因此,此时新的卷积层320’的计算量为KHW+ZC,参数个数为KHW/Z+ZC。

在该示例中,继续采用先前的示例取(K,C,H,W)=(512,256,3,3),Z通常可取K的约数,例如简单地设Z=K,即Z=512,则新的卷积层320’的计算量为KHW+ZC=512×3×3+512×256=135680,参数个数为KHW/Z+ZC=512×3×3/512+512×256=131081。与原始卷积层300的计算量(KCHW=512×256×3×3=1179648)相比,计算量变为原来的11.5%,参数个数变为了原来的11.1%,达到了明显加速与减小模型大小的效果。

在另一个示例中,当第一卷积层321’为输出信道每信道共享卷积的卷积层时,第一卷积层321’的计算量为ZHW,参数个数为ZHW/K;第二卷积层322’的计算量和参数个数均为ZC。因此,此时新的卷积层320’的计算量为ZHW+ZC,参数个数为ZHW/K+ZC。

在该示例中,Z通常可取K的倍数,例如简单地设Z=K,即Z=512,则新的卷积层320’的计算量为ZHW+ZC=512×3×3+512×256=135680,参数个数为ZHW/K+ZC=512×3×3/512+512×256=131081。与原始卷积层300的计算量(KCHW=512×256×3×3=1179648)相比,计算量变为原来的11.5%,参数个数变为了原来的11.1%,达到了明显加速与减小模型大小的效果。

在又一个实施例中,第一卷积层的卷积核的维度可以等于原始卷积层的卷积核的维度。前述的示例是假定原始卷积层的卷积核的维度为二维的情况,本发明的方法可以推广到高维度应用中。下面结合图3E进行描述。

图3E为在图3C的基础上将原始卷积层的卷积核的维度增加到三维的情况,因此,在该示例中,第一卷积层的卷积核的维度也为三维。

图3E示出了根据变换规则R3将原始卷积层300变换为新的卷积层330的示意图。为了描述简单,仅在图3E中将原始卷积层的卷积核的维度示出为三维,但应理解,原始卷积层的卷积核的维度可以为更高维度。

如图3E所示,原始卷积层300的参数为(K,C,H,W,D)。如前所述,C为原始卷积层300的输入信道的数目,K为原始卷积层300的输出信道的数目,H、W、D分别为原始卷积层300的卷积核的三个维度的大小。原始卷积层300的计算量Q1=KCHWD。

基于变换规则R3,将原始卷积层300变换为新的卷积层330。如图3E所示,新的卷积层包括每信道共享卷积的第一卷积层331以及卷积核大小为1×1的第二卷积层332。其中,第一卷积层331的卷积核的三维参数分别为H、W和D。第一卷积层331进行的卷积为H×W×D每信道卷积,第二卷积层332进行的卷积为1×1卷积,如图3E所示的。

如图3E所示,新的卷积层330的输入信道和输出信道的个数分别为C和K,即与原始卷积层300相比输入输出保持不变。在图3E中,将第一卷积层331的输入示出为等于原始卷积层300的输入,将第二卷积层332的输出示出为等于原始卷积层300的输出,但其仅是示例性的,还可以倒置过来,即将第二卷积层332的输入可以等于原始卷积层300的输入,第一卷积层331的输出等于原始卷积层300的输出(该示例将在图3F中示出)。此外,在图3E中,将第一卷积层331与第二卷积层332之间的信道个数设为Z,即第一卷积层331的参数为(Z,C,H,W,D),第二卷积层332的参数为(K,Z,1,1)。

下面讨论如图3E所示的新的卷积层330的计算量和其参数个数。新的卷积层330的计算量等于第一卷积层331的计算量加上第二卷积层332的计算量,新的卷积层330的参数个数等于第一卷积层331的参数个数加上第二卷积层332的参数个数。

在一个示例中,当第一卷积层331为输入信道每信道共享卷积的卷积层时,第一卷积层331的计算量为ZHWD,参数个数为ZHWD/C;第二卷积层322的计算量和参数个数均为KZ。因此,此时新的卷积层330的计算量为ZHWD+KZ,参数个数为ZHWD/C+KZ。

在该示例中,例如可以取(K,C,H,W,D)=(512,256,3,3,3),Z通常可取C的倍数,例如Z=C,即Z=256,则新的卷积层330的计算量为ZHWD+KZ=256×3×3×3+512×256=137984,新的卷积层330的参数个数为ZHWD/C+KZ=256×3×3×3/256+512×256=131099。原始卷积层计算量和参数个数均为KCHWD=512×256×3×3×3=3538944。与原始卷积层300相比,计算量变为原来的3.8%,参数个数变为了原来的3.7%。

在另一个示例中,当第一卷积层331为输出信道每信道共享卷积的卷积层时,第一卷积层331的计算量为CHWD,参数个数为CHWD/Z;第二卷积层332的计算量和参数个数均为KZ。因此,此时新的卷积层330的计算量为CHWD+KZ,参数个数为CHWD/Z+KZ。

在该示例中,Z通常可取C的约数,例如Z=C,则新的卷积层330的计算量为CHWD+KZ=256×3×3×3+512×256=137984,参数个数为ZHWD/C+KZ=256×3×3×3/256+512×256=131099。与原始卷积层300相比,计算量变为原来的3.8%,参数个数变为了原来的3.7%。

在高维度应用中,根据本发明实施例的方法达到了更为明显加速与减小模型大小的效果。

现在描述前面提到的将图3E中的第一卷积层331和第二卷积层332倒置的情况,参见图3F。

图3F示出了根据变换规则R3’将原始卷积层300变换为新的卷积层330’的示意图。由于图3F与图3E相比,所示对原始卷积层300的变换的区别仅在于将第一卷积层和第二卷积层的位置互换,其余配置都不变,因此为了简洁,与图3E相同的地方不再详细描述。

如图3F所示,第一卷积层331’的参数为(K,Z,H,W,D),第二卷积层332’的参数为(Z,C,1,1)。新的卷积层330’的计算量等于第二卷积层332’的计算量加上第一卷积层331’的计算量,新的卷积层330’的参数个数等于第二卷积层332’的参数个数加上第一卷积层331’的参数个数。

在一个示例中,当第一卷积层331’为输入信道每信道共享卷积的卷积层时,第一卷积层331’的计算量为KHWD,参数个数为KHWD/Z;第二卷积层332’的计算量和参数个数均为ZC。因此,此时新的卷积层330’的计算量为KHWD+ZC,参数个数为KHWD/Z+ZC。

在该示例中,继续采用先前的示例取(K,C,H,W)=(512,256,3,3,3),Z通常可取K的约数,例如简单地设Z=K,即Z=512,则新的卷积层330’的计算量为KHWD+ZC=512×3×3×3+512×256=144896,参数个数为KHWD/Z+ZC=512×3×3×3/512+512×256=131099。与原始卷积层300的计算量(KCHWD=512×256×3×3×3=3538944)相比,计算量变为原来的4%,参数个数变为了原来的3.7%,达到了明显加速与减小模型大小的效果。

在另一个示例中,当第一卷积层331’为输出信道每信道共享卷积的卷积层时,第一卷积层331’的计算量为ZHWD,参数个数为ZHWD/K;第二卷积层332’的计算量和参数个数均为ZC。因此,此时新的卷积层330’的计算量为ZHWD+ZC,参数个数为ZHWD/K+ZC。

在该示例中,Z通常可取K的倍数,例如简单地设Z=K,则新的卷积层330’的计算量为ZHWD+ZC=512×3×3×3+512×256=144896,参数个数为ZHWD/K+ZC=512×3×3×3/512+512×256=131099。与原始卷积层300的计算量相比,计算量变为原来的4%,参数个数变为了原来的3.7%,达到了明显加速与减小模型大小的效果。

以上示例性地描述根据本发明实施例的神经网络的构建方法,重点介绍了将原始神经网络的原始卷积层进行变换的不同变换规则,以及在这些变换规则下所得到的新的卷积层的结构及其性能。基于新的卷积层,可以用于构建新的神经网络。

值得注意的是,虽然结合图3A到图3F描述了变换为新的卷积层的实施例,但其仅是示例性的而非穷尽的描述,在本发明的构思和教导下的任何修改和替换,都应视为在本发明的范围之内。

基于上面的描述,根据本发明实施例的神经网络的构建方法通过将神经网络的至少一个卷积层变换为每信道共享卷积的卷积层与卷积核尺寸变小的卷积层的组合来构建新的神经网络,可在确保神经网络实现功能不变的情况下减小神经网络的计算量。

此外,由于根据本发明实施例的神经网络的构建方法所构建的新的神经网络实现的功能与原始神经网络相同,因为新的卷积层和原始卷积层的输入输出均相同,因此可采用训练原始神经网络的训练数据来训练新的神经网络,而无需获取新的训练数据。

示例性地,根据本发明实施例的神经网络的构建方法可以在具有存储器和处理器的设备、装置或者系统中实现。

此外,根据本发明实施例的神经网络的构建方法计算速度快、模型体积小,可以方便地部署到智能手机、平板电脑、个人计算机等移动设备上。替代地,根据本发明实施例的神经网络的构建方法还可以部署在服务器端(或云端)。替代地,根据本发明实施例的神经网络的构建方法还可以分布地部署在服务器端(或云端)和个人终端处。

下面结合图4描述本发明另一方面提供的神经网络的构建装置。图4示出了根据本发明实施例的神经网络的构建装置400的示意性框图。

如图4所示,根据本发明实施例的神经网络的构建装置400包括获取模块410和变换模块420。所述各个模块可分别执行上文中结合图2描述的神经网络的构建方法的各个步骤/功能。以下仅对神经网络的构建装置400的各单元的主要功能进行描述,而省略以上已经描述过的细节内容。

获取模块410用于获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层。变换模块420用于根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络,其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。获取模块410和变换模块420均可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

在一个实施例中,获取模块410所获取的神经网络可以为包括卷积层的任意神经网络,例如卷积神经网络等。此处,将获取模块410所获取的神经网络称为原始神经网络是为了与将要构建的新的神经网络相区别,而非起到任何限定作用。类似地,将获取模块410所获取的神经网络所包括的卷积层定义为原始卷积层是为了与将要构建的新的神经网络的新的卷积层相区别,而非起到任何限定作用。

在一个实施例中,变换模块420可以将原始神经网络所包括的所有卷积层(即原始卷积层)都变换为根据本发明实施例的新的卷积层(后面将对所述新的卷积层进行详细描述)。在另一个实施例中,变换模块420可以将原始神经网络所包括的一个或一部分原始卷积层变换为根据本发明实施例的新的卷积层,这都可以根据预定需求来决定。因此,变换模块420可以有选择地对原始神经网络的至少一个原始卷积层进行变换。

在一个实施例中,变换模块420将原始神经网络的原始卷积层变换为新的卷积层可遵循一定的变换规则,不同的变换规则将会使原始神经网络的原始卷积层变换为不同的新卷积层,如图3A~3F示例性地示出根据不同变换规则变换得到的不同的新的卷积层。

总体来说,变换后得到的新的卷积层包括第一卷积层和与第一卷积层连接的第二卷积层。其中,第一卷积层为每信道共享卷积的卷积层,第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,新的卷积层的输入输出与原始卷积层的输入输出均相同。

其中,每信道共享卷积可以指输入信道每信道共享卷积或输出信道每信道共享卷积。输入信道每信道共享卷积的卷积层可以理解为所有的输入信道共享该卷积层的卷积,也就意味着该卷积层的计算量与输入信道的个数无关,仅取决于输出信道的个数和卷积核的尺寸。类似地,输出信道每信道共享卷积的卷积层可以理解为所有的输出信道共享该卷积层的卷积,也就意味着该卷积层的计算量与输出信道的个数无关,仅取决于输入信道的个数和卷积核的尺寸。很明显,不论是输入信道每信道共享卷积还是输出信道每信道共享卷积,每信道共享卷积的卷积层的计算量会大大减小。

而对于第二卷积层,其卷积核的尺寸小于原始卷积层的卷积核的尺寸,其输入信道或输出信道中的一个取决于原始卷积层的输入信道或输出信道。因此,相比较而言,其计算量也会减小。

新的卷积层的计算量等于第一卷积层的计算量加上第二卷积层的计算量,也就是说,通过变换模块420的变换,将参数均是相乘关系的计算量变为了部分相乘部分相加的关系,因此可大大减小计算量。请参考上文结合图3A-3F描述的不同的变换规则以及变换为的不同的新的卷积层,为了简洁,此处不再赘述。

在一个实施例中,第一卷积层的输入等于原始卷积层的输入,第一卷积层的输出作为第二卷积层的输入,第二卷积层的输出等于原始卷积层的输出。在另一个实施例中,第二卷积层的输入等于原始卷积层的输入,第二卷积层的输出作为第一卷积层的输入,第一卷积层的输出等于原始卷积层的输出。换言之,原始卷积层可以变换为第一卷积层和第二卷积层的组合,但是第一卷积层与第二卷积层的位置排列可以是任意的,不论是第一卷积层排列在前还是第二卷积层排列在前,最终均能够由于其组合而减少计算量。此外,虽然在图3A到图3F中将第一卷积层和第二卷积层的数量都示出为一个,但其仅是示例性的,也可以根据需求调整第一卷积层和/或第二卷积层的数目。

在一个实施例中,第一卷积层的卷积核的尺寸可以等于原始卷积层的卷积核的尺寸。这样对第一卷积层的参数进行设定可以使计算更为简便。进一步地,在一个实施例中,第二卷积层可以为1×1卷积层。这样对第二卷积层的参数进行的设定可以进一步简化计算过程,且因为结构简单,所以更易于实现。

在又一个实施例中,第一卷积层的卷积核的维度可以等于原始卷积层的卷积核的维度。根据本发明实施例的神经网络的构建装置可以推广到高维度应用中。在高维度应用中,根据本发明实施例的神经网络的构建装置所构建的新的神经网络达到了更为明显加速与减小模型大小的效果。

基于上面的描述,根据本发明实施例的神经网络的构建装置通过将神经网络的至少一个卷积层变换为每信道共享卷积的卷积层与卷积核尺寸变小的卷积层的组合来构建新的神经网络,可在确保神经网络实现功能不变的情况下减小神经网络的计算量。

图5示出了根据本发明实施例的神经网络的构建系统500的示意性框图。神经网络的构建系统500包括存储装置510以及处理器520。

其中,存储装置510存储用于实现根据本发明实施例的神经网络的构建方法中的相应步骤的程序代码。处理器520用于运行存储装置510中存储的程序代码,以执行根据本发明实施例的神经网络的构建方法的相应步骤,并且用于实现根据本发明实施例的神经网络的构建装置中的相应模块。

在一个实施例中,在所述程序代码被处理器520运行时使得神经网络的构建系统500执行以下步骤:获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层;以及根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络;其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

在一个实施例中,所述第一卷积层为输入信道每信道共享卷积的卷积层或输出信道每信道共享卷积的卷积层。

在一个实施例中,所述第一卷积层的输入等于所述原始卷积层的输入,所述第一卷积层的输出作为所述第二卷积层的输入,所述第二卷积层的输出等于所述原始卷积层的输出。

在一个实施例中,所述第二卷积层的输入等于所述原始卷积层的输入,所述第二卷积层的输出作为所述第一卷积层的输入,所述第一卷积层的输出等于所述原始卷积层的输出。

在一个实施例中,所述第一卷积层的卷积核的尺寸等于所述原始卷积层的卷积核的尺寸。

在一个实施例中,所述卷积层为1×1卷积层。

在一个实施例中,所述第一卷积层的卷积核的维度等于所述原始卷积层的卷积核的维度。

此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的神经网络的构建方法的相应步骤,并且用于实现根据本发明实施例的神经网络的构建装置中的相应模块。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合,例如一个计算机可读存储介质包含获取原始神经网络的程序代码,另一个计算机可读存储介质包含对原始卷积层进行变换的计算机可读的程序代码。

在一个实施例中,所述计算机程序指令在被计算机运行时可以实现根据本发明实施例的神经网络的构建装置的各个功能模块,并且/或者可以执行根据本发明实施例的神经网络的构建方法。

在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:获取包括卷积层的原始神经网络,所述原始神经网络的卷积层定义为原始卷积层;以及根据变换规则,将所述原始神经网络的至少一个原始卷积层变换为新的卷积层,以用于构建新的神经网络;其中,所述新的卷积层包括第一卷积层和与所述第一卷积层连接的第二卷积层,所述第一卷积层为每信道共享卷积的卷积层,所述第二卷积层为与原始卷积层相比卷积核尺寸变小的卷积层,所述新的卷积层的输入输出与所述原始卷积层的输入输出均相同。

在一个实施例中,所述第一卷积层为输入信道每信道共享卷积的卷积层或输出信道每信道共享卷积的卷积层。

在一个实施例中,所述第一卷积层的输入等于所述原始卷积层的输入,所述第一卷积层的输出作为所述第二卷积层的输入,所述第二卷积层的输出等于所述原始卷积层的输出。

在一个实施例中,所述第二卷积层的输入等于所述原始卷积层的输入,所述第二卷积层的输出作为所述第一卷积层的输入,所述第一卷积层的输出等于所述原始卷积层的输出。

在一个实施例中,所述第一卷积层的卷积核的尺寸等于所述原始卷积层的卷积核的尺寸。

在一个实施例中,所述卷积层为1×1卷积层。

在一个实施例中,所述第一卷积层的卷积核的维度等于所述原始卷积层的卷积核的维度。

根据本发明实施例的神经网络的构建装置中的各模块可以通过用于实现根据本发明实施例的神经网络的构建方法和装置的电子设备的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。

此外,根据本发明实施例,还提供了一种神经网络,所述神经网络是通过采用上述任意实施例所述的方法、装置或系统而构建的。

根据本发明实施例的神经网络及其构建方法、装置、系统以及存储介质通过将神经网络的至少一个卷积层变换为每信道共享卷积的卷积层与卷积核尺寸变小的卷积层的组合来构建新的神经网络,可在确保神经网络实现功能不变的情况下减小神经网络的计算量。

尽管这里已经参考附图描述了示例实施例,应理解上述示例实施例仅仅是示例性的,并且不意图将本发明的范围限制于此。本领域普通技术人员可以在其中进行各种改变和修改,而不偏离本发明的范围和精神。所有这些改变和修改意在被包括在所附权利要求所要求的本发明的范围之内。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的物品分析设备中的一些模块的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。

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