基于神经网络的计算方法及装置与流程

文档序号:13031129阅读:236来源:国知局
基于神经网络的计算方法及装置与流程

本发明涉及人工智能领域,更具体地涉及一种基于神经网络的计算方法和装置。



背景技术:

随着人工智能的快速发展,基于神经网络的计算已被广泛用于文字识别、语音识别等诸多领域中。在基于神经网络的计算中,一种典型的操作是输入矢量与参数矩阵的矩阵乘法。现有的神经网络的参数一般数目巨大,甚至多达几百亿。并且,这些参数一般由32位浮点数组成。

因此,现有的基于神经网络的计算通常计算量大,且耗时长。尤其在诸如手机的移动终端等计算能力受限的平台上,以上计算不但造成长延时,并给平台的功耗、散热等方面带来挑战。



技术实现要素:

考虑到上述问题而提出了本发明。本发明提供了一种基于神经网络的计算方法和装置,通过合并神经网络中相同参数的乘法运算,可以显著减少基于神经网络的计算的计算量,从而提高计算速度,节约平台的能源。

根据本发明一方面,提供了一种基于神经网络的计算方法,包括:

将输入数据输入至第一神经网络,其中所述第一神经网络的至少一个权重系数矩阵的至少一行内包括相同参数;

基于所述第一神经网络对所述输入数据进行计算,其中在涉及所述权重系数矩阵的至少一行的矩阵乘法操作中,

将所述矩阵乘法操作所涉及的输入矢量中的、与所述相同参数对应的元素相加,以获得元素和;

将所述元素和与所述相同参数的值相乘,以获得数据积;

根据所述数据积的加和计算涉及所述权重系数矩阵的至少一行的乘法计算结果;以及

根据所述权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。

示例性地,所述计算方法还包括:

将第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类;

根据经聚类的参数确定至少一个类中的每类的类中心值;以及

用所述类中心值替换对应类中的参数,以获得所述第一神经网络。

示例性地,所述确定至少一个类中的每类的类中心值包括:

计算所述至少一个类中的每类的参数的平均值,其中所述平均值是对应类的类中心值。

示例性地,所述确定至少一个类中的每类的类中心值包括:

计算所述至少一个类中的每类的参数的平均值;以及

将所述平均值取整;

其中,经取整的平均值是对应类的类中心值。

示例性地,所述聚类采用k均值聚类。

示例性地,所述计算方法还包括:

利用训练数据和与之对应的标注内容训练并获得所述第二神经网络。

示例性地,所述计算方法是利用代码生成器所生成的代码实现的。

根据本发明另一方面,还提供了一种基于神经网络的计算装置,包括:

输入模块,用于将输入数据输入至第一神经网络,其中所述第一神经网络的至少一个权重系数矩阵的至少一行内包括相同参数;

计算模块,用于基于所述第一神经网络对所述输入数据进行计算,其中在涉及所述权重系数矩阵的至少一行的矩阵乘法操作中,

将所述矩阵乘法操作所涉及的输入矢量中的、与所述相同参数对应的元素相加,以获得元素和;

将所述元素和与所述相同参数的值相乘,以获得数据积;

根据所述数据积的加和计算涉及所述权重系数矩阵的至少一行的乘法计算结果;以及

输出模块,用于根据所述权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。

示例性地,所述计算装置还包括:

聚类模块,用于将第二神经网络的至少一个权重系数矩阵的至少一行内的 参数聚类;

类中心值确定模块,用于针对所述第二神经网络根据经聚类的参数确定至少一个类中的每类的类中心值;以及

替换模块,用于针对所述第二神经网络用所述类中心值替换对应类中的参数,以获得所述第一神经网络。

示例性地,所述类中心值确定模块包括:

第一平均值计算单元,用于计算所述至少一个类中的每类的参数的平均值,其中所述平均值是对应类的类中心值。

示例性地,所述类中心值确定模块包括:

第二平均值计算单元,用于计算所述至少一个类中的每类的参数的平均值;以及

取整单元,用于将所述平均值取整;

其中,经取整的平均值是对应类的类中心值。

示例性地,所述聚类采用k均值聚类。

示例性地,所述计算装置还包括:

训练模块,用于利用训练数据和与之对应的标注内容训练并获得所述第二神经网络。

上述计算方法和计算装置能够显著减少基于神经网络的计算的计算量。从而能够减少所运行平台的计算时间。由此,降低平台的功耗,延长平台的待机时间,并且降低平台的散热量。

附图说明

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

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

图2示出了根据本发明一个实施例的基于神经网络的计算方法的示意性流程图;

图3示出了根据本发明另一个实施例的基于神经网络的计算方法的示意性流程图;

图4示出了根据本发明一个实施例的基于神经网络的计算装置的示意性框图;

图5示出了根据本发明另一个实施例的基于神经网络的计算装置的示意性框图;以及

图6示出了根据本发明一个实施例的用于基于神经网络的计算的电子设备的示意性框图。

具体实施方式

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

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

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

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

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

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

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

上述输入装置106和输出装置108主要用于与用户交互,电子设备100也可以不包括二者。

下面,将参考图2描述根据本发明一个实施例的基于神经网络的计算方法200。

在步骤s220中,将输入数据输入至第一神经网络。

输入数据可以是任何数据,例如图像数据、声音数据以及文本数据等等。输入数据可以用向量来表示,称为输入向量。输入数据也可以用矩阵来表示,矩阵是由一个或多个向量组成的,这些向量也称为输入向量。

对于神经网络来说,其中可能包括一个或多个层,其中的部分或全部层可能对该层的输入数据进行矩阵乘法运算。具体地,神经网络对数据的操作通常包括一个或多个矩阵乘法:y=mx。其中,m为神经网络的权重系数矩阵,其元素是神经网络的参数。x为输入矢量,y为输出矢量。设x的长度为m,即x中包括m个元素。y的长度为n,即y中包括n个元素。如此,完成关于该权重系数矩阵m的一次矩阵乘法操作需要m*n次浮点数或整数的乘法运算。

对于第一神经网络,至少存在一个符合以下条件的权重系数矩阵:该权重系数矩阵中存在至少一个包括相同参数的行。也就是说,在第一神经网络的一个或多个权重系数矩阵中,包括相同的参数(即矩阵的元素大小相等),并且至少有一部分相同参数在权重系数矩阵的同一行内。以下示出了第一神经网络的权重系数矩阵的一个示例:

对于上述示例中的权重系数矩阵m,其中共包括3行。第一行中的第一个元素和第二个元素均为3,这二者是相同参数。第三行中的第一个元素、第三个元素和第四个元素均为5,这三者是相同参数。也就是说,权重系数矩阵m 中包括两个包括相同参数的行。

在步骤s240中,基于第一神经网络对输入数据进行计算。

如前所述,第一神经网络对数据的计算包括一个或多个矩阵乘法计算。第一神经网络可以在其一层或多层中对该层的输入数据进行矩阵乘法计算。第一神经网络的该层的参数构成矩阵乘法计算中所涉及的权重系数矩阵。在第一神经网络中,至少存在一个如下权重系数矩阵,该权重系数矩阵中至少一行内包括相同参数。

在涉及权重系数矩阵中的、包括相同参数的行的矩阵乘法操作中,具体包括如下子步骤。

首先,将该矩阵乘法操作所涉及的输入矢量中的、与权重系数矩阵的该行内的相同参数对应的元素相加,以获得元素和。

如前所述,第一神经网络可包括一层或多层。这些层中的一个或多个可对该层的输入数据进行矩阵乘法计算。对于第一层而言,其输入数据是第一神经网络的输入数据。对于第二层而言,其输入数据是第一层的输出数据。以此类推,对于第一神经网络的、除第一层以外的任一层来说,其输入数据是前一层的输出数据。如果第一神经网络的特定层对于该层的输入数据执行矩阵乘法操作,那么该矩阵乘法操作所涉及的输入矢量是表示该层的输入数据的矢量。下面示出了矩阵乘法操作所涉及的输入矢量x的一个示例:x=[1278]t

对于如上所述的权重系数矩阵的第一行来说,其中的相同参数是第一个元素和第二个元素。这二者分别对应输入矢量x中的第一个元素“1”和第二个元素“2”,则元素和为1+2=3。

对于如上所述的权重系数矩阵的第三行来说,其中的相同参数是第一个元素、第三个元素和第四个元素。这三者分别对应输入矢量x中的第一个元素“1”、第三个元素“7”和第四个元素“8”,则元素和为1+7+8=16。

然后,将上述元素和与权重系数矩阵的该行内的相同参数的值相乘,以获得数据积。

对于如上所述的权重系数矩阵的第一行来说,将元素和3与第一行中的相同参数的值3相乘,则数据积为3*3=9。

对于如上所述的权重系数矩阵的第三行来说,将元素和16与第三行中的相同参数的值5相乘,则数据积为16*5=80。

最后,根据上述数据积的加和计算涉及该权重系数矩阵的该行的乘法计算结果。

对于如上所述的权重系数矩阵的第一行来说,其与x的乘法计算结果为9+5*7+4*8=76。

对于如上所述的权重系数矩阵的第三行来说,其与x的乘法计算结果为80+2*2=84。

在步骤s260中,根据权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。

可以理解,除了上述包括相同参数的第一行和第三行,该权重系数矩阵m还包括第二行,该行中不存在相同参数。对于该第二行,其与x的乘法计算结果为2*1+1*2+5*7+6*8=87。

根据权重系数矩阵的所有行的乘法计算结果,可以获得该权重系数矩阵的输出向量。对于如上所述的权重系数矩阵来说,其输出向量为y=[768784]t

根据所有权重系数矩阵的输出向量,即可获得并输出第一神经网络的计算结果。本领域普通技术人员了解该过程,为了简洁,在此不再赘述。

上述基于神经网络的计算方法通过减少神经网络的矩阵乘法操作中的乘法运算,能够显著减少基于神经网络的计算的计算量。从而能够减少所运行平台的计算时间。由此,降低平台的功耗,延长平台的待机时间,并且降低平台的散热量。

可选地,上述计算方法200是利用代码生成器所生成的代码实现的。代码生成器能够按照特定编码规范自动输出期望的代码。

首先,可以将第一神经网络的参数和各层的拓扑结构数据输入到代码生成器。将第一神经网络的描述输入至代码生成器,以由代码生成器生成相应的代码,例如c语言代码。

各层的拓扑结构数据中可包括关于第一神经网络的各层的计算操作的数据,例如关于矩阵乘法操作的数据。以下示出了根据本发明一个实施例的输入至代码生成器的一段原始代码(伪代码)示例,其是关于上述第一神经网络的 权重系数矩阵的第一行的原始代码:

y[0]=m[0][0]*x[0];

y[0]=y[0]+m[0][1]*x[1];

y[0]=y[0]+m[0][2]*x[2];

y[0]=y[0]+m[0][3]*x[3]。

然后,对于矩阵乘法操作,例如步骤s240中所描述的,代码生成器将第一神经网络中的参数替换为恒量(已知常数)直接写到所生成的代码。

例如,对于上述原始代码来说,其中包括以下四个参数:

m[0][0]=3,m[0][1]=3,m[0][2]=5,m[0][3]=4。

根据上述等式,将上述原始代码中的参数替换为已知常数,由此得到以下经替换的代码:

y[0]=3*x[0];

y[0]=y[0]+3*x[1];

y[0]=y[0]+5*x[2];

y[0]=y[0]+4*x[3]。

通过将第一神经网络的参数直接替换为恒量,可以减少计算过程中对内存的访问。

最后,代码生成器将经替换的代码做等效变换。由于第一神经网络的权重系数矩阵的行内包括相同参数,可以根据乘法分配率a*b+c*b=(a+c)*b对经替换的代码作等效变换。对上述经替换的代码做等效变换后,得到:

y[0]=(x[0]+x[1])*3;

y[0]=y[0]+x[2]*5;

y[0]=y[0]+x[3]*4。

可以理解,上述技术方案相比优化之前,减少了一次乘法运算。代码生成器所最终生成的代码可被送到编译器生成可执行的二进制代码。代码生成器生成代码的效率高,可以显著提高代码编写者的工作效率。

图3示出了根据本发明另一实施例的基于神经网络的计算方法300的示意性流程图。如图3所示,与上述基于神经网络的计算方法200相比,基于神经网络的计算方法300增加了步骤s311,步骤s312、步骤s313和步骤s314。通过步骤s311、步骤s312、步骤s313和步骤s314获得了第一神经网络。方法300中的步骤s320、步骤s340和步骤s360分别与方法200中的对应步骤类似,为了简洁,在此不再赘述。

在步骤s311中,利用训练数据和与之对应的标注内容训练并获得第二神 经网络。

训练数据是已知其计算结果的数据。例如,对于第一神经网络用于对图像进行文字识别的情况,那么训练数据可以包括已知其中所包括的文字的图像。与这类训练数据对应的标注内容是文字标注。又例如,对于第一神经网络用于对图像进行人脸识别的情况,那么训练数据可以包括已知其中所包括的人脸的图像。与这类训练数据对应的标注内容是人脸标注,例如包括人脸的边界盒。

利用训练数据和与之对应的标注内容调整神经网络的参数,使得经神经网络所获得的计算结果与训练数据所对应的标注内容一致,由此确定第二神经网络。该第二神经网络能够针对未标注的输入数据进行计算,从而获得理想的计算结果。例如,对于用于对图像进行文字或人脸识别的第二神经网络,将图像输入该第二神经网络,该第二神经网络能够对输入图像进行准确地文字或人脸识别并输出理想的识别结果。

在步骤s312中,将步骤s311所获得的第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类。

第二神经网络包括很多参数,其参数的数目甚至可以多达数百亿。可以对第二神经网络的至少一个权重系数矩阵的至少一行内的参数根据其参数值进行聚类,例如分类为k个类。可选地,根据实际应用,k可以是2至100万之间的任意整数。k的值越小,方法300的计算量越小。

假设第二神经网络的一个权重系数矩阵的一行内的参数可以表示为向量n[1]=[1.912.563.584.013.598.46]。将该向量内的参数聚类为3类。则第一类参数包括:1.91和2.56,第二类参数包括3.58、4.01和3.59,第三类参数包括:8.46。

可选地,该聚类操作可以采用k均值聚类方法。k均值聚类方法实现容易,并且能够合理的对目标参数进行分类,从而保证了第二神经网络的计算精度。

在步骤s313中,针对第二神经网络,根据经聚类的参数确定至少一个类中的每类的类中心值。

如步骤s312所述,可以将第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类为k个类。对于这k个类中的一类或多类中的,可以根据其中参数确定该类的类中心值。该类中心值可以大体上体现该类的参数的值。

可选地,步骤s313可包括计算这一类或多类中的每类的参数的平均值。

仍以上述向量n[1]=[1.912.563.584.013.598.46]为例,第一类参数的平 均值为(1.91+2.56)/2=2.235,第二类参数的平均值为(3.58+4.01+3.59)/3=3.727,第三类参数仅包括一个,所以其平均值就是参数本身8.46。

在一个示例中,可以将上述计算所获得的平均值作为对应类的类中心值。以平均值作为类中心值是一个较理想的方案,不仅实现容易,而且保证了据此所获的第一神经网络的计算精度。

在另一个示例中,步骤s313还包括将上述平均值取整。仍以上述向量n[1]=[1.912.563.584.013.598.46]为例,第一类参数的平均值2.235取整后获得经取整的值2,第二类参数的平均值3.727取整后获得经取整的值4,第三类参数的平均值8.46取整后获得经取整的值8。可以将上述经取整的值作为对应类的类中心值。将经取整的值作为类中心值,可以使得据此所获得的第一神经网络的参数为整数,从而使得基于第一神经网络的计算的计算量更小。

在步骤s314中,针对第二神经网络,对于用各个类的类中心值替换该类中的参数,以获得第一神经网络。对于每类参数来说,可以将该类的参数用该类的类中心值代替。

仍以上述向量n[1]=[1.912.563.584.013.598.46]为例,假设最后确定第一类参数的类中心值是2,第二类参数的类中心值是4,第三类参数的类中心值是8。参数替换后的向量为m[1]=[224448],其可以作为第一神经网络的一个权重系数矩阵的一行内的参数。

上面仅以第一神经网络的一个权重系数矩阵的一行为例说明了第一神经网络的获得过程,本领域普通技术人员可以理解,可以针对第二神经网络的一个权重系数矩阵中多行进行上述步骤s312、步骤s313和步骤s314的操作。此外,还可以针对第二神经网络的多个权重系数矩阵中的多行进行上述操作,其中可以针对每个权重系数矩阵中的一行或多行进行上述操作。优选地,针对第二神经网络的全部权重系数矩阵中的所有行进行上述操作。上述操作所涉及的行数越多,基于第一神经网络的计算的计算量越小,相应地,越节约资源。

对于每一行,可以针对聚类所获得的一个或多个类进行上述步骤s313和步骤s314的操作。优选地,针对聚类所获得的全部类进行上述步骤s313和步骤s314的操作。针对越多的类进行该操作,基于第一神经网络的计算的计算量越小。

通过对第二神经网络的参数进行聚类并根据聚类结果确定第一神经网络的参数,可以使得据此确定的第一神经网络的参数为有限的几种,并且可以用 整数或定点数表示,而不是用浮点数表示。由此显著提高第一神经网络的计算速度,并且较少地牺牲第一神经网络的计算精度。

在上述基于神经网络的计算方法300中,第二神经网络是通过利用训练数据和与之对应的标注内容进行训练而获得的,本领域普通技术人员可以理解该获得第二神经网络的方式仅为示意而非限制,例如,第二神经网络可以是预先存储的或根据经验确定的。通过训练的方式获得第二神经网络,可以使第二神经网络更适用于特定场景,由此,可提高据此获得的第一神经网络的计算准确性。

图4示出了根据本发明一个实施例的基于神经网络的计算装置400的示意性框图。如图4所示,所述装置400可以包括输入模块420、计算模块440和输出模块460。

输入模块420用于将输入数据输入至第一神经网络。所述第一神经网络的至少一个权重系数矩阵的至少一行内包括相同参数。输入模块420可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明一个实施例的基于神经网络的计算方法中的步骤s220。

计算模块440用于基于所述第一神经网络对所述输入数据进行计算。其中,在涉及所述权重系数矩阵的至少一行的矩阵乘法操作中,将所述矩阵乘法操作所涉及的输入矢量中的、与所述相同参数对应的元素相加,以获得元素和;将所述元素和与所述相同参数的值相乘,以获得数据积;根据所述数据积的加和计算涉及所述权重系数矩阵的至少一行的乘法计算结果。计算模块440可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明一个实施例的基于神经网络的计算方法中的步骤s240。

输出模块460用于根据所述权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。输出模块460可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明一个实施例的基于神经网络的计算方法中的步骤s260。

上述基于神经网络的计算方法能够显著减少基于神经网络的计算的计算量。从而能够减少所运行平台的计算时间。由此,降低平台的功耗,延长平台的待机时间,并且降低平台的散热量。

图5示出了根据本发明另一个实施例的基于神经网络的计算装置500的示意性框图。如图5所示,与上述基于神经网络的计算装置400相比,基于神经网络的计算装置500增加了训练模块511,聚类模块512、类中心值确定模块513和替换模块514。训练模块511,聚类模块512、类中心值确定模块513和替换模块514用于获得第一神经网络。计算装置500中的输入模块520、计算模块540和输出模块560分别与计算装置400中的对应模块类似,为了简洁,在此不再赘述。

训练模块511用于利用训练数据和与之对应的标注内容训练并获得第二神经网络。所述训练模块511可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明实施例的基于神经网络的计算方法的步骤s311。

可以理解,第二神经网络除了可以利用训练模块511来获得,还可以采用其他方式来获得,例如预先存储的或者基于经验设置的。换言之,计算装置500也可以不包括该训练模块511。

聚类模块512用于将所述第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类。可选地,采用k均值聚类来进行参数聚类。所述聚类模块512可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明实施例的基于神经网络的计算方法的步骤s312。

类中心值确定模块513用于针对所述第二神经网络根据经聚类的参数确定至少一个类中的每类的类中心值。所述类中心值确定模块513可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行根据本发明实施例的基于神经网络的计算方法的步骤s313。

示例性地,类中心值确定模块513包括第一平均值计算单元,用于计算所述至少一个类中的每类的参数的平均值,其中所述平均值是对应类的类中心值。

示例性地,类中心值确定模块513包括第二平均值计算单元和取整单元。第二平均值计算单元用于计算所述至少一个类中的每类的参数的平均值。取整单元用于将所述平均值取整。其中,经取整的平均值是对应类的类中心值。

替换模块514用于针对所述第二神经网络用所述类中心值替换对应类中的参数,以获得所述第一神经网络。所述替换模块514可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现,并且可以执行 根据本发明实施例的基于神经网络的计算方法的步骤s314。

本领域普通技术人员通过阅读上文关于基于神经网络的计算方法的详细描述,能够理解上述基于神经网络的计算装置的结构、实现以及优点,因此这里不再赘述。

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

图6示出了根据本发明实施例的用于基于神经网络的计算的电子设备600的示意性框图。电子设备600包括输入装置610、存储装置620、处理器630以及输出装置640。

所述输入装置610用于接收用户所输入的操作指令以及采集数据。输入装置610可以包括键盘、鼠标、麦克风、触摸屏和摄像头等中的一个或多个。

所述存储装置620存储用于实现根据本发明实施例的基于神经网络的计算方法中的相应步骤的程序代码。

所述处理器630用于运行所述存储装置620中存储的程序代码,以执行根据本发明实施例的基于神经网络的计算方法的相应步骤,并且用于实现根据本发明实施例的基于神经网络的计算装置中的输入模块420、计算模块440和输出模块460。

在一个实施例中,在所述程序代码被所述处理器630运行时使所述电子设备600执行以下步骤:

将输入数据输入至第一神经网络,其中所述第一神经网络的至少一个权重系数矩阵的至少一行内包括相同参数;

基于所述第一神经网络对所述输入数据进行计算,其中在涉及所述权重系数矩阵的至少一行的矩阵乘法操作中,

将所述矩阵乘法操作所涉及的输入矢量中的、与所述相同参数对应的元素相加,以获得元素和;

将所述元素和与所述相同参数的值相乘,以获得数据积;

根据所述数据积的加和计算涉及所述权重系数矩阵的至少一行的乘法计算结果;以及

根据所述权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。

在一个实施例中,在所述程序代码被所述处理器630运行时还使所述电子设备600执行以下步骤:

将第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类;

针对所述第二神经网络,根据经聚类的参数确定至少一个类中的每类的类中心值;以及

针对所述第二神经网络,用所述类中心值替换对应类中的参数,以获得所述第一神经网络。

示例性地,上述聚类操作采用k均值聚类的方法。

示例性地,在所述程序代码被所述处理器630运行时使所述电子设备600执行根据经聚类的参数确定至少一个类中的每类的类中心值的步骤包括:

计算所述至少一个类中的每类的参数的平均值,其中所述平均值是对应类的类中心值。

示例性地,在所述程序代码被所述处理器630运行时使所述电子设备600执行根据经聚类的参数确定至少一个类中的每类的类中心值的步骤包括:

计算所述至少一个类中的每类的参数的平均值;以及

将所述平均值取整;

其中,经取整的平均值是对应类的类中心值。

在一个实施例中,在所述程序代码被所述处理器630运行时还使所述电子设备600执行以下步骤:

利用训练数据和与之对应的标注内容训练并获得第二神经网络。

此外,根据本发明实施例,还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本发明实施例的基于神经网络的计算方法的相应步骤,并且用于实现根据本发明实施例的基于神经网络的计算装置中的相应模块。所述存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。

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

在一个实施例中,所述计算机程序指令在被计算机或处理器运行时执行以下步骤:

将输入数据输入至第一神经网络,其中所述第一神经网络的至少一个权重系数矩阵的至少一行内包括相同参数;

基于所述第一神经网络对所述输入数据进行计算,其中在涉及所述权重系数矩阵的至少一行的矩阵乘法操作中,

将所述矩阵乘法操作所涉及的输入矢量中的、与所述相同参数对应的元素相加,以获得元素和;

将所述元素和与所述相同参数的值相乘,以获得数据积;

根据所述数据积的加和计算涉及所述权重系数矩阵的至少一行的乘法计算结果;以及

根据所述权重系数矩阵的所有行的乘法计算结果,计算并输出所述第一神经网络的计算结果。

示例性地,所述计算机程序指令在被计算机或处理器运行时还执行以下步骤:

将所述第二神经网络的至少一个权重系数矩阵的至少一行内的参数聚类;

针对所述第二神经网络,根据经聚类的参数确定至少一个类中的每类的类中心值;以及

针对所述第二神经网络,用所述类中心值替换对应类中的参数,以获得所述第一神经网络。

示例性地,上述聚类操作采用k均值聚类的方法。

示例性地,在所述计算机程序指令在被所述计算机或处理器运行时使计算机或处理器执行确定至少一个类中的每类的类中心值的步骤包括:

计算所述至少一个类中的每类的参数的平均值,其中所述平均值是对应类的类中心值。

示例性地,在所述计算机程序指令在被所述计算机或处理器运行时使计算机或处理器执行确定至少一个类中的每类的类中心值的步骤包括:

计算所述至少一个类中的每类的参数的平均值;以及

将所述平均值取整;

其中,经取整的平均值是对应类的类中心值。

示例性地,所述计算机程序指令在被计算机或处理器运行时还执行以下步骤:

利用训练数据和与之对应的标注内容训练并获得所述第二神经网络。

根据本发明实施例的基于神经网络的计算方法及装置、电子设备以及存储介质,能够显著减少基于神经网络的计算的计算量。从而能够减少所运行平台的计算时间。由此,降低平台的功耗,延长平台的待机时间,并且降低平台的散热量。

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

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

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

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

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

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

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

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

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

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

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