造价通

反馈
取消

热门搜词

造价通

取消 发送 反馈意见

神经网络模型压缩方法以及装置实施方式

2022/07/16123 作者:佚名
导读:神经网络模型压缩方法以及装置操作内容 图1是根据《神经网络模型压缩方法以及装置》一个实施例的神经网络模型压缩方法的流程图。《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法可应用于《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩装置中。 《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法是针对已经训练收敛的神经网络模型的参数进行压缩。如图1所示,该神经网络模型压缩方法可

神经网络模型压缩方法以及装置操作内容

图1是根据《神经网络模型压缩方法以及装置》一个实施例的神经网络模型压缩方法的流程图。《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法可应用于《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩装置中。

《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法是针对已经训练收敛的神经网络模型的参数进行压缩。如图1所示,该神经网络模型压缩方法可以包括:

S110,针对神经网络模型中的每一个神经元层,确定每个神经元层的模型参数集合,其中,模型参数集合包含多个模型参数。需要说明的是,由于对于神经网络的每个layer(神经元层)的压缩方法是一样的,所以《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法仅是示出了对神经网络模型中的一个layer(神经元层)进行了描述,可以理解,神经网络模型的其他神经元层也可通过该神经网络模型压缩方法来实现量化压缩的目的。其中,上述神经元层可以是神经网络中的输入层、输出层和隐含层中的任意一个,也可以是神经网络中隐含层的任一个神经元层,在此不做具体限定。具体地,对于神经网络模型中的每一个神经元层,可找出该神经元层中的所有模型参数,并将这些模型参数用集合方式进行表示,得到该神经元层的模型参数集合。

S120,对多个模型参数进行第一变换以生成多个中间参数。为了实现对神经网络模型中的参数进行量化压缩的目的,《神经网络模型压缩方法以及装置》可先对模型参数进行第一变换,以使模型参数变换成浮点数。可以理解,将模型参数变换成浮点数的方式有很多种,例如,该第一变换可以是LOG对数变换、正弦函数正切函数等。优选地,在《神经网络模型压缩方法以及装置》的实施例中,该第一变换为LOG对数变换。为了能够在后续实际应用中,能够对压缩的数据进行解压以实现正常使用的目的,在后续还需对压缩后的参数值进行第二变换,使其变换为原数据类型,即可以理解,即第一变换和第二变换可以是任一种函数,只需第二变换与第一变换互为正反函数。优选地,该第一变换为LOG变换,第二变换为指数变换。例如,以第一变换为LOG变换为例,假设模型参数集合为M,xi是M中的元素,即xi是模型参数集合中的第i个模型参数,可分别对模型参数集合M中的每个模型参数进行LOG变换,得到LOG参数集合L,该LOG参数集合L中的元素即为上述的中间参数。其中,可通过以下公式(1)实现对模型参数集合M中的元素xi进行LOG变换:yi=log(|xi|)(1)其中,yi为中间参数,yi∈L。

S130,根据预设的量化步长对多个中间参数进行量化,得到多个量化参数。具体地,可通过预设的量化公式,分别将每个中间参数量化到间隔为该预设的量化步长的数轴上并取整,得到该中间参数对应的量化参数的值。其中,上述预设的量化步长可以是根据实际需求决定的,也可以是根据实际试验而得到的经验值,例如,该预设的量化步长可为0.125。其中,在《神经网络模型压缩方法以及装置》的实施例中,上述预设的量化公式可为:

量化公式

其中,qi为第i个量化参数的值,第i个量化参数是由第i个中间参数进行量化后得到的,yi为第i个中间参数,第i个中间参数是由第i个模型参数进行第一变换后得到的,l为预设的量化步长,round()为取整函数。

S140,根据预设的量化位数,从多个量化参数中选取多个采样量化点。具体地,可根据多个量化参数的值,对多个量化参数进行降序排列,并根据预设的量化位数确定目标个数,之后,从降序排列后的多个量化参数中,选取排列在前目标个数的量化参数,最后,将排列在前目标个数的量化参数作为多个采样量化点。作为一种示例,上述目标个数可为2b-1,其中,b为预设的量化位数。其中,上述预设的量化位数可以是根据实际需求决定的,也可以是根据实际试验而得到的经验值,例如,该预设的量化位数可为8。也就是说,可对多个量化参数的值进行从大到小排序,并从排序后的多个量化参数的值中,选取排列靠前目标个数(如Top2b-1)的值,将这些排列靠前Top2b-1的值所对应的量化参数作为采样量化点。

S150,根据多个量化参数的值和多个采样量化点,生成多个模型参数的量化值。具体而言,在《神经网络模型压缩方法以及装置》的一个实施例中,可针对第i个量化参数,分别计算第i个量化参数的值与每个采样量化点之间的差值的平方值,之后,从多个平方值中选取最小值,并确定多个平方值中最小值所对应的采样量化点的标识值,当第i模型参数的值为正数时,将标识值作为第i模型参数的量化值;当第i模型参数的值为负数时,计算标识值与目标个数之间的和值,并将和值作为第i模型参数的量化值。举例而言,遍历模型参数集合M的元素xi,通过上述得到的该元素xi所对应的量化。参数的值,查找多个采样量化点,使得满足以下公式(3):id=argjminj(qi-log_dict[j])2(3)其中,qi为元素xi所对应的量化参数的值,log_dict[j]为第j采样量化点的值,id为上述标识值。在获得该标识值之后,需判断该元素xi是正数还是负数,当该元素xi为正数时,该标识值即为第i模型参数的量化值;当该元素xi为负数时,可计算该标识值与目标个数之间的和值,如id=id=2b-1,并将该和值作为第i模型参数的量化值。可以看出,《神经网络模型压缩方法以及装置》通过将原神经网络模型的模型参数用量化点的值(实际上是量化点的id)来代替,最终,这里的id是一个0~2b-1的数,只需用b个bit(位)保存即可,达到了压缩的目的。

S160,根据量化值对多个模型参数进行压缩存储。也就是说,在得到每个模型参数的量化值之后,可根据每个模型参数的量化值,对每个模型参数进行压缩存储,以达到压缩的目的。

综上,《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法,关键在于量化点的选取,首先是通过第一变换(如LOG变换)将模型参数变换到LOG域,再对该LOG域上的数值选取采样量化点,然后,将原神经网络模型的模型参数用采样量化点的值(即采样量化点的id)来代替,最终得到模型参数的取值只在采样量化点集合之内的量化模型,最后,再经过压缩存储达到压缩的目的。

《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法,针对神经网络模型中的每一个神经元层,确定每个神经元层的模型参数集合,其中,模型参数集合包含多个模型参数,之后,对多个模型参数进行第一变换以生成多个中间参数,并根据预设的量化步长对多个中间参数进行量化,得到多个量化参数,然后,根据预设的量化位数,从多个量化参数中选取多个采样量化点,之后,根据多个量化参数的值和多个采样量化点,生成多个模型参数的量化值,最后,根据量化值对多个模型参数进行压缩存储。即根据需要压缩的数据调节量化步长,并根据预设的量化位数,从排列在多个量化参数的靠前位置开始采取采样量化点,可以更加充分的对压缩数据进行采样,更好地保留重要的权值信息,更好地保持模型效果,大大减少了神经网络模型的大小,减少了计算资源,特别是减少了内存资源的占用。

图2是根据《神经网络模型压缩方法以及装置》另一个实施例的神经网络模型压缩方法的流程图。为了提高《神经网络模型压缩方法以及装置》的可用性以及可行性,在《神经网络模型压缩方法以及装置》的实施例中,在对模型参数进行压缩的过程中,还可根据预设的变换模型对多个采样量化点的值进行第二变换,并将经过第二变换后的多个采样量化点的值进行组合以形成量化字典,使得在需要使用模型参数时,可通过查找该量化字典即可得出该模型参数的原始值。具体地,如图2所示,该神经网络模型压缩方法可以包括:

S210,针对神经网络模型中的每一个神经元层,确定每个神经元层的模型参数集合,其中,模型参数集合包含多个模型参数。

S220,对多个模型参数进行第一变换以生成多个中间参数。

S230,根据预设的量化步长对多个中间参数进行量化,得到多个量化参数。

S240,根据预设的量化位数,从多个量化参数中选取多个采样量化点。

具体地,可根据多个量化参数的值,对多个量化参数进行降序排列,并根据预设的量化位数确定目标个数,之后,从降序排列后的多个量化参数中,选取排列在前目标个数的量化参数,最后,将排列在前目标个数的量化参数作为多个采样量化点。作为一种示例,上述目标个数可为2b-1,其中,b为预设的量化位数。

S250,根据多个量化参数的值和多个采样量化点,生成多个模型参数的量化值。具体而言,在《神经网络模型压缩方法以及装置》的一个实施例中,可针对第i个量化参数,分别计算第i个量化参数的值与每个采样量化点之间的差值的平方值,之后,从多个平方值中选取最小值,并确定多个平方值中最小值所对应的采样量化点的标识值,当第i模型参数的值为正数时,将标识值作为第i模型参数的量化值;当第i模型参数的值为负数时,计算标识值与目标个数之间的和值,并将和值作为第i模型参数的量化值。

S260,根据量化值对多个模型参数进行压缩存储。

S270,对多个采样量化点的值进行第二变换以生成量化字典,并存储量化字典。作为一种示例,,该第二变换可为指数变换。具体而言,在《神经网络模型压缩方法以及装置》的一个实施例中,可根据预设的变换模型对多个采样量化点的值进行第二变换,并将经过第二变换后的多个采样量化点的值进行组合以形成量化字典。其中,在《神经网络模型压缩方法以及装置》的实施例中,该预设的变换模型可为:

变换模型

其中,quant_dict[i]为量化字典中第i的元素,b为预设的量化位数,2b-1为目标个数,exp()为指数变换,log_dict[i]为多个采样量化点中第i元素的值。举例而言,以2b-1个采样量化点为例,可对每个采样量化点的值进行指数变换,并将指数变换结果加上正负号,得到2b个量化权值组成的量化字典quant_dict,使得量化字典中的每个元素满足以上式(4)。

可选地,上述步骤S270可以是在上述步骤S240之后被执行,也可以是在步骤S260被执行时,执行该步骤S270,即可在根据量化值对多个模型参数进行压缩存储时,可也对多个采样量化点的值进行第二变换以生成量化字典,并存储该量化字典,具体执行顺序不做具体限制,只要能够被《神经网络模型压缩方法以及装置》的实施例所属技术领域的技术人员所理解,实现神经网络模型压缩的目的即可。

S280,当检测需要使用多个模型参数时,根据多个模型参数的量化值和存储的量化字典获取多个模型参数的原始值。具体地,可根据量化值对多个模型参数进行压缩存储,并可将量化字典进行存储,这样,在监测到需要使用神经网络模型中的模型参数时,可根据该模型参数的量化值查找已存储的量化字典,即可得到该模型参数的原始值。可以理解,压缩存储的思想就是只存储有限(如2b)个采样量化点的量化权值组成的量化字典,然后,神经网络模型的模型参数使用采样量化点的id来表示,在检测到需要使用神经网络模型中的模型参数时,通过查找该量化字典即可得到该模型参数的原始值。其中,量化字典的大小可以忽略,例如,当量化字典大小为256时,量化后的神经网络模型保存模型参数的量化值id只需要用8bit表示即可,而原来的单精度浮点数却需要32bit,这样可以达到压缩的目的。《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩方法,在对模型参数进行压缩的过程中,还可根据预设的变换模型对多个采样量化点的值进行第二变换,并将经过第二变换后的多个采样量化点的值进行组合以形成量化字典,使得在需要使用模型参数时,可通过查找该量化字典即可得出该模型参数的原始值,提高了《神经网络模型压缩方法以及装置》的可用性以及可行性。与上述几种实施例提供的神经网络模型压缩方法相对应,《神经网络模型压缩方法以及装置》的一种实施例还提供一种神经网络模型压缩装置,由于《神经网络模型压缩方法以及装置》实施例提供的神经网络模型压缩装置与上述几种实施例提供的神经网络模型压缩方法相对应,因此在前述神经网络模型压缩方法的实施方式也适用于该实施例提供的神经网络模型压缩装置,在该实施例中不再详细描述。图3是根据《神经网络模型压缩方法以及装置》一个实施例的神经网络模型压缩装置的结构示意图。如图3所示,该神经网络模型压缩装置可以包括:确定模块310、第一变换模块320、量化模块330、采样模块340、生成模块350和压缩模块360。

具体地,确定模块310可用于针对神经网络模型中的每一个神经元层,确定每个神经元层的模型参数集合,其中,模型参数集合包含多个模型参数。第一变换模块320可用于对多个模型参数进行第一变换以生成多个中间参数。量化模块330可用于根据预设的量化步长对多个中间参数进行量化,得到多个量化参数。具体而言,在《神经网络模型压缩方法以及装置》的一个实施例中,该量化模块330根据预设的量化步长对多个中间参数进行量化,得到多个量化参数的具体实现过程可如下:针对每个中间参数,将每个中间参数量化至间隔为预设的量化步长的数轴上并取整,得到每个中间参数对应的量化参数。采样模块340可用于根据预设的量化位数,从多个量化参数中选取多个采样量化点。作为一种示例,如图4所示,该采样模块340可包括:排练单元341、确定单元342、选取单元343和获取单元344。其中,排练单元341用于根据多个量化参数的值,对多个量化参数进行降序排列。确定单元342用于根据预设的量化位数确定目标个数。选取单元343用于从降序排列后的多个量化参数中,选取排列在前目标个数的量化参数。获取单元344用于将排列在前目标个数的量化参数作为多个采样量化点。生成模块350可用于根据多个量化参数的值和多个采样量化点,生成多个模型参数的量化值。作为一种示例,如图5所示,该生成模块350可以包括:计算单元351、确定单元352和生成单元353。其中,计算单元351可用于针对第i个量化参数,分别计算第i个量化参数的值与每个采样量化点之间的差值的平方值。确定单元352可用于从多个平方值中选取最小值,并确定多个平方值中最小值所对应的采样量化点的标识值。生成单元353可用于在第i模型参数的值为正数时,将标识值作为第i模型参数的量化值,并在第i模型参数的值为负数时,计算标识值与目标个数之间的和值,并将和值作为第i模型参数的量化值。压缩模块360可用于根据量化值对多个模型参数进行压缩存储。

为了提高《神经网络模型压缩方法以及装置》的可用性以及可行性,进一步地,在《神经网络模型压缩方法以及装置》的一个实施例中,如图6所示,该神经网络模型压缩装置还可包括:第二变换模块370、存储模块380和解压模块390。其中,第二变换模块370可用于对多个采样量化点的值进行第二变换以生成量化字典。存储模块380可用于存储量化字典。解压模块390可用于在检测需要使用多个模型参数时,根据多个模型参数的量化值和存储的量化字典获取多个模型参数的原始值。其中,在《神经网络模型压缩方法以及装置》的实施例中,第一变换为对数LOG变换,第二变换为指数变换 。

神经网络模型压缩方法以及装置实现过程

作为一种示例,第二变换模块370对多个采样量化点的值进行第二变换以生成量化字典的具体实现过程可如下:根据预设的变换模型对多个采样量化点的值进行第二变换,并将经过第二变换后的多个采样量化点的值进行组合以形成量化字典。其中,在《神经网络模型压缩方法以及装置》的实施例中,预设的变换模型为:[0088]quant_dict[i]=-1*quant_dict[i 2b-1][0089]quant_dict[i]=exp(log_dict[i])[0090]其中,quant_dict[i]为量化字典中第i的元素,b为预设的量化位数,2b-1为目标个数,exp()为指数变换,log_dict[i]为多个采样量化点中第i元素的值。

《神经网络模型压缩方法以及装置》实施例的神经网络模型压缩装置,可通过确定模块针对神经网络模型中的每一个神经元层,确定每个神经元层的模型参数集合,其中,模型参数集合包含多个模型参数,第一变换模块对多个模型参数进行第一变换以生成多个中间参数,量化模块根据预设的量化步长对多个中间参数进行量化,得到多个量化参数,采样模块根据预设的量化位数,从多个量化参数中选取多个采样量化点,生成模块根据多个量化参数的值和多个采样量化点,生成多个模型参数的量化值,压缩模块根据量化值对多个模型参数进行压缩存储。即根据需要压缩的数据调节量化步长,并根据预设的量化位数,从排列在多个量化参数的靠前位置开始采取采样量化点,可以更加充分的对压缩数据进行采样,更好地保留重要的权值信息,更好地保持模型效果,大大减少了神经网络模型的大小,减少了计算资源,特别是减少了内存资源的占用。

在《神经网络模型压缩方法以及装置》的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在《神经网络模型压缩方法以及装置》的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在该说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于《神经网络模型压缩方法以及装置》的至少一个实施例或示例中。在该说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,该领域的技术人员可以将该说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且《神经网络模型压缩方法以及装置》的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被《神经网络模型压缩方法以及装置》的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就该说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

《神经网络模型压缩方法以及装置》的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用该领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等 。

神经网络模型压缩方法以及装置实施特点

该技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在《神经网络模型压缩方法以及装置》各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述实施例是示例性的,不能理解为对《神经网络模型压缩方法以及装置》的限制,该领域的普通技术人员在《神经网络模型压缩方法以及装置》的范围内可以对上述实施例进行变化、修改、替换和变型

*文章为作者独立观点,不代表造价通立场,除来源是“造价通”外。
关注微信公众号造价通(zjtcn_Largedata),获取建设行业第一手资讯

热门推荐

相关阅读