存储方法、装置、系统及介质与流程

文档序号:16037723发布日期:2018-11-24 10:12阅读:99来源:国知局

本发明涉及人工智能技术领域,更具体地涉及一种存储方法、装置、系统及介质。

背景技术

人工神经网络是一种基于模仿生物神经网络的结构和功能的数学模型,可以对某一类或者一些问题进行函数的模拟和近似。由于大数据的发展,神经网络目前在图像、语音以及自然语言处理等具有海量数据库的方向上有着非常广泛的应用。

目前,由于对神经网络的准确度的要求,网络的复杂度在不断地增加并且网络的空间结构也在持续拓展。由此,造成了网络模型的计算数据所需的存储空间不断攀升。这极大地浪费了系统的存储资源。



技术实现要素:

考虑到上述问题而提出了本发明。本发明提供了一种存储方法、装置、系统及介质。

根据本发明一方面,提供了一种存储方法,包括:

确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数,其中所述m个n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布,n为正整数;

将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值;

确定与所述n个第二响应值分别一一对应的n个n位二进制数,所述n个n位二进制数表示的取值范围以0为中心,并以所述特定间隔在数轴上对称分布;以及

存储所述m个n位二进制数和所述n个n位二进制数。

示例性地,所述确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数包括:

根据如下公式计算与所述神经网络中的m个整数权重分别一一对应的m个n位二进制数:

其中,x表示所述整数权重,k表示所述特定间隔,(anan-1...a1)2表示所述n位二进制数。

示例性地,所述将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值,包括:

根据如下公式将所述神经网络的n个第一响应值映射到所述取值范围内:

其中,z表示所述第二响应值,k表示所述特定间隔,y表示所述第一响应值,b和t为预设常数,符号表示向下取整。

示例性地,所述存储方法还包括:

将所述神经网络的浮点权重进行定点化,以获得所述整数权重,所述浮点权重是用浮点数表示的。

示例性地,所述将所述人工神经网络的浮点权重进行定点化,以获得所述整数权重,包括:

在所述神经网络的训练过程中,将所述神经网络的浮点权重进行定点化,以获得所述整数权重。

示例性地,所述将所述神经网络的浮点权重进行定点化,以获得所述整数权重,包括:

根据如下公式将所述神经网络的浮点权重进行定点化,以获得所述整数权重:

其中,x表示所述整数权重,k表示所述特定间隔,ri表示所述浮点权重,符号“tanh”表示双曲正切函数,符号“||”表示取绝对值。

示例性地,所述存储所述m个n位二进制数包括:

将所述m个n位二进制数拼接为一个二进制串;

存储所述二进制串。

示例性地,所述存储所述n个n位二进制数包括:

将所述n个n位二进制数拼接为一个二进制串;

存储所述二进制串。

根据本发明另一方面,还提供了一种存储装置,包括:

权重确定模块,用于确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数,其中所述n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布,n为正整数;

映射模块,用于将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值;以及

响应值确定模块,用于确定与所述n个第二响应值分别一一对应的n个n位二进制数;以及

存储模块,用于存储所述m个n位二进制数和所述n个n位二进制数。

根据本发明又一方面,还提供了一种存储系统,包括处理器和存储器,其中,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器运行时用于执行上述存储方法。

根据本发明再一方面,还提供了一种存储介质,在所述存储介质上存储了程序指令,所述程序指令在运行时用于执行上述存储方法。

根据本发明实施例的存储方法、装置、系统及介质,通过将神经网络的权重和响应值用二进制数表示,其中该二进制数表示的取值范围以0为中心并以特定间隔在数轴上对称分布,能够完全利用位宽。从而,在保证神经网络的计算性能的前提下,显著减少神经网络的相关数据的存储空间。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

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

图1示出了用于实现根据本发明实施例的存储方法和装置的示例电子设备的示意性框图;

图2示出根据本发明一个实施例的存储方法的示意性流程图;

图3示出根据本发明另一个实施例的存储方法的示意性流程图;

图4示出了根据本发明一个实施例的存储装置的示意性框图;以及

图5示出了根据本发明一个实施例的存储系统的示意性框图。

具体实施方式

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

首先,参照图1来描述用于实现根据本发明实施例的存储方法和装置的示例电子设备100。

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

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

所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。根据本发明的存储方法,可以将神经网络的相关数据存储在所述存储装置104上,例如神经网络的权重和响应值。可以理解,响应值是指利用权重对输入数据进行了计算之后所获得的计算结果。

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

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

示例性地,用于实现根据本发明实施例的存储方法和装置的示例电子设备可以在诸如个人计算机或远程服务器等的设备上实现。

根据本发明实施例的存储方法可以应用于各种神经网络,其用于存储神经网络的相关数据。

整数神经网络是现有神经网络中的一种,其参数和响应值是用n个二进制位表示的整数。与参数和响应值用浮点数表示的神经网络相比,整数神经网络可以加速神经网络的前传推断速度并且降低存储消耗。虽然整数神经网络的权重和响应值都为低位宽的整数,但是现有技术中仍然使用高位宽整数甚至浮点数的方式存储,浪费了存储资源。本发明中的存储方法能够用更少的存储空间存储整数神经网络和其相关数据,例如整数神经网络的权重和响应值。

下面,将参考图2描述根据本发明实施例的存储方法。图2示出根据本发明一个实施例的存储方法200的示意性流程图。如图2所示,该方法200包括以下步骤。

步骤s210,确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数。其中,n为正整数。换言之,对于神经网络中的每个整数权重,确定仅与之对应的、唯一的一个n位二进制数。

对于神经网络来说,其权重可能是正数也可能是负数。如果直接使用原码二进制数的方式来存储权重则无法存储负数权重。如果使用补码的方式来存储权重,会出现表示范围不平衡的问题。在本申请的实施例中,所述m个n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布。该取值范围例如[-3、-1、1、3],该取值范围中的这些数不仅以0为中心在数轴上对称分布,而且具有特定间隔2。例如,n位二进制数表示的取值范围为n位二进制数能够表示的十进制数的范围。

一方面,如果m个n位二进制数表示的取值范围中的一个二进制数表示的数值不是0,那么该值的相反数也必然在该取值范围中。即,该m个n位二进制数表示的数值是正负对称的。例如,如果该取值范围中包括数值1,那么该取值范围也必然包括-1。另一方面,如果将这m个n位二进制数表示的数值按照数值大小进行排序,则其中相邻的两个二进制数表示的数值之间的差是固定的,均等于前述特定间隔。

可选地,对于m个整数权重中的每一个,根据如下公式(1)计算与该整数权重一一对应的n位二进制数:

其中,x表示一个整数权重,k表示所述特定间隔,(anan-1...a1)2表示与该整数权重x对应的n位二进制数。

利用公式(1)确定与整数权重一一对应的n位二进制数能够以较少的计算量获得期望的二进制数。

可选地,k可以是2、3、4等任意正整数。本申请的存储方法可以充分利用位宽,从而进一步节省存储空间。

步骤s220,将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值。

如前所述,对于神经网络的每一层来说,响应值是利用该层的权重对该层的输入数据进行计算操作之后所获得的输出数据。可以理解,该输出数据中的限定词“输出”是指从神经网络中获得该数据的网络层输出,而并非指从整个神经网络输出。如果该网络层存在下一个网络层的话,该输出数据随后被输入到该网络层的下一个网络层。因此,对于该下一个网络层来说,该输出数据是输入数据。

基于神经网络中的上述数据前传计算操作,响应值在多层神经网络中容易被逐层扩大,使得响应值超出n位二进制数可以表示的范围。由此,将神经网络的n个第一响应值映射到n位二进制数表示的取值范围内。从而,在该取值范围内,获得与所述n个第一响应值分别一一对应的n个第二响应值。可以理解,这里的词语“第一”和“第二”的使用不表示任何顺序,也不表示个数,仅用于区分,可以将其理解分别理解为名词“第一响应值”和“第二响应值”的一部分。

可选地,对于所述神经网络的n个第一响应值中的每一个,根据如下公式(2)将该第一响应值映射到所述取值范围内:

其中,y表示一个第一响应值,z表示与该第一响应值y对应的第二响应值,k表示所述特定间隔,b和t为预设常数,符号表示向下取整,符号max()表示取括号中的两个参数中的最大值,符号min()表示取括号中的两个参数中的最小值。

可选地,b和t可以依据经验进行设置。可选地,根据第一响应值的取值范围确定b和t。

根据上述公式(2)将任意的一个第一响应值唯一地映射到n位二进制数的取值范围中的一个数值,能够以较少的计算代价保证响应值都在期望的取值范围内。

步骤s230,确定与所述n个第二响应值分别一一对应的n个n位二进制数。所述n个n位二进制数表示的取值范围也以0为中心,并以所述特定间隔在数轴上对称分布。与步骤s210类似地,在步骤s230中,对于神经网络的每个第二响应值,确定仅与之对应的、唯一的一个n位二进制数。一方面,该n个n位二进制数表示的数值是正负对称的。另一方面,如果将这n个n位二进制数表示的数值按照数值大小进行排序,则其中相邻的两个二进制数表示的数值之间的差是固定的,均等于前述特定间隔。

同样可选地,对于n个第二响应值中的每一个,根据如下公式(3)计算与该第二响应值一一对应的n位二进制数:

其中,r表示一个第二响应值,k表示所述特定间隔,(cncn-1...c1)2表示与该第二响应值r对应的n位二进制数。

步骤s240,存储步骤s210所确定的m个n位二进制数和步骤s230所确定的n个n位二进制数,以实现神经网络的相关数据的存储。

上述存储方法,充分利用了二进制数的位宽可以表示的所有可能值,并且取值范围是正负平衡的。在保证神经网络的计算性能的前提下,达到了显著压缩神经网络的存储空间的技术效果。

本领域普通技术人员可以理解,上述存储方法200仅为示例,可对其进行各种改变,仍能获得上述技术效果。例如,步骤s220和步骤s230这二者与步骤s210之间是彼此独立的。步骤s220和步骤s230可以先于步骤s210执行。

可选地,上述神经网络是卷积神经网络,其包括多个卷积层。上述响应值可以是基于权重的卷积操作的结果。对于卷积操作,使用上述确定与权重和响应值对应的二进制数的方式后,可能的响应值的取值范围也是以0为中心在数轴上对称分布的。

可选地,上述存储方法还包括将神经网络的浮点权重进行定点化,以获得上述整数权重。其中,浮点权重是用浮点数表示的,例如32位浮点数。对于包括浮点权重的神经网络,可以首先将浮点权重定点化,以将浮点权重转换为整数权重。

上述步骤使得本申请的存储方法的适用范围显著扩大,能够存储更多种神经网络。

根据本发明一个实施例,前述的神经网络是利用训练数据进行训练获得的。上述定点化的步骤是在神经网络的训练过程中实现的。

首先,将神经网络的参数随机初始化或利用已经训练好的其他网络进行初始化。其中,对于利用已经训练好的其他网络进行初始化的情况,可以选取其中的一部分作为上述神经网络的一部分。可选地,用整数权重来初始化神经网络。替代地,也可以用浮点权重来初始化神经网络。在这种情况中,在开始训练之前,先将浮点权重进行定点化。

然后,利用经标注的训练数据,对神经网络进行训练。在该训练过程中,可以不断地基于损失函数调整神经网络的权重,并对经调整的权重进行定点化,以获得所有权重均是整数权重的神经网络。再次基于损失函数调整该所有权重均是整数权重的神经网络的权重,并对经调整的权重进行定点化。重复上述过程,直至神经网络的性能满足训练条件。由此,获得了经训练的神经网络,并且该神经网络中的所有权重均是整数权重。

经训练获得的包括整数权重的神经网络性能更好。由此,确保在压缩神经网络的存储空间的同时,不损失神经网络的性能。

可选地,对于神经网络的每个浮点权重,根据如下公式(4)进行定点化,以获得与之对应的整数权重:

其中,ri表示神经网络的第i浮点权重,x表示与浮点权重ri对应的整数权重,k表示所述特定间隔,符号“tanh”表示双曲正切函数,符号“||”表示取绝对值。

上述公式(4)中有效利用了双曲正切函数的单调性,用较少的计算操作完成了权重的定点化。

在一些实施例中,神经网络的权重和响应值也可以分别以数组的形式进行存储。例如,用于表示神经网络的整数权重的m个n位二进制数作为一个数组存储,用于表示神经网络的响应值的n个n位二进制数作为一个数组存储。

图3示出了根据本发明另一个实施例的存储方法300的示意性流程图。存储方法300的包括步骤s310、s320、s330和s340。其中步骤s310、s320和s330分别与存储方法200中的步骤s210、s220和s230类似,为了简洁,在此不再赘述。步骤s340中具体包括步骤s341和步骤s342。

步骤s341,将步骤s310所确定的m个n位二进制数拼接为一个二进制串,并且存储所述二进制串。该二进制串由所述m个n位二进制数串接而形成。

步骤s342,将步骤s330所确定的n个n位二进制数拼接为一个二进制串,并且存储所述二进制串。该二进制串由所述n个n位二进制数串接而形成。

用二进制串存储权重和响应值可以进一步节省神经网络的存储空间。

本领域普通技术人员可以理解,上述各存储方法仅为示例,可对其进行各种改变,仍能获得上述技术效果。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。例如,步骤s341和步骤s342是彼此独立的。这两个步骤可以只存在一个,或者全部存在。在全部存在的情况下,可以以任意顺序执行这两个步骤,而不是步骤s341一定先于步骤s342执行。例如,还可以以任意的顺序执行步骤s210和步骤s220,以及步骤s310和步骤s320。

示例性地,根据本发明实施例的存储方法可以在具有存储器和处理器的设备、装置或者系统中实现。根据本发明实施例的存储方法还可以分布地部署在服务器端(或云端)和客户端处。

根据本发明另一方面,还提供了一种存储装置。图4示出了根据本发明一个实施例的存储装置400的示意性框图。

如图4所示,存储装置400包括权重确定模块410、映射模块420、响应值确定模块430和存储模块440。所述各个模块可分别执行上文中所述的存储方法的各个步骤/功能。以下仅对该存储装置400的各部件的主要功能进行描述,而省略以上已经描述过的细节内容。

权重确定模块410用于确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数,其中所述n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布,n为正整数图像。权重确定模块410可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

映射模块420用于将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值。映射模块420可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

响应值确定模块430用于确定与所述n个第二响应值分别一一对应的n个n位二进制数。响应值确定模块430可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

存储模块440用于存储所述m个n位二进制数和所述n个n位二进制数。存储模块440也可以由图1所示的电子设备中的处理器102运行存储装置104中存储的程序指令来实现。

示例性地,所述获取模块410进一步用于:

示例性地,所述权重确定模块410具体用于根据如下公式计算与所述神经网络中的m个整数权重分别一一对应的m个n位二进制数:

其中,x表示所述整数权重,k表示所述特定间隔,(anan-1...a1)2表示所述n位二进制数。

示例性地,所述映射模块420具体用于根据如下公式将所述神经网络的n个第一响应值映射到所述取值范围内:

其中,z表示所述第二响应值,k表示所述特定间隔,y表示所述第一响应值,b和t为预设常数,符号表示向下取整。

示例性地,所述存储装置400还包括定点化模块(未示出),用于将所述神经网络的浮点权重进行定点化,以获得所述整数权重,所述浮点权重是用浮点数表示的。

示例性地,所述定点化模块具体用于在所述神经网络的训练过程中,将所述神经网络的浮点权重进行定点化,以获得所述整数权重。

示例性地,所述定点化模块具体用于根据如下公式将所述神经网络的浮点权重进行定点化,以获得所述整数权重:

其中,x表示所述整数权重,k表示所述特定间隔,ri表示所述浮点权重,符号“tanh”表示双曲正切函数,符号“||”表示取绝对值。

示例性地,所述存储模块440具体用于:

将所述m个n位二进制数拼接为一个二进制串;

存储所述二进制串。

示例性地,所述存储模块440具体还用于:

将所述n个n位二进制数拼接为一个二进制串;

存储所述二进制串。

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

图5示出了根据本发明一个实施例的存储系统500的示意性框图。如图5所示,系统500包括输入装置510、存储装置520、处理器530以及输出装置540。

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

所述存储装置520存储用于实现根据本发明实施例的存储方法中的相应步骤的计算机程序指令。所述存储装置520还用于存储根据本发明实施例的存储方法所存储的m个n位二进制数和n个n位二进制数。

所述处理器530用于运行所述存储装置520中存储的计算机程序指令,以执行根据本发明实施例的存储方法的相应步骤,并且用于实现根据本发明实施例的存储装置中的权重确定模块410、映射模块420、响应值确定模块430和存储模块440。

在本发明的一个实施例中,在所述计算机程序指令被所述处理器530运行时使所述系统500执行以下步骤:

确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数,其中所述m个n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布,n为正整数;

将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值;

确定与所述n个第二响应值分别一一对应的n个n位二进制数,所述n个n位二进制数表示的取值范围以0为中心,并以所述特定间隔在数轴上对称分布;以及

存储所述m个n位二进制数和所述n个n位二进制数。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数的步骤包括:

根据如下公式计算与所述神经网络中的m个整数权重分别一一对应的m个n位二进制数:

其中,x表示所述整数权重,k表示所述特定间隔,(anan-1...a1)2表示所述n位二进制数。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值的步骤包括:

根据如下公式将所述神经网络的n个第一响应值映射到所述取值范围内:

其中,z表示所述第二响应值,k表示所述特定间隔,y表示所述第一响应值,b和t为预设常数,符号表示向下取整。

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

将所述神经网络的浮点权重进行定点化,以获得所述整数权重,所述浮点权重是用浮点数表示的。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述将所述人工神经网络的浮点权重进行定点化,以获得所述整数权重的步骤包括:

在所述神经网络的训练过程中,将所述神经网络的浮点权重进行定点化,以获得所述整数权重。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述将所述人工神经网络的浮点权重进行定点化,以获得所述整数权重的步骤包括:

根据如下公式将所述神经网络的浮点权重进行定点化,以获得所述整数权重:

其中,x表示所述整数权重,k表示所述特定间隔,ri表示所述浮点权重,符号“tanh”表示双曲正切函数,符号“||”表示取绝对值。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述存储所述m个n位二进制数的步骤包括:

将所述m个n位二进制数拼接为一个二进制串;

存储所述二进制串。

示例性地,在所述计算机程序指令被所述处理器530运行时使所述系统500执行的所述存储所述n个n位二进制数的步骤包括:

将所述n个n位二进制数拼接为一个二进制串;

存储所述二进制串。

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

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

确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数,其中所述m个n位二进制数表示的取值范围以0为中心,并以特定间隔在数轴上对称分布,n为正整数;

将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值;

确定与所述n个第二响应值分别一一对应的n个n位二进制数,所述n个n位二进制数表示的取值范围以0为中心,并以所述特定间隔在数轴上对称分布;以及

存储所述m个n位二进制数和所述n个n位二进制数。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述确定与神经网络中的m个整数权重分别一一对应的m个n位二进制数的步骤包括:

根据如下公式计算与所述神经网络中的m个整数权重分别一一对应的m个n位二进制数:

其中,x表示所述整数权重,k表示所述特定间隔,(anan-1...a1)2表示所述n位二进制数。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述将所述神经网络的n个第一响应值映射到所述取值范围内,以获得与所述n个第一响应值分别一一对应的n个第二响应值的步骤包括:

根据如下公式将所述神经网络的n个第一响应值映射到所述取值范围内:

其中,z表示所述第二响应值,k表示所述特定间隔,y表示所述第一响应值,b和t为预设常数,符号表示向下取整。

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

将所述神经网络的浮点权重进行定点化,以获得所述整数权重,所述浮点权重是用浮点数表示的。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述将所述人工神经网络的浮点权重进行定点化,以获得所述整数权重的步骤包括:

在所述神经网络的训练过程中,将所述神经网络的浮点权重进行定点化,以获得所述整数权重。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述将所述人工神经网络的浮点权重进行定点化,以获得所述整数权重的步骤包括:

根据如下公式将所述神经网络的浮点权重进行定点化,以获得所述整数权重:

其中,x表示所述整数权重,k表示所述特定间隔,ri表示所述浮点权重,符号“tanh”表示双曲正切函数,符号“||”表示取绝对值。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述存储所述m个n位二进制数的步骤包括:

将所述m个n位二进制数拼接为一个二进制串;

存储所述二进制串。

示例性地,所述计算机程序指令被计算机或处理器运行时,使得所述计算机或处理器执行的所述存储所述n个n位二进制数的步骤包括:

将所述n个n位二进制数拼接为一个二进制串;

存储所述二进制串。

根据本发明实施例的存储系统中的各模块可以通过根据本发明实施例实施存储方法的电子设备的处理器运行在存储器中存储的计算机程序指令来实现,或者可以在根据本发明实施例的计算机程序产品的计算机可读存储介质中存储的计算机指令被计算机运行时实现。

根据本发明实施例的存储方法、装置、系统和介质,通过将神经网络的权重和响应值用二进制数表示,能够完全利用位宽。从而,在保证神经网络的计算性能的前提下,显著减少神经网络的相关数据的存储空间。

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

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

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

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

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

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

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

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

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

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

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