深度神经网络DNN模型的压缩方法、装置、设备及介质与流程

文档序号:13844782阅读:272来源:国知局
深度神经网络DNN模型的压缩方法、装置、设备及介质与流程

本发明实施例涉及数据处理技术,尤其涉及一种深度神经网络dnn模型的压缩方法、装置、设备及介质。



背景技术:

深度神经网络(deepneuralnetwork,dnn)算法,是近几年在工业界和学术界新型的一个机器学习领域的流行话题。dnn算法成功地将识别率提高了一个显著的档次。

与传统的gmm(gaussianmixturemodel,高斯混合模型)算法相比,基于dnn算法的语音识别的性能有大幅度的提升,因此,现在语音识别基本上都采用dnn算法。但是,dnn算法的计算量非常大,一般采用专门的gpu(graphicsprocessingunit,图形处理器)才能满足运行需求。

目前,采用主流的深度学习框架(如kaldi,tensorflow等)对dnn声学模型进行训练,dnn声学模型默认所有参数都是浮点型数据。dnn算法的计算量本来就比较大,而模型的参数又全是浮点型数据,加上浮点型数据的乘法运算的速度较慢,会使得dnn算法的计算速度进一步变慢。同时,浮点型数据的dnn模型占用内存也比较大。因此,无法在普通的cpu(centralprocessingunit,中央处理器)上运行上述dnn模型。



技术实现要素:

本发明实施例提供了一种深度神经网络dnn模型的压缩方法、装置、设备及介质,以实现对dnn模型的压缩,使其可以在普通的cpu上运行,提高dnn模型的计算速度。

第一方面,本发明实施例提供了一种深度神经网络dnn模型的压缩方法,包括:

获取待压缩dnn模型,其中,所述待压缩dnn模型包括:输入层、至少一个隐藏层以及输出层,所述待压缩dnn模型中各层的层参数为浮点型数据;

对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩。

第二方面,本发明实施例还提供了一种深度神经网络dnn模型的压缩装置,该装置包括:

获取模块,用于获取待压缩dnn模型,其中,所述待压缩dnn模型包括:输入层、至少一个隐藏层以及输出层,所述待压缩dnn模型中各层的层参数为浮点型数据;

压缩模块,用于对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩。

第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明任意实施例所述的深度神经网络dnn模型的压缩方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的深度神经网络dnn模型的压缩方法。

本发明实施例提供的一种深度神经网络dnn模型的压缩方法、装置、设备及介质,通过获取各层的层参数均为浮点型数据的待压缩dnn模型;对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩的技术方案,基于现有技术中dnn模型无法在普通cpu上运行的问题,提出了有效的解决方案,同时减小了dnn模型的占用内存,提高了dnn模型的计算速度。

附图说明

图1是本发明实施例一提供的一种深度神经网络dnn模型的压缩方法的流程图;

图2是本发明实施例二提供的一种深度神经网络dnn模型的压缩装置的结构示意图;

图3是本发明实施例三中的一种计算机设备的硬件结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1为本发明实施例一提供的一种深度神经网络dnn模型的压缩方法的流程图,本实施例可适用于对浮点型dnn模型进行压缩的情况,该方法可以由本发明实施例提供的深度神经网络dnn模型的压缩装置来执行,该装置可以由软件和/或硬件的方式实现,并一般可集成于计算机处理器中,本实施例的方法具体包括如下步骤:

s110、获取待压缩dnn模型。其中,所述待压缩dnn模型包括:输入层、至少一个隐藏层以及输出层,所述待压缩dnn模型中各层的层参数为浮点型数据。

以压缩dnn声学模型为例,首先要获取待压缩的dnn声学模型,其中,待压缩的dnn声学模型由一个输入层、若干隐藏层和一个输出层构成,每一层的层参数都是浮点型数据。

具体的,所述层参数包括权重矩阵,还包括偏置向量。即,每一层都包括权重矩阵和偏置向量,其中,权重矩阵和偏置向量的个数可以是一个。

s120、对待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩。

为了实现对所述dnn声学模型的压缩,对待压缩dnn模型中各层的层参数进行定点化处理,具体的,即对dnn模型中输入层、隐藏层以及输出层的权重矩阵和偏置向量进行定点化处理。

浮点型数据是32位的数据,字符型的数据是8位的数据,将dnn模型中的层参数进行定点化处理即将层参数由浮点型数据转变为字符型数据。

具体的,对待压缩dnn模型中各层的层参数进行定点化处理的过程可以包括,获取所述待压缩dnn模型中各层的权重矩阵,并将各所述权重矩阵中的各矩阵元素由浮点型数据转换为字符型数据。

在本实施例一种具体的实施方式中,将权重矩阵中的各矩阵元素由浮点型数据转换为字符型数据的过程可以是:

获取权重矩阵中的一行作为当前操作行;获取当前操作行中包含的绝对值最大的第一矩阵元素,并将第一矩阵元素的绝对值作为第一参考数据;分别使用当前操作行中的各矩阵元素除以所述第一参考数据后乘以字符量级权重的结果,更新对应的矩阵元素;如果在当前操作行的更新结果中,目标矩阵元素超过字符型数据的取值范围,则将目标矩阵元素修正为字符型数据取值范围内与目标矩阵元素最接近的边界值;返回执行获取权重矩阵中的一行作为当前操作行的操作,直至完成对权重矩阵中全部行的处理。

其中,字符量级权重为128。

具体的,上述转换过程即为:对权重矩阵中的每一行浮点型数据,判断出该行中绝对值最大的那个数max1(max1的绝对值即为第一参考数据),然后用该行中的每一个浮点型数据都除以第一参考数据后,再乘以128,用计算得出的结果更新对应的矩阵元素。优选的,用得出的每一个结果进行四舍五入后强制转换成为的整数去更新对应的矩阵元素。当完成所有行的数据更新后,即完成对所述权重矩阵的数据类型的转换。如果更新结果中的目标矩阵元素超出了字符型数据的取值范围“-128~127”,例如是当某个目标矩阵元素值为128时,如果用字符型数据来表示就会溢出,此时需要对其进行修正,修正为字符型数据取值范围内与目标矩阵元素最接近的边界值,则将目标矩阵元素值128修正为与其最接近的边界值127,这样即可实现用字符型数据来存储压缩后的数值了。

在本实施例另一种可选的实施方式中,将权重矩阵中的各矩阵元素由浮点型数据转换为字符型数据的过程还可以是:

遍历权重矩阵,获取权重矩阵中包含的绝对值最大的第二矩阵元素,并将第二矩阵元素的绝对值作为第二参考数据;分别使用权重矩阵中的各矩阵元素除以第二参考数据后乘以字符量级权重的结果,更新对应的矩阵元素;如果在权重矩阵的更新结果中,目标矩阵元素超过字符型数据的取值范围,则将目标矩阵元素修正为字符型数据取值范围内与所述目标矩阵元素最接近的边界值。

具体的,上述转换过程即为:比较权重矩阵中的每一个浮点型数据,判断出该矩阵中绝对值最大的那个数max2(max2的绝对值即为第二参考数据),分别用该权重矩阵中的各个元素除以第二参考数据后,再乘以128的结果去更新对应的矩阵元素。当完成所有矩阵元素的更新,即可完成对该权重矩阵的数据类型转换。同样的,如果更新结果中的目标矩阵元素超出了字符型数据的取值范围“-128~127”,例如是当某个目标矩阵元素值为128时,如果用字符型数据来表示就会溢出,此时需要对其进行修正,修正为字符型数据取值范围内与目标矩阵元素最接近的边界值,则将目标矩阵元素值128修正为与其最接近的边界值127,这样即可实现用字符型数据来存储压缩后的数值了。

对待压缩dnn模型中各层的层参数进行定点化处理的过程还可以包括,获取所述待压缩dnn模型中各层的偏置向量,并将各偏置向量中的各向量元素由浮点型数据转换为整型数据。

在本实施例一种可选的实施方式中,将偏置向量中的各向量元素由浮点型数据转换为整型数据的过程可以是:

使用偏置向量中的各向量元素分别除以权重矩阵各对应行的第一参考数据后乘以整型量级权重的结果,更新对应的偏置向量;如果在偏置向量的更新结果中,目标向量元素超过整型数据的取值范围,则将目标向量元素修正为整型数据取值范围内与目标向量元素最接近的边界值。

其中,整型量级权重为32768,32768是由128乘以256得出。

将偏置向量中各向量元素由浮点型数据转换为整型数据的原因在于:在一种神经网络的计算方法中,y=wx+b,其中x是输入数据,y是输出数据,w是权重矩阵,b是偏置向量。当w和x都为字符型数据时,它们之间相乘的结果wx必须用整型数据来存储,否则很容易溢出,加之b和wx是相加的关系,所以应该将偏置向量b也转换为整型数据。

具体的,上述转换过程即为:用偏置向量中的每个元素分别除以权重矩阵中与其对应的各行中的第一参考数据(即max1的绝对值)后,再乘以32768的结果去更新对应的向量元素。当完成所有向量元素的更新,即可完成对该偏置向量的数据类型转换。同样的,如果更新结果中的目标向量元素超出了整型数据的取值范围“-32768~32767”,例如是当某个目标向量元素值为32768时,如果用整型数据来表示就会溢出,此时需要对其进行修正,修正为整型数据取值范围内与目标向量元素最接近的边界值,则将目标向量元素值32768修正为与其最接近的边界值32767,这样即可实现用整型数据来存储压缩后的数值了。

在对待压缩dnn模型中各层的层参数进行定点化处理之后,上述深度神经网络dnn模型的压缩方法还包括:

将输入数据进行定点化处理,并将定点化处理后的定点输入数据输入至所述dnn模型中;根据dnn模型针对定点输入数据输出的定点化输出结果,以及与dnn模型匹配的反定点化计算公式,将定点化输出结果转化为浮点化输出结果。

其中,输入数据的数据类型是由浮点型转化为字符型,输出结果的数据类型是由整型转化为浮点型。

以压缩dnn声学模型为例,不仅对待压缩dnn模型的各层参数进行定点化处理,将输入数据也进行定点化处理。依据神经网络的一种计算方法y=wx+b,权重矩阵w已被转化为字符型数据,偏置向量b已被转化为整型数据,因此将输入数据的数据类型由浮点型转化为字符型。经dnn模型计算得出的输出结果y为整型数据,经过反定点化计算公式,将其转化为浮点型数据提供给用户,以不明显降低输出结果的精度。

具体的,反定点化计算公式,即将输出结果y由整型数据转换为浮点型数据的过程为:

分别用该输出结果中的各个元素除以32768后,再分别乘以权重矩阵中与其对应的各行中的第一参考数据(即max1的绝对值)的结果去更新对应的元素。当完成所有元素的更新时,即可完成对该输出结果的数据类型转换。

本实施例提供的一种深度神经网络dnn模型的压缩方法,通过获取各层的层参数均为浮点型数据的待压缩dnn模型;对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩的技术方案,基于现有技术中dnn模型无法在普通cpu上运行的问题,提出了有效的解决方案。通过对dnn模型进行定点化压缩,减小了大约四分之三的内存占用,同时避免了计算速度较慢的浮点型数据的乘法运算,显著地提高了dnn模型的计算速度。将输出结果的反定点化处理后,为用户提供浮点型的输出结果,与使用未压缩dnn模型得出的数据结果类型相同,不会给用户带来使用差异。

实施例二

图2中示出了本发明实施例二提供的一种深度神经网络dnn模型的压缩装置的结构图。如图2所示,所述装置包括:获取模块210和压缩模块220。其中,

获取模块210,用于获取待压缩dnn模型,其中,所述待压缩dnn模型包括:输入层、至少一个隐藏层以及输出层,所述待压缩dnn模型中各层的层参数为浮点型数据;

压缩模块220,用于对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩。

本实施例提供的一种深度神经网络dnn模型的压缩装置,通过获取各层的层参数均为浮点型数据的待压缩dnn模型;对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩的技术方案,基于现有技术中dnn模型无法在普通cpu上运行的问题,提出了有效的解决方案,同时减小了dnn模型的占用内存,提高了dnn模型的计算速度。

其中,所述层参数包括:权重矩阵。

压缩模块220,具体包括:权重矩阵获取单元和权重矩阵数据类型转换单元。其中,

权重矩阵获取单元,用于获取所述待压缩dnn模型中各层的权重矩阵;

权重矩阵数据类型转换单元,用于将各所述权重矩阵中的各矩阵元素由浮点型数据转换为字符型数据。

在本实施例一种可选的实施方式中,权重矩阵数据类型转换单元,具体可以包括当前操作行获取子单元、第一参考数据确定子单元、第一矩阵元素更新子单元、第一修正子单元和遍历执行子单元。其中,

当前操作行获取子单元,用于获取所述权重矩阵中的一行作为当前操作行;

第一参考数据确定子单元,用于获取所述当前操作行中包含的绝对值最大的第一矩阵元素,并将所述第一矩阵元素的绝对值作为第一参考数据;

第一矩阵元素更新子单元,用于分别使用所述当前操作行中的各矩阵元素除以所述第一参考数据后乘以字符量级权重的结果,更新对应的矩阵元素;

第一修正子单元,用于如果在所述当前操作行的更新结果中,目标矩阵元素超过所述字符型数据的取值范围,则将所述目标矩阵元素修正为所述字符型数据取值范围内与所述目标矩阵元素最接近的边界值;

遍历执行子单元,用于返回执行获取所述权重矩阵中的一行作为当前操作行的操作,直至完成对所述权重矩阵中全部行的处理。

在本实施例另一种可选的实施方式中,权重矩阵数据类型转换单元,具体可以包括第二参考数据获取子单元、第二矩阵元素更新子单元和第二修正子单元。其中,

第二参考数据获取子单元,用于遍历所述权重矩阵,获取所述权重矩阵中包含的绝对值最大的第二矩阵元素,并将所述第二矩阵元素的绝对值作为第二参考数据;

第二矩阵元素更新子单元,用于所述权重矩阵中的各矩阵元素除以所述第二参考数据后乘以字符量级权重的结果,更新对应的矩阵元素;

第二修正子单元,用于如果在所述权重矩阵的更新结果中,目标矩阵元素超过所述字符型数据的取值范围,则将所述目标矩阵元素修正为所述字符型数据取值范围内与所述目标矩阵元素最接近的边界值。

在上述各实施例的基础上,所述层参数还包括:偏置向量。

压缩模块220,具体还包括偏置向量获取单元和偏置向量数据类型转换单元。其中,

偏置向量获取单元用于获取所述待压缩dnn模型中各层的偏置向量;

偏置向量数据类型转换单元,用于将各所述偏置向量中的各向量元素由浮点型数据转换为整型数据。

在本实施例一种可选的实施方式中,偏置向量数据类型转换单元,具体可以包括偏置向量更新子单元和修正子单元。其中,

偏置向量更新子单元,用于使用所述偏置向量中的各向量元素分别除以权重矩阵中各对应行的第一参考数据后乘以整型量级权重的结果,更新对应的偏置向量;

修正子单元,用于如果在所述偏置向量的更新结果中,目标向量元素超过所述整型数据的取值范围,则将所述目标向量元素修正为所述整型数据取值范围内与所述目标向量元素最接近的边界值。

具体的,上述深度神经网络dnn模型的压缩装置还包括:输入数据定点化模块和输出结果反定点化模块。其中,

输入数据定点化模块,用于将输入数据进行定点化处理,并将定点化处理后的定点输入数据输入至所述dnn模型中;

输出结果反定点化模块,用于根据所述dnn模型针对所述定点输入数据输出的定点化输出结果,以及与所述dnn模型匹配的反定点化计算公式,将所述定点化输出结果转化为浮点化输出结果。

具体的,字符量级权重为128,整型量级权重为32768。

上述深度神经网络dnn模型的压缩装置可执行本发明任意实施例所提供的深度神经网络dnn模型的压缩方法,具备执行深度神经网络dnn模型的压缩方法相应的功能模块和有益效果。

实施例三

如图3所示,为本发明实施例三提供的一种计算机设备的硬件结构示意图,如图3所示,该计算机设备包括:

一个或多个处理器310,图3中以一个处理器310为例;

存储器320;

所述计算机设备还可以包括:输入装置330和输出装置340。

所述计算机设备中的处理器310、存储器320、输入装置330和输出装置340可以通过总线或者其他方式连接,图3中以通过总线连接为例。

存储器320作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种数据挖掘方法对应的程序指令/模块(例如,附图2所示的获取模块210和压缩模块220)。处理器310通过运行存储在存储器320中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例中的一种深度神经网络dnn模型的压缩方法。

存储器320可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器320可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器320可选包括相对于处理器310远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置330可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置340可包括显示屏等显示设备。

实施例四

本实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种深度神经网络dnn模型的压缩方法,该方法包括:

获取待压缩dnn模型,其中,所述待压缩dnn模型包括:输入层、至少一个隐藏层以及输出层,所述待压缩dnn模型中各层的层参数为浮点型数据;

对所述待压缩dnn模型中各层的层参数进行定点化处理,以实现对所述dnn模型的压缩。

可选的,该计算机可执行指令在由计算机处理器执行时还可以用于执行本发明任意实施例所提供的一种深度神经网络dnn模型的压缩方法的技术方案。

通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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