一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种压缩和解压缩神经网络模型的方法及设备与流程

2022-02-24 13:43:24 来源:中国专利 TAG:


1.本技术实施例涉及人工智能技术领域,尤其涉及一种压缩和解压缩神经网络模型的方法及设备。


背景技术:

2.随着科学技术的进步与发展,人工智能的影响越来越大。近些年来,伴随着相关技术的进步,人工智能技术也迈进了快速发展的阶段。相比于其他人工智能技术,神经网络方法的精度更高,但也存在不足。例如,神经网络模型的结构较复杂,神经网络模型的参数较多,导致神经网络模型需要占用大量的存储资源。
3.因此,需要一种压缩神经网络模型的方法,以降低神经网络模型对存储资源的占用。


技术实现要素:

4.本技术实施例提供了一种压缩和解压缩神经网络模型的方法及设备,用于降低神经网络模型对存储资源的占用。
5.本技术实施例第一方面提供了一种压缩神经网络模型的方法,可以应用于训练神经网络模型的服务器或终端设备中,包括:
6.获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数,神经网络模型的参数可以是神经元的权值,m的取值可以根据实际需要进行调整;根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应,目标压缩参数是指压缩过程中使用的参数,例如,该目标压缩参数可以为相对误差,也可以是绝对误差。
7.根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,能够在保证神经网络模型的性能不明显下降的情况下,提高压缩比,以提升压缩效果,减少神经网络模型对存储资源的占用。
8.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个待压缩数据集合中包含n层神经元中一层或多层神经元的参数的实际值。
9.在该实现方式下,压缩同一层神经元的参数的实际值所使用的目标压缩参数相同。
10.在一种实现方式下,m个待压缩数据集合包括第一待压缩数据集合;第一待压缩数据集合包含多层神经元的参数的实际值,且第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
11.由于位置相近的参数的改变对神经网络模型的影响程度相近,所以将位置连续的多层神经元的参数的实际值组成一个待压缩数据集合,从而实现采用同一目标压缩参数对位置连续的多层神经元的参数的实际值进行压缩。
12.在一种实现方式下,m个待压缩数据集合包括第二待压缩数据集合,第二待压缩数据集合与m个不同的目标压缩参数中的第一目标压缩参数对应;根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合包括:根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值,x组参数的压缩值与x层神经元一一对应,且构成一个压缩数据集合,x为小于n的正整数。
13.在该实现方式下,每压缩一层神经元的参数的实际值,得到一组参数的压缩值。
14.在一种实现方式下,第一目标压缩参数用于表示相对误差,第一目标压缩参数的具体取值可以多个,例如可以为1%、3%、5%或7%;根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值包括:根据第一目标压缩参数计算目标层神经元的各个参数的绝对误差的对数,目标层神经元为x层神经元中的任意一层;根据目标层神经元的各个参数的实际值计算目标层神经元的各个参数的预测值;获取目标层神经元的各个参数的量化值,其中,参数的量化值等于目标差值与参数的绝对误差的对数的比值,目标差值等于参数的实际值的对数与参数的预测值的对数的差;对目标层神经元的各个参数的量化值的整数部分进行编码,以得到目标层神经元对应的一组参数的压缩值。例如,可以采用字典编码算法进行编码,其中,字典编码算法是指将在字典中出现过的字符串使用一个索引值代替,以此来达到压缩目的;在本技术实施例中,字典编码算法可以理解为使用一个索引值代替参数的量化值的整数部分。
15.在该实现方式下,将浮点形式的参数的实际值转换成整数形式的数值,并对整数形式的数值进行编码,实现对参数的实际值的有损压缩,降低了参数的实际值所占用的存储空间;此外,本技术实施例还对绝对误差、参数的实际值和参数的预测值进行了对数变换处理,降低了整数形式的数值的数量级,从而可以进一步降低参数的压缩值所占用的存储空间。
16.在一种实现方式下,在获取m个待压缩数据集合之后,在根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合之前,方法还包括:确定m个不同的目标压缩参数。
17.在一种实现方式下,确定m个不同的目标压缩参数包括:获取k组压缩参数,每组压缩参数中均包含m个不同的压缩参数,m个压缩参数与m个待压缩数据集合一一对应,k为大于1的整数;分别采用k组压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到k组压缩数据,k组压缩数据与k组压缩参数一一对应,且每组压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的压缩值;基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
18.先采用k组压缩参数分别对m个待压缩数据集合中各参数的实际值进行压缩,然后根据得到的k组压缩数据选择压缩效果最优的一组压缩参数,并将压缩效果最优的一组压缩参数中的m个压缩参数作为m个目标压缩参数,从而可以保证根据m个目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩的压缩效果较好,以尽可能地降低神经网络模型的存储开销。
19.在一种实现方式下,基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数包括:基于k组压缩数据计算k组压缩参数中每组压缩参数对应
的压缩比,其中,一组压缩参数对应的压缩比等于,压缩前m个待压缩数据集合中各参数的实际值所需的存储空间,与采用该组压缩参数进行压缩所得到的一组压缩数据所需的存储空间的比值;对k组压缩数据进行解压缩,得到k组解压缩数据,k组解压缩数与k组压缩数据一一对应,且每组解压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的解压缩值;基于k组解压缩数据计算k组压缩参数中每组压缩参数对应的神经网络模型的性能值,其中,神经网路网络模型的性能值可以包括准确率、精确率、召回率以及f1分数中的至少一种;基于k组压缩参数中每组压缩参数对应的压缩比,以及k组压缩参数中每组压缩参数对应的神经网络模型的性能值,计算k组压缩参数中每组压缩参数的评分;基于k组压缩参数中每组压缩参数的评分从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
20.根据每组压缩参数对应的压缩比和神经网络模型的性能值计算每组压缩参数的评分,然后根据评分选择一组压缩参数,并将选择出的一组压缩参数中的m个压缩参数作为m个目标压缩参数,这样,根据m个目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,既能保证较好的神经网络模型的性能,又能保证较高的压缩比,从而可以减少神经网络模型对存储资源的占用。
21.在一种实现方式下,基于k组压缩参数中每组压缩参数对应的压缩比,以及k组压缩参数中每组压缩参数对应的神经网络模型的性能值,计算k组压缩参数中每组压缩参数的评分包括:获取压缩比与第一权重的第一乘积,并获取性能值与第二权重的第二乘积,然后将第一乘积与第二乘积的和作为压缩参数的评分,其中第一权重和第二权重的和可以为1。
22.该实现方式提供了计算k组压缩参数中每组压缩参数的评分的一种可行方案。
23.在一种实现方式下,获取k组压缩参数包括:分别采用y个压缩参数对神经网络模型中各参数的实际值进行压缩,得到y组参数的压缩值,y组参数的压缩值与y个压缩参数一一对应,且y组参数的压缩值中的每组参数的压缩值都包含神经网络模型中各参数的压缩值;基于y组参数的压缩值从y个压缩参数选择一个压缩参数作为最优压缩参数,具体地,也可以计算每个压缩参数的评分,根据每个压缩参数的评分从y个压缩参数选择最优压缩参数;根据最优压缩参数和y个压缩参数确定k组压缩参数。
24.采用y个压缩参数分别对神经网络模型中的所有参数进行压缩,得到y组参数的压缩值,然后根据y组参数的压缩值从y个压缩参数选择最优压缩参数,最终根据最优压缩参数确定k组压缩参数,使得确定出的k组压缩参数均能具有较好的压缩效果,进而使得根据k组压缩参数确定出的m个目标压缩参数具有较好的压缩效果。
25.在一种实现方式下,m个待压缩数据集合包括第三待压缩数据集合和第四待压缩数据集合;神经网络模型由n层神经元构成,n层神经元包括输入层神经元和输出层神经元,n为大于1的整数;第三待压缩数据集合中包含输入层神经元的参数的实际值;第四待压缩数据集合中包含输出层神经元的参数的实际值;在k组压缩参数的任意一组压缩参数中,第三待压缩数据集合对应的压缩参数都为最优压缩参数或y个压缩参数中小于最优压缩参数的一个压缩参数,第四待压缩数据集合对应的压缩参数都为y个压缩参数中大于最优压缩参数的一个压缩参数。
26.包含输入层神经元的参数的实际值的第三待压缩数据集合对应的压缩参数较小,
包含输出层神经元的参数的实际值的第四待压缩数据集合对应的压缩参数较大,能够在保证神经网路模型具有较好性能的前提下,尽可能地提高压缩比,从而可以降低神经网络模型对存储空间的占用。
27.本技术实施例第二方面提供了一种解压缩神经网络模型的方法,可以应用于运行神经网络模型的设备,包括:获取m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值;根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合,m个不同的解压缩参数与m个压缩数据集合一一对应,每个解压缩数据集合中包含神经网络模型的至少一个参数的解压缩值。其中,m个不同的解压缩参数是指压缩过程中的m个不同的目标压缩参数。
28.根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,能够在保证神经网络模型的性能不明显下降的情况下,提高压缩比,以提升压缩效果,减少神经网络模型对存储资源的占用。
29.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个压缩数据集合中包含n层神经元中一层或多层神经元的参数的压缩值。
30.在该实现方式下,解压缩同一层神经元的参数的实际值所使用的解压缩参数相同。
31.在一种实现方式下,m个压缩数据集合包括第一压缩数据集合;第一压缩数据集合包含多层神经元的参数的压缩值,且第一压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
32.由于位置相近的参数的改变对神经网络模型的影响程度相近,所以压缩数据集合中的多层神经元的位置是连续的,从而实现采用同一解压缩参数对位置连续的多层神经元的参数的压缩值进行解压缩。
33.在一种实现方式下,m个压缩数据集合包括第二压缩数据集合,第二压缩数据集合与m个不同的解压缩参数中的第一解压缩参数对应;根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合包括:根据第一解压缩参数对第二压缩数据集合包含的x层神经元的参数的压缩值进行层层解压缩,以得到x组参数的解压缩值,x组参数的解压缩值与x层神经元一一对应,且构成一个解压缩数据集合,x为小于n的正整数。
34.在该实现方式下,每解压缩一层神经元的参数的压缩值,便得到一组参数的解压缩值。
35.在一种实现方式下,根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合包括:根据第二解压缩参数对第一层神经元中各参数的压缩值进行解压缩,得到与第一层神经元中各参数的压缩值对应的参数的解压缩值,第二解压缩参数为m个不同的解压缩参数中的一个,第一层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合;在运行第一层神经元后,根据第三解压缩参数对第二层神经元中各参数的压缩值进行解压缩,得到与第二层神经元中各参数的压缩值对应的参数的解压缩值,第三解压缩参数为m个不同的解压缩参数中的一个,第二层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合,在神经网络模型中,第二层神经元与第一层神经元相邻且位于第一层神经元后;在运行第二层神经
元后,重复执行上述步骤,直到得到m个解压缩数据集合。
36.在内存中每次只解压缩一层神经元的参数的压缩值,因此可以减少神经网络模型运行时的内存资源开销。
37.本技术实施例第三方面提供了一种压缩神经网络模型的装置,包括:
38.获取单元,用于获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数;
39.压缩单元,用于根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应。
40.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个待压缩数据集合中包含n层神经元中一层或多层神经元的参数的实际值。
41.在一种实现方式下,m个待压缩数据集合包括第一待压缩数据集合;第一待压缩数据集合包含多层神经元的参数的实际值,且第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
42.在一种实现方式下,m个待压缩数据集合包括第二待压缩数据集合,第二待压缩数据集合与m个不同的目标压缩参数中的第一目标压缩参数对应。
43.压缩单元,用于根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值,x组参数的压缩值与x层神经元一一对应,且构成一个压缩数据集合,x为小于n的正整数。
44.在一种实现方式下,第一目标压缩参数用于表示相对误差。
45.压缩单元,用于根据第一目标压缩参数计算目标层神经元的各个参数的绝对误差的对数,目标层神经元为x层神经元中的任意一层;根据目标层神经元的各个参数的实际值计算目标层神经元的各个参数的预测值;获取目标层神经元的各个参数的量化值,其中,参数的量化值等于目标差值与参数的绝对误差的对数的比值,目标差值等于参数的实际值的对数与参数的预测值的对数的差;对目标层神经元的各个参数的量化值的整数部分进行编码,以得到目标层神经元对应的一组参数的压缩值。
46.在一种实现方式下,压缩神经网络模型的装置还包括确定单元,用于确定m个不同的目标压缩参数。
47.在一种实现方式下,确定单元,用于获取k组压缩参数,每组压缩参数中均包含m个不同的压缩参数,m个压缩参数与m个待压缩数据集合一一对应,k为大于1的整数;分别采用k组压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到k组压缩数据,k组压缩数据与k组压缩参数一一对应,且每组压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的压缩值;基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
48.在一种实现方式下,确定单元,用于基于k组压缩数据计算k组压缩参数中每组压缩参数对应的压缩比;对k组压缩数据进行解压缩,得到k组解压缩数据,k组解压缩数与k组压缩数据一一对应,且每组解压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的解压缩值;基于k组解压缩数据计算k组压缩参数中每组压缩参数对应的神经网络模型的性能值;基于k组压缩参数中每组压缩参数对应的压缩比,以及k组压缩参数中每
组压缩参数对应的神经网络模型的性能值,计算k组压缩参数中每组压缩参数的评分;基于k组压缩参数中每组压缩参数的评分从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
49.在一种实现方式下,确定单元,用于分别采用y个压缩参数对神经网络模型中各参数的实际值进行压缩,得到y组参数的压缩值,y组参数的压缩值与y个压缩参数一一对应,且y组参数的压缩值中的每组参数的压缩值都包含神经网络模型中各参数的压缩值;基于y组参数的压缩值从y个压缩参数选择一个压缩参数作为最优压缩参数;根据最优压缩参数和y个压缩参数确定k组压缩参数。
50.在一种实现方式下,m个待压缩数据集合包括第三待压缩数据集合和第四待压缩数据集合;神经网络模型由n层神经元构成,n层神经元包括输入层神经元和输出层神经元,n为大于1的整数;第三待压缩数据集合中包含输入层神经元的参数的实际值;第四待压缩数据集合中包含输出层神经元的参数的实际值;在k组压缩参数的任意一组压缩参数中,第三待压缩数据集合对应的压缩参数都为最优压缩参数或y个压缩参数中小于最优压缩参数的一个压缩参数,第四待压缩数据集合对应的压缩参数都为y个压缩参数中大于最优压缩参数的一个压缩参数。
51.其中,以上各单元的具体实现、相关说明以及技术效果请参考本技术实施例第一方面的描述。
52.本技术实施例第四方面提供了一种解压缩神经网络模型的装置,包括:
53.获取单元,用于获取m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值;
54.解压缩单元,用于根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合,m个不同的解压缩参数与m个压缩数据集合一一对应,每个解压缩数据集合中包含神经网络模型的至少一个参数的解压缩值。
55.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个压缩数据集合中包含n层神经元中一层或多层神经元的参数的压缩值。
56.在一种实现方式下,m个压缩数据集合包括第一压缩数据集合;第一压缩数据集合包含多层神经元的参数的压缩值,且第一压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
57.在一种实现方式下,m个压缩数据集合包括第二压缩数据集合,第二压缩数据集合与m个不同的解压缩参数中的第一解压缩参数对应。
58.解压缩单元,用于根据第一解压缩参数对第二压缩数据集合包含的x层神经元的参数的压缩值进行层层解压缩,以得到x组参数的解压缩值,x组参数的解压缩值与x层神经元一一对应,且构成一个解压缩数据集合,x为小于n的正整数。
59.在一种实现方式下,解压缩单元,用于根据第二解压缩参数对第一层神经元中各参数的压缩值进行解压缩,得到与第一层神经元中各参数的压缩值对应的参数的解压缩值,第二解压缩参数为m个不同的解压缩参数中的一个,第一层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合;在运行第一层神经元后,根据第三解压缩参数对第二层神经元中各参数的压缩值进行解压缩,得到与第二层神经元中各参数的压缩值对应的参数的解压缩值,第三解压缩参数为m个不同的解压缩参数中的一个,第二层
神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合,在神经网络模型中,第二层神经元与第一层神经元相邻且位于第一层神经元后;在运行第二层神经元后,重复执行上述步骤,直到得到m个解压缩数据集合。
60.其中,以上各单元的具体实现、相关说明以及技术效果请参考本技术实施例第二方面的描述。
61.本技术实施例第五方面提供了一种计算机设备,包括:至少一个处理器和存储器,存储器存储有可在处理器上运行的计算机执行指令,当所述计算机执行指令被所述处理器执行时,所述处理器执行如上述第一方面中任意一种实施方式所述的压缩神经网络模型的方法,或如上述第二方面中任意一种实施方式所述的解压缩神经网络模型的方法。
62.本技术实施例第六方面提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行如上述第一方面中任意一种实施方式所述的压缩神经网络模型的方法。
63.本技术实施例第七方面提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行如上述第二方面中任意一种实施方式所述的解压缩神经网络模型的方法。
64.本技术实施例第八方面提供了一种存储一个或多个计算机执行指令的计算机可读存储介质,当所述计算机执行指令被处理器执行时,所述处理器执行如上述第一方面中任意一种实施方式所述的压缩神经网络模型的方法,或如上述第二方面中任意一种实施方式所述的解压缩神经网络模型的方法。
65.本技术实施例第九方面提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现上述第一方面中任意一种实施方式所述的压缩神经网络模型的方法,或如上述第二方面中任意一种实施方式所述的解压缩神经网络模型的方法。
66.从以上技术方案可以看出,本技术实施例具有以下优点:
67.获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数;根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应;由于同一压缩参数对神经网络模型中的不同参数的影响是不同的,所以本技术实施例根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,可以实现为每个待压缩数据集合选择合适的压缩参数,从而提高压缩效果。
附图说明
68.图1(a)为本技术实施例的方法的应用场景示意图;
69.图1(b)为本技术实施例中计算机设备的架构示意图;
70.图2为本技术实施例中神经网络模型的结构示意图;
71.图3为本技术实施例中压缩神经网络模型的方法的实施例示意图;
72.图4为本技术实施例中压缩x层神经元的参数的实际值的实施例示意图;
73.图5为本技术实施例中压缩目标层神经元的参数的实际值的实施例示意图;
74.图6为本技术实施例中确定m个不同的目标压缩参数的实施例示意图;
75.图7为本技术实施例中从k组压缩参数中选择一组压缩参数的实施例示意图;
76.图8为本技术实施例中获取k组压缩参数的实施例示意图;
77.图9为本技术实施例中压缩神经网络模型的过程的示意图;
78.图10为本技术实施例中解压缩神经网络模型的方法的实施例示意图;
79.图11为本技术实施例中局部解压缩的示意图;
80.图12为本技术实施例中压缩神经网络模型的装置的结构示意图;
81.图13为本技术实施例中解压缩神经网络模型的装置的结构示意图;
82.图14为本技术实施例中计算机设备的结构示意图。
具体实施方式
83.本技术实施例提供了一种压缩和解压缩神经网络模型的方法及设备,用于降低神经网络模型对存储资源的占用。
84.本技术实施例可以应用于存储空间有限的计算机设备。其中,该计算机设备可以为车载终端、对话机器人以及一些便携式的终端设备。
85.以车载终端为例,如图1(a)所示,在自动驾驶场景或辅助泊车场景下,通过摄像头等传感器采集车周围的路况等环境数据,然后通过驾驶控制器(车载终端的一种)运行神经网络模型对该环境数据进行处理,以实现自动驾驶或辅助泊车。神经网络模型由于结构复杂且参数较多,所以会占用较多的存储资源,又因为车载终端的存储空间有限,所以神经网络模型通常以压缩文件的形式保存在车载终端内。神经网络模型可以用于处理车载传感器采集的图像、音频等数据。
86.例如,如图1(a)所示,在云端服务器上对神经网络模型进行训练,在神经网络模型训练完成后,云端服务器将神经网络模型压缩成压缩文件,然后将压缩文件发送至车载终端,车载终端接收并存储该压缩文件。当车载终端需要处理环境数据时,车载终端解压缩该压缩文件得到神经网络模型并运行神经网络模型。
87.如图1(b)所示,计算机设备通常包括处理模块、内部存储器(简称内存)以及外部存储器。其中,外部存储器可以包括软盘存储器、硬盘存储器和光盘存储器等。
88.在压缩神经网络模型的过程中,计算机设备(例如服务器)将内存中的神经网络模型压缩成压缩文件,然后存储至外部存储器中。
89.在解压缩神经网络模型的过程中,计算机设备(例如车载终端)将神经网络模型的压缩文件从外部存储器中读取到内存中,然后解压缩该压缩文件得到神经网络模型并运行神经网络模型。
90.本技术实施例对神经网络模型的种类不做具体限定。例如,神经网络模型的种类可以包括前馈式神经网络模型和后馈式神经网络模型;前馈式神经网络模型具体可以包括卷积神经网络模型、自适应线性神经网络模型(adaptivelinear,adaline)、单层感知器模型、多层感知器模型、bp(back propagation)神经网络模型和径向基函数(rbf-radial basis function)神经网络模型等。后馈式神经网络模型可以包括双向联想记忆网络(bam)
模型和hopfield神经网络等。
91.神经网络模型包含多层神经元,每层神经元中包含一个或多个神经元。以前馈式神经网络模型为例,前馈式神经网络模型可以仅包括输入层和输出层;如图2所示,前馈式神经网络模型也可以包括输入层、输出层以及位于输入层和输出层之间的一层或多层隐藏层。在图2所示的前馈式神经网络模型中,隐藏层的数量为三层。
92.需要说明的是,在本技术实施例中,压缩神经网络模型主要是指对神经网络模型的参数进行压缩。神经网络模型的参数主要是指各个神经元的权值。
93.对神经网络模型的参数进行压缩的过程主要是指:通过某种方法将神经网络模型的参数的实际值转换成其他数值(该其他数值可以简称为参数的压缩值),然后存储参数的压缩值而不存储参数的实际值。通常情况下,参数的压缩值比参数的实际值占用的存储空间小,所以实现了对神经网络模型的参数的压缩,可以节省存储空间。对于包含大量参数的神经网络模型来说,压缩神经网络模型的参数可以节省较大的存储空间。
94.为了进一步降低神经网络模型对存储资源的占用,通常采用有损压缩方法对神经网络模型进行压缩。有损压缩方法是指根据参数的压缩值进行解压缩得到的参数的解压缩值只是与参数的实际值相近,并不等于压缩前的参数的实际值。所以根据参数的解压缩值运行神经网络模型相比于根据参数的实际值运行神经网络模型,会使得神经网络模型的性能有所下降。
95.目前的有损压缩方法主要是采用相同的压缩参数对神经网络模型的所有参数进行压缩,但由于神经网络模型中不同参数的改变对神经网络模型性能的影响程度不同,所以采用相同的压缩参数对所有参数进行压缩的压缩效果并不理想。为此,本技术实施例采用不同的压缩参数对神经网络模型的参数分别进行压缩,以提升压缩效果。
96.为了便于理解,下面对本技术实施例提供的压缩神经网络模型的方法进行介绍。具体地,请参阅图3,本技术实施例中压缩神经网络模型的方法的实施例示意图。如图3所示,本技术实施例提供了一种压缩神经网络模型的方法的一个实施例,该方法可以应用于训练神经网络模型的服务器或终端设备中。服务器或终端设备在训练完神经网络模型后,采用该方法压缩神经网络模型。该方法具体包括:
97.步骤101,获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数。
98.其中,m的大小可以根据实际需要进行调整。例如,若神经网络模型的参数的数量较多,则m可以取值较大,例如m可以取4,也可以取5;若神经网络模型的参数的数量不是很多,则m可以取值较小,例如m可以取2,也可以取3;通常情况下,m取3。此外,m的大小也可以根据神经网络模型中神经元的层数进行调整,具体不做详述。
99.需要说明的是,获取m个待压缩数据集合的方法有多种。
100.作为一种可实现的方式,可以将神经网络模型的所有参数的实际值随意组合,得到m个待压缩数据集合。这种情况下,m个待压缩数据集合中的任意一个待压缩数据集合,可以包含位于同一神经元层的多个参数的实际值,也可以包含位于不同神经元层的多个参数的实际值。例如,一个待压缩数据集合可以包含位于输入层的多个参数的实际值,也可以同时包含位于输入层的参数的实际值和位于隐藏层的参数的实际值。
101.除此之外,还可以按照一定规则将神经网络模型的所有参数的实际值组合,得到m
个待压缩数据集合。
102.作为一种可实现的方式,可以参数所属的神经元层将神经网络模型的所有参数的实际值组合。例如,可以将同一层神经元的参数的实际值加入一个待压缩数据集合。
103.此时,假设神经网络模型由n层神经元构成,n为大于1的整数则;每个待压缩数据集合中可以包含n层神经元中一层或多层神经元的参数的实际值。
104.此时,压缩同一层神经元的参数的实际值所使用的目标压缩参数相同。
105.对于任意两个待压缩数据集合来说,可以包含相同数量层的神经元的参数的实际值,也可以包含不同数量层的神经元的参数的实际值。例如,一个待压缩数据集合包含一层神经元的参数的实际值,一个待压缩数据集合包含两层神经元的参数的实际值,另一个待压缩数据集合包含三层神经元的参数的实际值。
106.当待压缩数据集合中包含多层神经元的参数的实际值时,待压缩数据集合中的多层神经元在神经网络模型中的位置情况可以有多种。下面对此进行具体介绍。
107.具体地,m个待压缩数据集合包括第一待压缩数据集合,第一待压缩数据集合包含多层神经元的参数的实际值。
108.第一种情况:第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是间隔的,也可以理解为第一待压缩数据集合包含的多层神经元中的任意两层神经元均不相邻。例如,以图2所示的神经网络模型为例,该神经网络模型包括5层神经元,这5层神经元从神经网络模型的输入端到输出端依次为aa层神经元、bb层神经元、cc层神经元、dd层神经元和ee层神经元。第一待压缩数据集合包含aa层神经元、cc层神经元和ee层神经元的参数的实际值,根据图2可以看出,aa层神经元、cc层神经元和ee层神经元在神经网络模型中是相间分布的。
109.第二种情况:第一待压缩数据集合包含的多层神经元在神经网络模型中的位置既包括间隔的,又包括相邻的。例如,第一待压缩数据集合可以包含aa层神经元、bb层神经元和ee层神经元的参数的实际值,根据图2可以看出,aa层神经元和bb层神经元的位置是相邻的,而bb层神经元和ee层神经元的位置是间隔的。
110.第三种情况:第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。例如,第一待压缩数据集合包含aa层神经元和bb层神经元的参数的实际值,根据图2可以看出,aa层神经元和bb层是相邻的;第一待压缩数据集合可以包含cc层神经元、dd层神经元和ee层神经元的参数的实际值,根据图2可以看出,cc层神经元、dd层神经元和ee层神经元的位置是连续的。
111.为了保证第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的,可以将神经网络模型分为m块,每块包含一层或位置连续的多层神经元,每块包含的神经元的参数的实际值构成一个待压缩数据集合。以图2为例,本技术实施例将图2所示的神经网络模型分为3块,第一块包含aa层神经元和bb层神经元,第二块包含cc层神经元和dd层神经元,第三块包含ee层神经元。根据图2可以看出,第一块和第二块中神经元层均是连续的。
112.可以理解的是,位置相近的参数的改变对神经网络模型的影响程度相近,所以在本技术实施例中,位置连续的多层神经元的参数的实际值组成一个待压缩数据集合,从而实现采用同一目标压缩参数对位置连续的多层神经元的参数的实际值进行压缩。
113.步骤102,确定m个不同的目标压缩参数。
114.其中,m个不同的目标压缩参数分别用于对m个待压缩数据集合中各参数的实际值进行压缩。
115.需要说明的是,确定m个不同的目标压缩参数的方法有多种,本技术实施例对此不做具体限定。例如,可以人工设定m个目标压缩参数,确定m个不同的目标压缩参数则包括:获取用户的设置操作,根据该设置操作确定m个不同的目标压缩参数。除此之外,下文将对确定m个不同的目标压缩参数的方法进行具体介绍。
116.在本技术实施例中,步骤102是可选的。
117.步骤103,根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应。
118.其中,目标压缩参数是指压缩过程中使用的参数,例如,该目标压缩参数可以为相对误差,也可以是绝对误差。
119.例如,m取3;则根据3个不同的目标压缩参数对3个待压缩数据集合中各参数的实际值进行压缩,每个目标压缩参数用于对一个待压缩数据集合中各参数的实际值进行压缩。对应每个待压缩数据集合,可以得到一个压缩数据集合,最终会得到3个压缩数据集合。
120.需要说明的是,根据m个不同的目标压缩参数,可以采用多种方法对m个待压缩数据集合中各参数的实际值进行压缩。其中,对m个待压缩数据集合中各参数的实际值进行压缩的方法可以与待压缩数据集合中参数的组成相关。
121.在一种实现方式中,m个待压缩数据集合包括第二待压缩数据集合,第二待压缩数据集合与m个不同的目标压缩参数中的第一目标压缩参数对应。
122.其中,第二待压缩数据集合中包含n层神经元中一层或多层神经元的参数的实际值。
123.基于此,根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合包括:
124.根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值,x组参数的压缩值与x层神经元一一对应,且构成一个压缩数据集合,x为小于n的正整数。
125.对x层神经元的参数的实际值进行层层压缩可以理解为,以神经元层为粒度对x层神经元的参数的实际值进行压缩;具体地,当x大于1时,压缩一层神经元的参数的实际值,得到一组参数的压缩值;压缩另一层神经元的参数的实际值,得到另一组参数的压缩值,最终可以得到x组参数的压缩值。
126.需要说明的是,压缩参数的实际值的具体方法可以有多种,本技术实施例对此不做具体限定。后文将介绍压缩参数的实际值的其中一种方法。
127.下面以一示例对本技术实施例提供的压缩神经网络的方法进行说明。神经网络模型的参数包括参数a和参数b。例如,参数a的改变对神经网络模型性能的影响程度较大,参数b的改变对神经网络模型性能的影响程度较小;本技术实施例采用不同的压缩参数对参数a的实际值a和参数b的实际值b分别进行压缩,得到压缩值aa和压缩值bb。不同的压缩参数使得压缩值bb占用的存储空间比压缩值aa占用的空间小,但根据压缩值aa解压缩得到值
与实际值a相差较少,根据压缩值bb解压缩得到值与实际值b相差较大。
128.在实际值a和实际值b占用空间相同的情况下,压缩参数b相比于压缩参数a,获得了更大的压缩比,从而进一步提升了压缩效果,降低了神经网络模型对存储空间的占用。虽然压缩值bb解压缩得到值与实际值b相差较大,但由于参数b的改变对神经网络模型性能的影响程度较小,所以对参数b的压缩并不会导致神经网络模型的性能出现明显下降。
129.因此,在本技术实施例中,根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,能够在保证神经网络模型的性能不明显下降的情况下,提高压缩比,以提升压缩效果,减少神经网络模型对存储资源的占用。
130.基于前述说明可知,可以采用多种方法对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,下面介绍其中一种方法。
131.作为一种可实现的方式,第一目标压缩参数用于表示相对误差,该相对误差可以理解为用户允许的相对误差。由于相对误差通常用百分比表示,所以第一目标压缩参数的形式可以为百分比。为了便于理解,下面通过一具体示例对相对误差和绝对误差进行说明。例如,参数的实际值为100,解压缩得到的参数的解压缩值为95,若使用相对误差表示,则此时的相对误差为5%;若使用绝对误差表示,则此时的绝对误差为5。
132.基于第一目标压缩参数用于表示相对误差,如图4所示,根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值包括:
133.步骤201,根据第一目标压缩参数计算目标层神经元的各个参数的绝对误差的对数,目标层神经元为x层神经元中的任意一层。
134.基于前述说明可知,根据参数的相对误差可以计算参数的绝对误差。例如,第一目标压缩参数为d,对于目标层神经元的一个参数x来说,绝对误差的范围为x(1-d)至x(1 d),绝对误差则为2dx。
135.可以理解的是,在神经网络模型中,参数的实际值通常为浮点数的形式,且参数的实际值的数量级通常较高。为此,本技术实施例对各个参数的绝对误差进行对数变换处理,得到各个参数的绝对误差的对数,从而降低了绝对误差的数量级。例如,绝对误差为2dx,则绝对误差的对数可以表示为log2dx。
136.本技术实施例对第一目标压缩参数的取值不做具体限定,例如可以为1%、3%、5%或7%。
137.步骤202,根据目标层神经元的各个参数的实际值计算目标层神经元的各个参数的预测值。
138.需要说明的是,计算目标层神经元的参数的预测值的方法有多种,本技术实施例对此不做具体限定。
139.例如,在本技术实施例中,可以将目标层神经元的各个参数按照一定顺序排列,目标层神经元中每个参数的预测值等于前一个参数的实际值。例如,目标层神经元包含三个参数,且这三个参数的实际值分别用x、y、z,则参数的实际值y对应的参数的预测值为x,参数的实际值z对应的参数的预测值为y,而参数的实际值x对应的参数的预测值可以预先设定。
140.步骤203,获取目标层神经元的各个参数的量化值,其中,参数的量化值等于目标
差值与参数的绝对误差的对数的比值,目标差值等于参数的实际值的对数与参数的预测值的对数的差。
141.例如,参数的实际值为y,参数的实际值y对应的参数的预测值为x,所以目标差值等于logy-logx;基于前述的绝对误差的相关说明可知,参数的实际y的绝对误差的对数可以表示为log2dy,则参数的实际值y对应的参数的量化值为(logy-logx)/log2dy。
142.步骤204,对目标层神经元的各个参数的量化值的整数部分进行编码,以得到目标层神经元对应的一组参数的压缩值。
143.需要说明的是,对参数的量化值的整数部分进行编码的方法有多种,本技术实施例对此不做具体限定。例如,可以利用目前的无损压缩方法中的编码方法对参数的量化值的整数部分进行编码,具体可以采用字典编码算法对参数的量化值的整数部分进行编码。
144.其中,字典编码算法是指将在字典中出现过的字符串使用一个索引值代替,以此来达到压缩目的;在本技术实施例中,字典编码算法可以理解为使用一个索引值代替参数的量化值的整数部分。
145.由于目标层神经元为x层神经元中的任意一层,所以执行步骤201至步骤204,以通过相同的压缩方法对x层神经元中的其他层神经元进行压缩。
146.基于上述说明,如图5所示,本技术实施例对目标层神经元的参数的实际值进行压缩的过程可以概括为:先输入目标层神经元的参数的实际值,然后对目标层神经元的参数的实际值进行对数变换处理,并计算参数的绝对误差的对数;此后,对目标层神经元的参数进行预测,得到参数的预测值;再根据参数的绝对误差的对数对目标层神经元的参数进行量化编码,即计算各个参数的量化值;最后对各参数的量化值的整数部分进行无损压缩(例如采用字典编码算法进行编码),得到目标层神经元的参数的压缩值并输出。
147.在本技术实施例中,将浮点形式的参数的实际值转换成整数形式的数值,并对整数形式的数值进行编码,实现对参数的实际值的有损压缩,降低了参数的实际值所占用的存储空间;此外,本技术实施例还对绝对误差、参数的实际值和参数的预测值进行了对数变换处理,降低了整数形式的数值的数量级,从而可以进一步降低参数的压缩值所占用的存储空间。
148.基于前述说明可知,确定m个不同的目标压缩参数的方法可以有多种。下面对确定m个不同的目标压缩参数的方法进行具体介绍。
149.作为一种可实现的方式,如图6所示,确定m个不同的目标压缩参数包括:
150.步骤301,获取k组压缩参数,每组压缩参数中均包含m个不同的压缩参数,m个压缩参数与m个待压缩数据集合一一对应,k为大于1的整数。
151.需要说明的是,获取k组压缩参数的方法有多种。例如,可以人工输入k组压缩参数,则获取k组压缩参数包括:获取用户输入的k组压缩参数。
152.此外,也可以通过特定的方法自动生成k组压缩参数。后文将结合图7对自动生成k组压缩参数的方法进行介绍。
153.步骤302,分别采用k组压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到k组压缩数据,k组压缩数据与k组压缩参数一一对应,且每组压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的压缩值。
154.每组压缩参数都包含m个压缩参数,m个压缩参数分别用于对m个待压缩数据集合
中各参数的实际值进行压缩。对应每组压缩参数,可以得到一组压缩数据。
155.需要说明的是,采用每组压缩参数对m个待压缩数据集合中各参数的实际值进行压缩的方法,可以与前述采用m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩的方法相同,即可以是本技术实施例提供的有损压缩方法。
156.具体地,k组压缩参数中的一组压缩参数包含第一压缩参数,在采用该第一压缩参数对第二待压缩数据集合中各参数的实际值进行压缩时,可以根据该第一压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,层层压缩的具体过程可参阅图4的相关说明进行具体理解。
157.步骤303,基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
158.根据k组压缩数据可以评估k组压缩参数中各组压缩参数的压缩效果,然后根据该压缩效果从k组压缩参数中选择压缩效果最优的一组压缩参数,并将压缩效果最优的一组压缩参数中的m个压缩参数作为m个目标压缩参数。
159.需要说明的是,基于k组压缩数据从k组压缩参数中选择一组压缩参数的方法有多种,后文将结合图7对基于k组压缩数据从k组压缩参数中选择一组压缩参数的方法进行具体介绍。
160.在本技术实施例中,先采用k组压缩参数分别对m个待压缩数据集合中各参数的实际值进行压缩,然后根据得到的k组压缩数据选择压缩效果最优的一组压缩参数,并将压缩效果最优的一组压缩参数中的m个压缩参数作为m个目标压缩参数,从而可以保证根据m个目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩的压缩效果较好,以尽可能地降低神经网络模型的存储开销。
161.下面结合图7,对基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数的过程进行具体说明。
162.如图7所示,基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数包括:
163.步骤401,基于k组压缩数据计算k组压缩参数中每组压缩参数对应的压缩比。
164.例如,一组压缩参数对应的压缩比等于,压缩前m个待压缩数据集合中各参数的实际值所需的存储空间,与采用该组压缩参数进行压缩所得到的一组压缩数据所需的存储空间的比值。
165.步骤402,对k组压缩数据进行解压缩,得到k组解压缩数据,k组解压缩数与k组压缩数据一一对应,且每组解压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的解压缩值。
166.可以理解的是,对k组压缩数据进行解压缩的过程是压缩过程的逆过程,故在此不做详述。
167.在步骤302中,若采用有损压缩方法对m个待压缩数据集合中各参数的实际值进行压缩,那么在得到的k组解压缩数据中的任意一组解压缩数据中,参数的解压缩值可能与压缩前该参数的实际值不等。
168.步骤403,基于k组解压缩数据计算k组压缩参数中每组压缩参数对应的神经网络模型的性能值。
169.基于前述说明可知,参数的解压缩值可能与压缩前该参数的实际值不等,因此对应每组解压缩数据,可以根据测试数据计算得到神经网络模型的性能值。
170.其中,神经网路网络模型的性能值可以包括准确率、精确率、召回率以及f1分数中的至少一种。
171.步骤404,基于k组压缩参数中每组压缩参数对应的压缩比,以及k组压缩参数中每组压缩参数对应的神经网络模型的性能值,计算k组压缩参数中每组压缩参数的评分。
172.可以理解的是,根据压缩比和性能值计算每组压缩参数的评分的方法有多种,本技术实施例对此不做具体限定。
173.例如,可以获取压缩比与第一权重的第一乘积,并获取性能值与第二权重的第二乘积,然后将第一乘积与第二乘积的和作为压缩参数的评分。具体地,每组压缩参数对应的压缩比采用g表示,每组压缩参数对应的神经网络模型的性能值采用h表示,第一权重采用j表示,第二权重采用k表示,则每组压缩参数的评分=gj hk,其中j与k的和为1。
174.步骤405,基于k组压缩参数中每组压缩参数的评分从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
175.需要说明的是,若采用第一乘积与第二乘积的和作为压缩参数的评分,则将选择评分最高的一组压缩参数中的m个压缩参数作为m个目标压缩参数。
176.在本技术实施例中,根据每组压缩参数对应的压缩比和神经网络模型的性能值计算每组压缩参数的评分,然后根据评分选择一组压缩参数,并将选择出的一组压缩参数中的m个压缩参数作为m个目标压缩参数,这样,根据m个目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,既能保证较好的神经网络模型的性能,又能保证较高的压缩比,从而可以减少神经网络模型对存储资源的占用。
177.下面结合图8对获取k组压缩参数的过程进行具体说明。具体地,请参阅图8,获取k组压缩参数包括:
178.步骤501,分别采用y个压缩参数对神经网络模型中各参数的实际值进行压缩,得到y组参数的压缩值,y组参数的压缩值与y个压缩参数一一对应,且y组参数的压缩值中的每组参数的压缩值都包含神经网络模型中各参数的压缩值。
179.需要说明的是,在步骤501中,采用同一压缩参数对神经网络模型中的参数的实际值进行压缩,对应y个压缩参数,可以得到y组参数的压缩值。
180.例如,y个压缩参数包括压缩参数r、压缩参数t和压缩参数s,采用压缩参数r对神经网络模型中各参数的实际值进行压缩得到一组参数的压缩值,采用压缩参数t对神经网络模型中各参数的实际值进行压缩得到一组参数的压缩值,采用压缩参数s对神经网络模型中各参数的实际值进行压缩得到另一组参数的压缩值。
181.步骤502,基于y组参数的压缩值从y个压缩参数选择一个压缩参数作为最优压缩参数。
182.需要说明的是,基于y组参数的压缩值从y个压缩参数选择最优压缩参数方法有多种。例如,与从k组压缩参数中选择一组压缩参数的方法类似,可以计算y个压缩参数中每个压缩参数对应的压缩比和神经网络模型的性能值,然后根据压缩比和神经网络模型的性能值计算y个压缩参数中每个压缩参数的评分,最终根据每个压缩参数的评分从y个压缩参数选择最优压缩参数。
183.其中,计算压缩比和神经网络模型的性能值可以参阅前述实施例中的相关描述进行理解。
184.步骤503,根据最优压缩参数和y个压缩参数确定k组压缩参数。
185.需要说明的是,根据最优压缩参数和y个压缩参数确定k组压缩参数的方法有多种,本技术实施例对此不做具体限定。
186.示例性地,可以根据最优压缩参数和y个压缩参数确定压缩参数的m个选择范围,每个选择范围包含y个压缩参数中的一个或多个;然后从m个选择范围中的每个选择范围中随机选择一个压缩参数,组成一组压缩参数,重复该操作,则可以得到k组压缩参数。
187.例如,y个压缩参数为1%、2%、3%、4%、5%、6%、7%、8%、9%和10%,最优压缩参数为7%,m为3。基于此,可以确定三个选择范围,一个选择范围包括1%、2%、3%、4%、5%、6%和7%,一个选择范围包括1%、2%、3%、4%、5%、6%、7%、8%、9%和10%,另一个选择范围包括8%、9%和10%。然后分别从这三个选择范围中各自选择一个压缩参数,组成一组压缩参数。重复该操作,最终可以确定k组压缩参数。
188.在本技术实施例中,采用y个压缩参数分别对神经网络模型中的所有参数进行压缩,得到y组参数的压缩值,然后根据y组参数的压缩值从y个压缩参数选择最优压缩参数,最终根据最优压缩参数确定k组压缩参数,使得确定出的k组压缩参数均能具有较好的压缩效果,进而使得根据k组压缩参数确定出的m个目标压缩参数具有较好的压缩效果。
189.基于前述说明可知,神经网络模型中不同的参数发生相同程度的改变,对神经网络模型的影响不同。具体地,发明人发现靠近神经网络模型输入端的神经元的参数的改变,对神经网络模型的性能影响较大。为此,当压缩靠近神经网络模型输入端的神经元的参数时,可以选择较小的目标压缩参数(表示相对误差),以适当降低压缩比,从而保证神经网络模型的性能;当压缩远离神经网络模型输入端的神经元的参数时,可以选择较大的目标压缩参数(表示相对误差),以在较小程度地牺牲神经网络模型的性能的情况下,增大压缩比。这样,整体的压缩比较大,并且神经网络模型的性能较好。
190.基于此,作为一种可实现的方式,m个待压缩数据集合包括第三待压缩数据集合和第四待压缩数据集合。
191.神经网络模型由n层神经元构成,n层神经元包括输入层神经元和输出层神经元,n为大于1的整数。
192.第三待压缩数据集合中包含输入层神经元的参数的实际值,第四待压缩数据集合中包含输出层神经元的参数的实际值。
193.在k组压缩参数的任意一组压缩参数中,第三待压缩数据集合对应的压缩参数都为最优压缩参数或y个压缩参数中小于最优压缩参数的一个压缩参数,第四待压缩数据集合对应的压缩参数都为y个压缩参数中大于最优压缩参数的一个压缩参数。
194.例如,y个压缩参数为1%、2%、3%、4%、5%、6%、7%、8%、9%和10%,最优压缩参数为7%,则第三待压缩数据集合对应的参数的选择范围可以为1%、2%、3%、4%、5%、6%和7%,而,第四待压缩数据集合对应的参数的选择范围可以为8%、9%和10%;这样,便可以保证在k组压缩参数的任意一组压缩参数中,第三待压缩数据集合对应的压缩参数都为最优压缩参数或y个压缩参数中小于最优压缩参数的一个压缩参数,第四待压缩数据集合对应的压缩参数都为y个压缩参数中大于最优压缩参数的一个压缩参数。
195.在本技术实施例中,包含输入层神经元的参数的实际值的第三待压缩数据集合对应的压缩参数较小,包含输出层神经元的参数的实际值的第四待压缩数据集合对应的压缩参数较大,能够在保证神经网路模型具有较好性能的前提下,尽可能地提高压缩比,从而可以降低神经网络模型对存储空间的占用。
196.上文对压缩神经网络模型的方法进行了介绍,基于上述内容,如图9所示,压缩神经网络模型的过程可以为:
197.第一步,采用y个压缩参数对神经网络模型的参数进行有损压缩,得到y组参数的压缩值,其中,采用y个压缩参数进行有损压缩的过程可参考步骤501的相关说明进行理解;
198.第二步,根据y组参数的压缩值对y个压缩参数进行评分,以得到k组压缩参数,其中,通过评分得到k组压缩参数的过程可参考步骤502和步骤503的相关说明进行理解;
199.第三步,对神经网络模型进行分块,得到m个待压缩数据集合;
200.第四步,分别采用k组压缩参数对m个待压缩数据集合进行有损压缩,以得到k组压缩数据,其中,有损压缩过程可参考步骤302的相关说明进行理解;
201.第五步,根据k组压缩数据对k组压缩参数进行评分,以确定m个不同的目标压缩参数,其中,通过评分确定m个不同的目标压缩参数的过程可参考步骤303、步骤401至步骤405进行理解。
202.第六步,采用m个不同的目标压缩参数对m个待压缩数据集合进行有损压缩,得到压缩文件。
203.下面结合图10对解压缩神经网络模型的方法进行说明。如图10所示,本技术实施例提供了一种解压缩神经网络模型的方法的一个实施例,该方法可以应用于运行神经网络模型的设备中,例如可以应用车载终端和对话服务器中。该方法具体包括:
204.步骤601,获取m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值。
205.步骤602,根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合,m个不同的解压缩参数与m个压缩数据集合一一对应,每个解压缩数据集合中包含神经网络模型的至少一个参数的解压缩值。
206.其中,m个不同的解压缩参数是指压缩过程中的m个不同的目标压缩参数。
207.需要说明的是,由于解压缩神经网络模型的过程是压缩神经网络模型的过程的逆过程,所以可参阅前文压缩神经网络模型的过程的相关说明,对解压缩神经网络模型的过程进行说明。
208.作为一种可实现的方式,神经网络模型由n层神经元构成,n为大于1的整数;每个压缩数据集合中包含n层神经元中一层或多层神经元的参数的压缩值。
209.由于解压缩神经网络模型的过程是压缩神经网络模型的过程的逆过程,所以可参阅压缩神经网络模型的实施例中的相关说明对本技术实施例进行理解。
210.作为一种可实现的方式,m个压缩数据集合包括第一压缩数据集合;第一压缩数据集合包含多层神经元的参数的压缩值,且第一压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
211.由于解压缩神经网络模型的过程是压缩神经网络模型的过程的逆过程,所以可参阅压缩神经网络模型的实施例中的相关说明对本技术实施例进行理解。
212.作为一种可实现的方式,m个压缩数据集合包括第二压缩数据集合,第二压缩数据集合与m个不同的解压缩参数中的第一解压缩参数对应。
213.根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合包括:
214.根据第一解压缩参数对第二压缩数据集合包含的x层神经元的参数的压缩值进行层层解压缩,以得到x组参数的解压缩值,x组参数的解压缩值与x层神经元一一对应,且构成一个解压缩数据集合,x为小于n的正整数。
215.由于解压缩神经网络模型的过程是压缩神经网络模型的过程的逆过程,所以可参阅压缩神经网络模型的实施例中的相关说明对本技术实施例进行理解。
216.基于前述说明可知,在某些特定场景下,运行神经网络模型的设备的外部存储空间和内部存储空间都有限;而神经网络模型在运行时,神经网络模型包含的多层神经元是依次运行的,而不是同时运行。因此,在运行神经网络模型时,为了减少神经网络模型对内存资源的占用,可以按神经网络模型中多层神经元各自的运行顺序,依次对多层神经元的参数的压缩值进行层层解压缩,且每解压缩一层神经元的参数的压缩值,便运行一层神经元,而不需待所有层神经元的参数的压缩值都解压缩完成后,再运行神经网络模型。
217.具体地,根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合包括:
218.根据第二解压缩参数对第一层神经元中各参数的压缩值进行解压缩,得到与第一层神经元中各参数的压缩值对应的参数的解压缩值,第二解压缩参数为m个不同的解压缩参数中的一个,第一层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合。
219.需要说明的是,由于解压缩的过程是压缩的过程的逆过程,所以本技术实施例在此不对解压缩第一层神经元中各参数的压缩值的过程进行详述,具体可参照压缩神经网络模型的实施例中的相关说明对本技术实施例进行理解。
220.在解压缩完成后,便可以运行第一层神经元。
221.在运行第一层神经元后,根据第三解压缩参数对第二层神经元中各参数的压缩值进行解压缩,得到与第二层神经元中各参数的压缩值对应的参数的解压缩值,第三解压缩参数为m个不同的解压缩参数中的一个,第二层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合,在神经网络模型中,第二层神经元与第一层神经元相邻且位于第一层神经元后。
222.需要说明的是,第二层神经元与第一层神经元相邻且位于第一层神经元后,也可以理解为第二层神经元为第一层神经元的下一层神经元,即第二层神经元需要基于第一层神经元的运行结果进行计算。
223.在解压缩完成后,再运行第二层神经元。
224.最后,重复执行上述步骤,直到将神经网络模型中的所有层神经元的参数的压缩值解压缩完成,得到m个解压缩数据集合。
225.如图11所示,在本技术实施例中,当需要运行神经网络模型以进行相应计算时,可以先将神经网络模型的压缩文件加载到内存,然后再内存中对压缩文件进行局部解压缩得到特定层神经元的参数的解压缩值,处理模块根据该特定层神经元的参数的解压缩值及该
特定层神经元的结构数据运行该特定层神经元;待运行完该特定层神经元后,即可清除内存中特定层神经元的参数的解压缩值及该特定层神经元的结构数据,此后处理模块再局部解压缩得到下一层神经元的参数的解压缩值,继续运行下一层神经元。
226.例如,以图2所示的神经网络模型为例,aa层神经元先运行;基于aa层神经元的运行结果,bb层神经元运行;以此类推,cc层神经元、dd层神经元和ee层神经元依次运行。所以,在运行神经网络模型时,可以先解压缩aa层神经元的参数的压缩值,然后运行aa层神经元;然后再解压缩bb层神经元的参数的压缩值,然后运行bb层神经元,以此类推,直到解压缩ee层神经元,解压缩过程结束。因此,在本技术实施例中,在内存中每次只解压缩一层神经元的参数的压缩值,因此可以减少神经网络模型运行时的内存资源开销。
227.请参阅图12,本技术实施例中压缩神经网络模型的装置的结构示意图。
228.如图12所示,本技术实施例提供了一种压缩神经网络模型的装置的一个实施例,包括:
229.获取单元701,用于获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数;
230.压缩单元702,用于根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应。
231.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个待压缩数据集合中包含n层神经元中一层或多层神经元的参数的实际值。
232.在一种实现方式下,m个待压缩数据集合包括第一待压缩数据集合;第一待压缩数据集合包含多层神经元的参数的实际值,且第一待压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
233.在一种实现方式下,m个待压缩数据集合包括第二待压缩数据集合,第二待压缩数据集合与m个不同的目标压缩参数中的第一目标压缩参数对应。
234.压缩单元702,用于根据第一目标压缩参数对第二待压缩数据集合包含的x层神经元的参数的实际值进行层层压缩,以得到x组参数的压缩值,x组参数的压缩值与x层神经元一一对应,且构成一个压缩数据集合,x为小于n的正整数。
235.在一种实现方式下,第一目标压缩参数用于表示相对误差。
236.压缩单元702,用于根据第一目标压缩参数计算目标层神经元的各个参数的绝对误差的对数,目标层神经元为x层神经元中的任意一层;根据目标层神经元的各个参数的实际值计算目标层神经元的各个参数的预测值;获取目标层神经元的各个参数的量化值,其中,参数的量化值等于目标差值与参数的绝对误差的对数的比值,目标差值等于参数的实际值的对数与参数的预测值的对数的差;对目标层神经元的各个参数的量化值的整数部分进行编码,以得到目标层神经元对应的一组参数的压缩值。
237.在一种实现方式下,压缩神经网络模型的装置还包括确定单元703,用于确定m个不同的目标压缩参数。
238.在一种实现方式下,确定单元703,用于获取k组压缩参数,每组压缩参数中均包含m个不同的压缩参数,m个压缩参数与m个待压缩数据集合一一对应,k为大于1的整数;分别采用k组压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到k组压缩数据,
k组压缩数据与k组压缩参数一一对应,且每组压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的压缩值;基于k组压缩数据从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
239.在一种实现方式下,确定单元703,用于基于k组压缩数据计算k组压缩参数中每组压缩参数对应的压缩比;对k组压缩数据进行解压缩,得到k组解压缩数据,k组解压缩数与k组压缩数据一一对应,且每组解压缩数据都包含与m个待压缩数据集合中各参数的实际值对应的参数的解压缩值;基于k组解压缩数据计算k组压缩参数中每组压缩参数对应的神经网络模型的性能值;基于k组压缩参数中每组压缩参数对应的压缩比,以及k组压缩参数中每组压缩参数对应的神经网络模型的性能值,计算k组压缩参数中每组压缩参数的评分;基于k组压缩参数中每组压缩参数的评分从k组压缩参数中选择一组压缩参数,以得到m个不同的目标压缩参数。
240.在一种实现方式下,确定单元703,用于分别采用y个压缩参数对神经网络模型中各参数的实际值进行压缩,得到y组参数的压缩值,y组参数的压缩值与y个压缩参数一一对应,且y组参数的压缩值中的每组参数的压缩值都包含神经网络模型中各参数的压缩值;基于y组参数的压缩值从y个压缩参数选择一个压缩参数作为最优压缩参数;根据最优压缩参数和y个压缩参数确定k组压缩参数。
241.在一种实现方式下,m个待压缩数据集合包括第三待压缩数据集合和第四待压缩数据集合;神经网络模型由n层神经元构成,n层神经元包括输入层神经元和输出层神经元,n为大于1的整数;第三待压缩数据集合中包含输入层神经元的参数的实际值;第四待压缩数据集合中包含输出层神经元的参数的实际值;在k组压缩参数的任意一组压缩参数中,第三待压缩数据集合对应的压缩参数都为最优压缩参数或y个压缩参数中小于最优压缩参数的一个压缩参数,第四待压缩数据集合对应的压缩参数都为y个压缩参数中大于最优压缩参数的一个压缩参数。
242.其中,以上各单元的具体实现、相关说明以及技术效果请参考本技术实施例中压缩神经网络模型的方法的描述。
243.请参阅图13,本技术实施例中解压缩神经网络模型的装置的结构示意图。
244.如图13所示,本技术实施例提供了一种解压缩神经网络模型的装置的一个实施例,包括:
245.获取单元801,用于获取m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值;
246.解压缩单元802,用于根据m个不同的解压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合,m个不同的解压缩参数与m个压缩数据集合一一对应,每个解压缩数据集合中包含神经网络模型的至少一个参数的解压缩值。
247.在一种实现方式下,神经网络模型由n层神经元构成,n为大于1的整数;每个压缩数据集合中包含n层神经元中一层或多层神经元的参数的压缩值。
248.在一种实现方式下,m个压缩数据集合包括第一压缩数据集合;第一压缩数据集合包含多层神经元的参数的压缩值,且第一压缩数据集合包含的多层神经元在神经网络模型中的位置是连续的。
249.在一种实现方式下,m个压缩数据集合包括第二压缩数据集合,第二压缩数据集合
与m个不同的解压缩参数中的第一解压缩参数对应。
250.解压缩单元802,用于根据第一解压缩参数对第二压缩数据集合包含的x层神经元的参数的压缩值进行层层解压缩,以得到x组参数的解压缩值,x组参数的解压缩值与x层神经元一一对应,且构成一个解压缩数据集合,x为小于n的正整数。
251.在一种实现方式下,解压缩单元802,用于根据第二解压缩参数对第一层神经元中各参数的压缩值进行解压缩,得到与第一层神经元中各参数的压缩值对应的参数的解压缩值,第二解压缩参数为m个不同的解压缩参数中的一个,第一层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合;在运行第一层神经元后,根据第三解压缩参数对第二层神经元中各参数的压缩值进行解压缩,得到与第二层神经元中各参数的压缩值对应的参数的解压缩值,第三解压缩参数为m个不同的解压缩参数中的一个,第二层神经元为n层神经元中的一层,且属于m个压缩数据集合中的一个压缩数据集合,在神经网络模型中,第二层神经元与第一层神经元相邻且位于第一层神经元后;在运行第二层神经元后,重复执行上述步骤,直到得到m个解压缩数据集合。
252.其中,以上各单元的具体实现、相关说明以及技术效果请参考本技术实施例中解压缩神经网络模型的方法的描述。
253.请参阅图14,图14为本技术实施例中计算机设备的结构示意图。
254.本技术实施例中计算机设备一个实施例可以包括一个或一个以上处理器901,存储器902,通信接口903。
255.存储器902可以是短暂存储或持久存储。更进一步地,处理器901可以配置为与存储器902通信,在计算机设备上执行存储器902中的一系列指令操作。
256.本实施例中,处理器901可以执行前述图4、图6、图7、图8和图10所示实施例中的步骤,具体此处不再赘述。
257.示例性地,处理器901可以执行以下步骤:
258.获取m个待压缩数据集合,每个待压缩数据集合中包含神经网络模型的至少一个参数的实际值,m为大于1的整数;
259.根据m个不同的目标压缩参数对m个待压缩数据集合中各参数的实际值进行压缩,以得到m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值,m个不同的目标压缩参数与m个待压缩数据集合一一对应。
260.此时,处理器901中的具体功能模块划分可以与前述图12中所描述的获取单元和压缩单元等功能模块的划分方式类似,此处不再赘述。
261.示例性地,处理器901可以执行以下步骤:
262.获取m个压缩数据集合,每个压缩数据集合中包含神经网络模型的至少一个参数的压缩值;
263.根据m个不同的目标压缩参数对m个压缩数据集合中各参数的压缩值进行解压缩,以得到m个解压缩数据集合,m个不同的目标压缩参数与m个压缩数据集合一一对应,每个解压缩数据集合中包含神经网络模型的至少一个参数的解压缩值。
264.此时,处理器901中的具体功能模块划分可以与前述图13中所描述的获取单元和解压缩单元等功能模块的划分方式类似,此处不再赘述。
265.本技术实施例还提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个
处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图4、图6、图7、图8和图10所示实施例中的步骤,具体此处不再赘述。
266.其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
267.本技术实施例还提供了芯片或者芯片系统的第一种实施方式,本技术中上述描述的芯片或者芯片系统还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
268.本技术实施例还提供一种芯片或者芯片系统,该芯片或者芯片系统包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行前述图4、图6、图7、图8和图10所示实施例中的步骤,具体此处不再赘述。
269.其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
270.本技术实施例还提供了芯片或者芯片系统的第一种实施方式,本技术中上述描述的芯片或者芯片系统还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
271.本技术实施例还提供了一种计算机存储介质,该计算机存储介质用于储存为计算机设备所用的计算机软件指令,其包括用于执行为计算机设备所设计的程序。
272.该计算机设备可以如前述图12所描述的压缩神经网络模型的装置。
273.该计算机设备可以如前述图13所描述的解压缩神经网络模型的装置。
274.本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,该计算机软件指令可通过处理器进行加载来实现前述图4、图6、图7、图8和图10所示的方法中的流程。
275.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
276.在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
277.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
278.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
279.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献