首页 / 专利库 / 电信 / 迭代 / 神经网络量化方法、装置及电子设备

神经网络量化方法、装置及电子设备

阅读:875发布:2020-05-08

专利汇可以提供神经网络量化方法、装置及电子设备专利检索,专利查询,专利分析的服务。并且本 发明 提供了一种神经网络量化方法、装置及 电子 设备,该方法包括:在神经网络的 迭代 训练过程中,利用 输入层 中各神经元的缩放因子,在输入层的各个输出通道对输入层中各神经元的初始激活值进行量化计算,输出输入层的下一隐含层的各神经元的激活值;将神经网络的各个隐含层逐一作为当前层,对每个当前层均执行以下量化操作:基于当前层中各神经元的激活值确定当前层中各神经元的缩放因子,利用当前层中各神经元的缩放因子,在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算,输出当前层的下一层的各神经元的激活值;当迭代训练完成时,将当前神经网络作为量化后的神经网络。本发明提升了神经网络的识别 精度 。,下面是神经网络量化方法、装置及电子设备专利的具体信息内容。

1.一种神经网络量化方法,其特征在于,包括:
在神经网络的迭代训练过程中,基于所述神经网络的输入层接收到的输入数据确定所述输入层中各神经元的初始激活值,基于所述初始激活值确定所述输入层中各神经元的缩放因子,利用所述输入层中各神经元的缩放因子,在所述输入层的各个输出通道对所述输入层中各神经元的初始激活值进行量化计算,输出所述输入层的下一隐含层的各神经元的激活值;
将所述神经网络的各个隐含层逐一作为当前层,对每个所述当前层均执行以下量化操作:接收所述当前层中各神经元的激活值,基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子,利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值;
当所述迭代训练完成时,将当前神经网络作为量化后的神经网络。
2.根据权利要求1所述的方法,其特征在于,所述基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子的步骤,包括:
获取所述当前层的权重,并将所述当前层的权重输入预先设置的第一量化函数进行量化;
基于所述当前层中各神经元的激活值及量化后的所述当前层的权重确定所述当前层中各神经元的中间激活值;
基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子。
3.根据权利要求2所述的方法,其特征在于,所述利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值的步骤,包括:
将所述中间激活值分别输入至所述当前层中各神经元对应输出通道中预先设置的第二量化函数,得到各输出通道中量化后的所述中间激活值;
基于各输出通道中量化后的所述中间激活值与各通道在当前层中对应的神经元的缩放因子的乘积,确定所述当前层中各神经元的激活值的量化计算结果;
将所述当前层中各神经元的激活值的量化计算结果作为所述当前层的下一层的各神经元的激活值。
4.根据权利要求2所述的方法,其特征在于,所述基于所述当前层中各神经元的激活值及量化后的所述当前层的权重确定所述当前层中各神经元的中间激活值的步骤,包括:
在所述当前层的各个输出通道中分别对各通道在当前层中对应的神经元的激活值和量化后的所述当前层的权重进行卷积运算,得到所述当前层中各神经元的卷积运算结果;
将所述当前层中各神经元的卷积运算结果分别输入至预设的第一非线性激活函数,得到所述当前层中各神经元的中间激活值。
5.根据权利要求2所述的方法,其特征在于,所述隐含层包括全连接层;
基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子的步骤,包括:
对所述当前层中各神经元的中间激活值均执行以下操作:
对所述中间激活值进行全局平均池化运算,得到池化运算结果;
获取所述隐含层中第一全连接层的第一浮点型权重,将所述池化运算结果和所述全连接层的浮点型权重输入预设的第二非线性激活函数;
获取所述隐含层中第二全连接层的第二浮点型权重,将所述第二非线性激活函数的输出结果输入预设的第三非线性激活函数,得到所述当前层中各神经元的缩放因子;其中,所述第一全连接层和所述第二全连接层为所述全连接层的任意两层。
6.根据权利要求5所述的方法,其特征在于,所述当前层为第l层,所述第二非线性激活函数为ReLU激活函数,所述第三非线性激活函数为Sigmoid函数;
所述当前层的各神经元的缩放因子的计算算式为:
其中, Wl2为所述第二浮点型权重,Wl1为所述第一浮点
型权重,GAP(Al)为所述池化运算结果,Al为所述神经网络中第l层的神经元的中间激活值。
7.根据权利要求2所述的方法,其特征在于,所述隐含层包括卷积层;
所述基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子的步骤,包括:
对所述当前层中各神经元的中间激活值均执行以下操作:
获取所述卷积层中大小为1x1的任意一层卷积层的权重;
对所述中间激活值和所述卷积层的权重进行卷积运算,并将得到的卷积运算结果输入预设的第三非线性激活函数,获得所述当前层中各神经元的缩放因子。
8.根据权利要求7所述的方法,其特征在于,所述当前层为第l层,所述第三非线性激活函数Sigmoid函数;
所述当前层的各神经元的缩放因子的计算算式为:
其中,Wl3为所述神经网络中任意一个大小为1x1的卷积层的权重, 为卷积运算符,Al为所述神经网络中第l层的神经元的中间激活值。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
当所述神经网络的各个隐含层均完成所述量化操作后,对当前的神经网络进行反向传播以更新所述神经网络中各层的权重;
重复执行所述量化操作和所述反向传播的操作,直至所述神经网络完成迭代训练;
将待检测图像输入所述量化后的神经网络,得到图像识别结果。
10.一种神经网络量化装置,其特征在于,包括:
初始值确定模,用于在神经网络的迭代训练过程中,基于所述神经网络的输入层接收到的输入数据确定所述输入层中各神经元的初始激活值,基于所述初始激活值确定所述输入层中各神经元的缩放因子,利用所述输入层中各神经元的缩放因子,在所述输入层的各个输出通道对所述输入层中各神经元的初始激活值进行量化计算,输出所述输入层的下一隐含层的各神经元的激活值;
量化计算模块,用于将所述神经网络的各个隐含层逐一作为当前层,对每个所述当前层均执行以下量化操作:接收所述当前层中各神经元的激活值,基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子,利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值;
量化结束模块,用于在所述迭代训练完成时,将当前神经网络作为量化后的神经网络。
11.一种电子设备,其特征在于,包括:处理器和存储装置;
所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行如权利要求1至9任一项所述的方法。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行上述权利要求1至9任一项所述的方法的步骤。

说明书全文

神经网络量化方法、装置及电子设备

技术领域

[0001] 本发明涉及机器学习技术领域,尤其是涉及一种神经网络量化方法、装置及电子设备。

背景技术

[0002] 随着神经网络在图像分类、物体检测、图像分割计算机视觉方向的应用技术日渐成熟,对于将神经网络移植到移动终端的需求量也越来越大。但高性能神经网络具有参数量庞大、计算量大的特点,使其难以有效应用于移动终端。为了降低神经网络的计算复杂度以缓解神经网络的移植问题,研究人员提出了多种神经网络压缩与加速方法,诸如,将神经网络量化成精度网络的方法,降低了神经网络的计算时间。然而,低精度网络由于参数较少,表达能欠缺、训练困难进而影响到神经网络的识别精度,因此,现有的网络量化方法得到的神经网络还存在识别精度较低的问题。

发明内容

[0003] 有鉴于此,本发明的目的在于提供一种神经网络量化方法、装置及电子设备,能够提升神经网络的识别精度。
[0004] 为了实现上述目的,本发明实施例采用的技术方案如下:
[0005] 第一方面,本发明实施例提供了一种神经网络量化方法,包括:在神经网络的迭代训练过程中,基于所述神经网络的输入层接收到的输入数据确定所述输入层中各神经元的初始激活值,基于所述初始激活值确定所述输入层中各神经元的缩放因子,利用所述输入层中各神经元的缩放因子,在所述输入层的各个输出通道对所述输入层中各神经元的初始激活值进行量化计算,输出所述输入层的下一隐含层的各神经元的激活值;将所述神经网络的各个隐含层逐一作为当前层,对每个所述当前层均执行以下量化操作:接收所述当前层中各神经元的激活值,基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子,利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值;当所述迭代训练完成时,将当前神经网络作为量化后的神经网络。
[0006] 进一步,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子的步骤,包括:获取所述当前层的权重,并将所述当前层的权重输入预先设置的第一量化函数进行量化;基于所述当前层中各神经元的激活值及量化后的所述当前层的权重确定所述当前层中各神经元的中间激活值;基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子。
[0007] 进一步,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值的步骤,包括:将所述中间激活值分别输入至所述当前层中各神经元对应输出通道中预先设置的第二量化函数,得到各输出通道中量化后的所述中间激活值;基于各输出通道中量化后的所述中间激活值与各通道在当前层中对应的神经元的缩放因子的乘积,确定所述当前层中各神经元的激活值的量化计算结果;将所述当前层中各神经元的激活值的量化计算结果作为所述当前层的下一层的各神经元的激活值。
[0008] 进一步,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述基于所述当前层中各神经元的激活值及量化后的所述当前层的权重确定所述当前层中各神经元的中间激活值的步骤,包括:在所述当前层的各个输出通道中分别对各通道在当前层中对应的神经元的激活值和量化后的所述当前层的权重进行卷积运算,得到所述当前层中各神经元的卷积运算结果;将所述当前层中各神经元的卷积运算结果分别输入至预设的第一非线性激活函数,得到所述当前层中各神经元的中间激活值。
[0009] 进一步,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述隐含层包括全连接层;基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子的步骤,包括:对所述当前层中各神经元的中间激活值均执行以下操作:对所述中间激活值进行全局平均池化运算,得到池化运算结果;获取所述隐含层中第一全连接层的第一浮点型权重,将所述池化运算结果和所述全连接层的浮点型权重输入预设的第二非线性激活函数;获取所述隐含层中第二全连接层的第二浮点型权重,将所述第二非线性激活函数的输出结果输入预设的第三非线性激活函数,得到所述当前层中各神经元的缩放因子;其中,所述第一全连接层和所述第二全连接层为所述全连接层的任意两层。
[0010] 进一步,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述当前层为第l层,所述第二非线性激活函数为ReLU激活函数,所述第三非线性激活函数为Sigmoid函数;所述当前层的各神经元的缩放因子的计算算式为:
[0011]
[0012] 其中, Wl2为所述第二浮点型权重,Wl1为所述第一浮点型权重,GAP(Al)为所述池化运算结果,Al为所述神经网络中第l层的神经元的中间激活值。
[0013] 进一步,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述隐含层包括卷积层;所述基于所述当前层中各神经元的中间激活值确定所述当前层中各神经元的缩放因子的步骤,包括:对所述当前层中各神经元的中间激活值均执行以下操作:获取所述卷积层中大小为1x1的任意一层卷积层的权重;对所述中间激活值和所述卷积层的权重进行卷积运算,并将得到的卷积运算结果输入预设的第三非线性激活函数,获得所述当前层中各神经元的缩放因子。
[0014] 进一步,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述当前层为第l层,所述第三非线性激活函数Sigmoid函数;所述当前层的各神经元的缩放因子的计算算式为:
[0015]
[0016] 其中,Wl3为所述神经网络中任意一个大小为1x1的卷积层的权重, 为卷积运算符,Al为所述神经网络中第l层的神经元的中间激活值。
[0017] 进一步,本发明实施例提供了第一方面的第八种可能的实施方式,其中,所述方法还包括:当所述神经网络的各个隐含层均完成所述量化操作后,对当前的神经网络进行反向传播以更新所述神经网络中各层的权重;重复执行所述量化操作和所述反向传播的操作,直至所述神经网络完成迭代训练;将待检测图像输入所述量化后的神经网络,得到图像识别结果。
[0018] 第二方面,本发明实施例还提供了一种神经网络量化装置,包括:初始值确定模,用于在神经网络的迭代训练过程中,基于所述神经网络的输入层接收到的输入数据确定所述输入层中各神经元的初始激活值,基于所述初始激活值确定所述输入层中各神经元的缩放因子,利用所述输入层中各神经元的缩放因子,在所述输入层的各个输出通道对所述输入层中各神经元的初始激活值进行量化计算,输出所述输入层的下一隐含层的各神经元的激活值;量化计算模块,用于将所述神经网络的各个隐含层逐一作为当前层,对每个所述当前层均执行以下量化操作:接收所述当前层中各神经元的激活值,基于所述当前层中各神经元的激活值确定所述当前层中各神经元的缩放因子,利用所述当前层中各神经元的缩放因子,在所述当前层的各个输出通道对所述当前层中各神经元的激活值进行量化计算,输出所述当前层的下一层的各神经元的激活值;量化结束模块,用于在所述迭代训练完成时,将当前神经网络作为量化后的神经网络。
[0019] 第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储装置;所述存储装置上存储有计算机程序,所述计算机程序在被所述处理器运行时执行上述第一方面任一项所述的方法。
[0020] 第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面任一项所述的方法的步骤。
[0021] 本发明实施例提供了一种神经网络量化方法、装置及电子设备,该方法包括:在神经网络的迭代训练过程中,首先基于神经网络的输入层接收到的输入数据确定输入层中各神经元的初始激活值,基于初始激活值确定输入层中各神经元的缩放因子,利用输入层中各神经元的缩放因子,在输入层的各个输出通道对输入层中各神经元的初始激活值进行量化计算,输出输入层的下一隐含层的各神经元的激活值;然后将神经网络的各个隐含层逐一作为当前层,对每个当前层均执行以下量化操作:接收当前层中各神经元的激活值,基于当前层中各神经元的激活值确定当前层中各神经元的缩放因子,利用当前层中各神经元的缩放因子,在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算,输出当前层的下一层的各神经元的激活值;当迭代训练完成时,将当前神经网络作为量化后的神经网络。一方面,通过对当前层中各神经元的激活值进行量化计算,降低了神经网络的计算复杂度,另一方面,由于当前层中各神经元对应的缩放因子是基于当前层中各神经元的激活值确定的,而当前层中各神经元的激活值是基于输入数据得到的,从而使各神经元对应的缩放因子可以根据输入数据自适应变化,提升了神经网络的识别精度。
[0022] 本发明实施例的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明实施例的上述技术即可得知。
[0023] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0024] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025] 图1示出了本发明实施例所提供的一种电子设备的结构示意图;
[0026] 图2示出了本发明实施例所提供的一种神经网络量化方法流程图
[0027] 图3示出了本发明实施例所提供的现有的量化计算流程图;
[0028] 图4示出了本发明实施例所提供的一种目标量化算法的量化计算流程图;
[0029] 图5示出了本发明实施例所提供的另一种目标量化算法的量化计算流程图;
[0030] 图6示出了本发明实施例所提供的一种神经网络量化装置结构框图
[0031] 图7示出了本发明实施例所提供的一种神经网络量化装置结构框图。

具体实施方式

[0032] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0033] 考虑到现有的网络量化方法得到的神经网络还存在识别精度较低的问题,为改善此问题,本发明实施例提供了一种神经网络量化方法、装置及电子设备,可应用于提升神经网络的识别精度。以下对本发明实施例进行详细介绍。
[0034] 实施例一:
[0035] 首先,参照图1来描述用于实现本发明实施例的一种神经网络量化方法、装置及电子设备的示例电子设备100。
[0036] 如图1所示的一种电子设备的结构示意图,电子设备100包括一个或多个处理器102、一个或多个存储装置104、输入装置106、输出装置108以及图像采集装置110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备
100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
[0037] 所述处理器102可以采用数字信号处理器(DSP)、现场可编程阵列(FPGA)、可编程逻辑阵列(PLA)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元中的一种或几种的组合,并且可以控制所述电子设备100中的其它组件以执行期望的功能。
[0038] 所述存储装置104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
[0039] 所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘鼠标、麦克触摸屏等中的一个或多个。
[0040] 所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
[0041] 所述图像采集装置110可以拍摄用户期望的图像(例如照片、视频等),并且将所拍摄的图像存储在所述存储装置104中以供其它组件使用。
[0042] 示例性地,用于实现根据本发明实施例的神经网络量化方法、装置及电子设备的示例电子设备可以被实现为诸如智能手机、平板电脑、计算机等智能终端。
[0043] 实施例二:
[0044] 参见图2所示的神经网络量化方法流程图,该方法可以由诸如前述电子设备执行,在一种实施方式中,该电子设备可以为配置有神经网络模型的处理设备(诸如服务器或计算机等),该方法主要包括以下步骤S202~步骤S206:
[0045] 步骤S202,在神经网络的迭代训练过程中,基于神经网络的输入层接收到的输入数据确定输入层中各神经元的初始激活值,基于初始激活值确定输入层中各神经元的缩放因子,利用输入层中各神经元的缩放因子,在输入层的各个输出通道对输入层中各神经元的初始激活值进行量化计算,输出输入层的下一隐含层的各神经元的激活值。
[0046] 上述神经网络(也可以称为神经网络模型)的网络层主要包括输入层、隐含层和输出层,神经网络的输入层、输出层及每一层隐含层都包含若干个神经元,不同网络层之间是通过神经元之间的输出通道连接的。在神经网络的迭代过程中,当向神经网络输入数据时,首先基于输入数据确定神经网络输入层各神经元的初始激活值,然后对于输入层中各神经元的初始激活值在输入层各神经元的输出通道进行量化计算得到隐含层中第一层各神经元的激活值,上述输入层中各神经元的缩放因子是在各神经元所连接的输出通道上基于各神经元的初始激活值分别得到的。
[0047] 步骤S204,将神经网络的各个隐含层逐一作为当前层,对每个当前层均执行以下量化操作:接收当前层中各神经元的激活值,基于当前层中各神经元的激活值确定当前层中各神经元的缩放因子,利用当前层中各神经元的缩放因子,在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算,输出当前层的下一层的各神经元的激活值。
[0048] 由于神经网络的隐含层可以包括一层或多层,当上述隐含层包括多层时,为了根据输入层的各初始激活值更新神经网络中每一层每一个神经元的激活值,从神经网络的输入层开始,依次对神经网络中隐含层的每一层执行量化操作,直到通过量化操作得到输出层各神经元的激活值,即在本轮训练中,神经网络中的所有神经元的激活值都被更新。
[0049] 上述当前层中各神经元的缩放因子是基于当前层中各神经元的激活值确定的,而当前层中各神经元的激活值是利用上一层中各神经元的缩放因子,在上一层的各个输出通道对上一层中各神经元的激活值进行量化计算得到的,经过依次推导,当前层中各神经元的缩放因子是由输入层中各神经元的初始激活值确定的,而输入层中各神经元的初始激活值是基于输入数据确定的,因此,当前层中各神经元的缩放因子是由神经网络的输入数据确定的,即当前层中各神经元的缩放因子可以随着输入数据的不同而自适应变化。
[0050] 步骤S206,当迭代训练完成时,将当前神经网络作为量化后的神经网络。
[0051] 在神经网络的每一轮迭代训练中,对神经网络的输入层和隐含层中各神经元的激活值执行上述量化操作,以更新神经网络中所有神经元的激活值,当神经网络的迭代训练次数达到预设迭代次数时,将当前完成迭代训练的神经网络作为量化后的神经网络。
[0052] 上述步骤S202中在输入层的各个输出通道对输入层中各神经元的初始激活值进行量化计算的过程,与上述步骤S204中在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算属于相同的量化计算过程,区别仅为量化计算中输入的激活值不相同。
[0053] 本实施例提供的上述神经网络量化方法,一方面,通过对当前层中各神经元的激活值进行量化计算,降低了神经网络的计算复杂度,另一方面,由于当前层中各神经元对应的缩放因子是基于当前层中各神经元的激活值确定的,而当前层中各神经元的激活值是基于输入数据得到的,从而使各神经元对应的缩放因子可以根据输入数据自适应变化,提升了神经网络的识别精度。
[0054] 为了得到能够根据输入数据自适应变化的缩放因子,本实施例提供了基于当前层中各神经元的激活值确定当前层中各神经元的缩放因子的实施方式,具体可参照如下步骤(1)~步骤(3)执行:
[0055] 步骤(1):获取当前层的权重,并将当前层的权重输入预先设置的第一量化函数进行量化。
[0056] 上述当前层中各神经元的缩放因子可以是在各神经元的输出通道上基于当前层中各神经元的激活值计算得到的。在计算缩放因子时,首先获取当前层的权重,由于该权重为全精度的浮点型权重,为了减小神经网络的计算复杂度,将当前层的权重输入预先设置的第一量化函数进行量化,以将当前层的权重由高精度权重转换为低精度权重。上述对于当前层权重进行量化的第一量化函数的计算算式可以是:
[0057] Qw(Wl)=1/n||Wl||l1·sign(Wl)
[0058] 其中,Qw为第一量化函数的函数符号,Wl为神经网络中第l层的权重,n和c为第l层的输出和输入通道数,||Wl||l1表示Wl绝对值的累加,sign
为符号函数,也可以称为sgn。
[0059] 步骤(2):基于当前层中各神经元的激活值及量化后的当前层的权重确定当前层中各神经元的中间激活值。
[0060] 首先,在当前层的各个输出通道中分别对各通道在当前层中对应的神经元的激活值和量化后的当前层的权重进行卷积运算,得到当前层中各神经元的卷积运算结果。上述各输出通道是当前层中神经元与下一层中神经元的连接通道,每个输出通道都分别连接了当前层的任一神经元和下一层的任一神经元。当上述当前层为神经网络的第l层时,上述卷积运算的计算算式为:
[0061]
[0062] 其中, 为卷积运算符, 为输出通道所连接的第l层中的神经元的激活值,也即当前层的上一层的输出通道输出的激活值, 为量化后的第l层的权重。
[0063] 其次,将当前层中各神经元的卷积运算结果分别输入至预设的第一非线性激活函数,得到当前层中各神经元的中间激活值。上述第一非线性激活函数可以是能够应用于神经网络中的任意非线性激活函数。当上述当前层为神经网络的第l层时,当前输出通道所连接的当前层神经元的中间激活值的计算算式为:
[0064] Al=h(Zl)
[0065] 其中,上述Al为当前输出通道所连接的第l层神经元的中间激活值,上述Zl为卷积运算结果,h为第一非线性激活函数的函数符号。
[0066] 当神经网络包含BN(Batch Normalization)层时,将BN层设置于上述第一非线性激活函数之前,即首先对当前层中各神经元的激活值进行归一化计算,再将归一化后的结果输入第一非线性激活函数,得到当前层中各神经元的中间激活值。
[0067] 步骤(3):基于当前层中各神经元的中间激活值确定当前层中各神经元的缩放因子。
[0068] 上述神经元的缩放因子包括该神经元所连接的各个输出通道上的缩放因子,由于上述各神经元的中间激活值可以是各神经元对应连接的输出通道上计算得到的,通过在各神经元对应连接的输出通道上,基于当前层中各神经元的中间激活值确定当前层中各神经元的缩放因子,使每个神经元所连接的输出通道都可以基于该通道的缩放因子进行量化计算。
[0069] 由于现有的量化方法中的缩放因子一旦确定就不会改变,为了提升神经网络的表示能力,提升神经网络的性能,使缩放因子可以根据输入数据而自适应变化。本实施例提供了两种基于当前层中各神经元的中间激活值确定当前层中各神经元的缩放因子的具体实施方式:
[0070] 实施方式一:在该实施方式中,上述神经网络中的隐含层包括全连接层。
[0071] 对当前层中各神经元的中间激活值均执行以下操作:对中间激活值进行全局平均池化运算,得到池化运算结果;获取神经网络中第一全连接层的第一浮点型权重,将池化运算结果和全连接层的浮点型权重输入预设的第二非线性激活函数;获取神经网络中第二全连接层的第二浮点型权重,将第二非线性激活函数的输出结果输入预设的第三非线性激活函数,得到当前层中各神经元的缩放因子;其中,第一全连接层和第二全连接层为全连接层中的任意两层。该实施方式得到的缩放因子为施加于激活值的输出通道层面的缩放因子。为了提升神经网络的表现且尽可能少地增加计算复杂度,在上述缩放因子的计算中引入了两个全连接层,由于引入的全连接层的参数量和计算量占比很小,因此并不会对神经网络的计算复杂度产生较大的影响。
[0072] 在一种具体的实施方式中,上述当前层为第l层,第二非线性激活函数为ReLU激活函数,第三非线性激活函数为Sigmoid函数。当前层的各神经元的缩放因子的计算算式为:
[0073]
[0074] 其中, Wl2为第二浮点型权重,Wl1为第一浮点型权重,GAP(Al)为池化运算结果,Al为神经网络中第l层的神经元的中间激活值。在该实施方式中,施加于激活值的缩放因子 是基于通道层面的,因此上述二值卷积运算可以表示为:
[0075]
[0076] 其中,β=1/n||Wl||l1为施加于权重的通道层面的缩放因子, 表示用位运算实现的卷积。
[0077] 实施方式二:在该实施方式中,上述神经网络中的隐含层包括卷积层。
[0078] 对当前层中各神经元的中间激活值均执行以下操作:获取卷积层中大小为1x1的任意一层卷积层的权重;对中间激活值和卷积层的权重进行卷积运算,并将得到的卷积运算结果输入预设的第三非线性激活函数,获得当前层中各神经元的缩放因子。在当前层中神经元的输出通道上,将上述神经元的中间激活值通过只含有一个卷积核的1x1的卷积层,得到该输出通道所连接的神经元的缩放因子。该缩放因子为施加于激活值的位置层面的缩放因子。
[0079] 在一种具体的实施方式中,当前层为第l层,第三非线性激活函数Sigmoid函数。当前层的各神经元的缩放因子的计算算式为:
[0080]
[0081] 其中,Wl3为神经网络中任意一个大小为1x1的卷积层的权重, 为卷积运算符,Al为神经网络中第l层的神经元的中间激活值。在该实施方式中,施加于激活值的缩放因子是基于位置层面的,因此上述二值卷积运算可以表示为:
[0082]
[0083] 其中, d×d为卷积核的大小。
[0084] 为了减小神经网络的计算复杂度,本实施例提供了利用当前层中各神经元的缩放因子,在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算,输出当前层的下一层的各神经元的激活值的实施方式,具体可参照如下步骤1~步骤3执行:
[0085] 步骤1:将中间激活值分别输入至当前层中各神经元对应输出通道中预先设置的第二量化函数,得到各输出通道中量化后的中间激活值。
[0086] 由于上述量化计算可以是在神经元连接的输出通道上进行的,将神经元所连接的输出通道上得到的中间激活值输入预先设置的第二量化函数中,得到各输出通道中量化后的中间激活值Qa(Al),上述当前层为第l层,上述第二量化函数的计算算式可以是:
[0087] Qa(Al)=sign(Al)
[0088] 步骤2:基于各输出通道中量化后的中间激活值与各通道在当前层中对应的神经元的缩放因子的乘积,确定当前层中各神经元的激活值的量化计算结果。
[0089] 将神经元的输出通道中得到的上述量化后的中间激活值Qa(Al)与各输出通道在当前层中对应的神经元的缩放因子 的乘积,作为该输出通道所连接的神经元的激活值的量化计算结果,该量化计算结果为 其中,或者
[0090] 步骤3:将当前层中各神经元的激活值的量化计算结果作为当前层的下一层的各神经元的激活值。
[0091] 若当前层为第l层,第l层神经元的激活值的量化计算结果即为:
[0092]
[0093] 上述第l层神经元的激活值的量化计算结果即为第l层神经元的激活值量化计算后的输出激活值,该输出激活值也为该通道所连接的第l+1层的神经元的激活值。
[0094] 通过分别将神经网络中各隐含层作为当前层,可以依次得到隐含层各层神经元的激活值,直到根据隐含层的最后一层的神经元的激活值得到输出层的神经元的激活值,则该轮训练中对神经网络量化的前向传播过程完成,上述前向传播过程为计算神经元的激活值的过程。
[0095] 为了得到完成量化计算且训练完成的神经网络,本实施例提供的神经网络量化方法,还包括:当神经网络的各个隐含层均完成量化操作后,对当前的神经网络进行反向传播以更新神经网络中各层的权重。重复执行量化操作和反向传播的操作,直至神经网络完成迭代训练。将待检测图像输入量化后的神经网络,得到图像识别结果。在基于训练样本对神经网络的迭代训练过程的每一轮迭代训练中,首先基于量化的方法在前向传播中计算神经元的激活值,再对神经网络进行反向传播以更新神经网络中各层的权重,由于神经网络的量化计算中会使用到各层的权重,基于更新后的各层的权重再基于量化的方法在前向传播中计算神经元的激活值,重复进行上述前向传播和反向传播过程,直至达到预设的迭代训练次数,从而得到量化后的神经网络,该量化后的神经网络为完成样本迭代训练的神经网络。由于上述量化训练后的神经网络是基于训练样本训练得到的,将待测图像输入量化训练后的神经网络,通过使量化训练后的神经网络对待测图像进行诸如图像预处理、目标检测、图像分割或图像分类等图像处理操作,得到图像识别结果,并输出图像识别结果。
[0096] 本实施例提供的上述神经网络量化方法,通过利用基于通道层面的缩放因子或基于位置层面的缩放因子,经过量化计算得到神经网络各层的激活值,在尽可能少增加计算复杂度的情况下,在神经网络的量化计算中加入可以根据输入数据而变化的缩放因子,提升了神经网络的表现力,进而提升了神经网络的识别精度。
[0097] 实施例三:
[0098] 在前述实施例的基础上,本实施例提供了一种应用前述神经网络量化方法的具体示例,以将神经网络量化方法应用于一个L层的深度神经网络为例,具体可参照如下步骤a~步骤d执行:
[0099] 步骤a:预先在神经网络中各神经元之间的输出通道中设置目标量化算法。
[0100] 上述目标量化算法是对现有的量化算法的改进,现有的量化算法的计算方法参见如图3所示的现有的量化计算流程图,第l-1层任意一个神经元通过输出通道连接第l层的神经元,该输出通道上设置有现有的量化计算算法,图3中该通道的输入激活值为 该通道的输出激活值为 根据图3可以得到现有的量化算法的运算过程为:
[0101]
[0102] 由于现有的量化方法中的缩放因子一旦确定就不会改变,本实施例通过引入注意力机制,在神经元的输出通道上计算出可以根据输入数据变化的缩放因子,根据缩放因子施加的层面不同,本实施例增加的缩放因子包括通道层面的缩放因子和位置层面的缩放因子,具体可参照如下两个方式执行:
[0103] 方式一:本实施例提供的目标量化算法是在现有的量化算法的基础上加入通道层面的缩放因子得到的,上述目标量化算法设置在两个神经元之间的输出通道上,参见如图4所示的目标量化算法的量化计算流程图,神经网络的第l-1层中任意一个神经元通过输出通道连接第l层中神经元,图4中该通道的输入激活值为 利用目标量化算法对输入激活值 进行量化计算,得到该通道的输出激活值 由图4可以得到上述目标量化算法
的运算过程为:
[0104]
[0105] 本实施例提供的基于通道层面的缩放因子为 Wl1和Wl2分别为神经网络中任意两个全连接层的权重,通过引入两个全连接层,增加了神经网络的表现力。
[0106] 方式二:本实施例提供的目标量化算法是在现有的量化算法的基础上加入位置层面的缩放因子得到的,参见如图5所示的另一种目标量化算法的量化计算流程图,神经网络的第l-1层中任意一个神经元通过输出通道连接第l层中神经元,图5中该通道的输入激活值为 利用目标量化算法对输入激活值 进行量化计算,得到该通道的输出激活值由图5可以得到上述目标量化算法的运算过程为:
[0107]
[0108] 本实施例提供的基于位置层面的缩放因子为 上述基于通道层面的缩放因子和基于位置层面的缩放因子是可以根据输入数据而变化的,即上述基于通道层面的缩放因子和基于位置层面的缩放因子变成可学习的参数,通过迭代训练过程学习得到,而不是仅仅由神经网络中的权重得到,通过对权重和激活值施加有效的缩放因子可以增大网络的表示能力,显著提高了网络性能。
[0109] 上述Qw和Qa分别是量化权重和激活值的量化函数,量化函数在低精度网络中起着重要的作用,有效的量化函数可以显著提升神经网络的性能。上述量化函数的计算算式可以为:
[0110]
[0111] Qa(Al)=sign(Al)
[0112] 其中,上述W为神经网络的整体权重。上述量化函数Qw和Qa还可以是其他具有相同量化效果的量化函数。
[0113] 步骤b:在神经网络迭代训练过程中,对该神经网络进行前向传播,利用上述目标量化算法,得到神经网络中各神经元的激活值。
[0114] 步骤c:对神经网络进行反向传播更新神经网络的各层权重。
[0115] 步骤d:重复执行上述步骤b~步骤d,直至神经网络完成迭代训练,得到量化后的神经网络。
[0116] 本实施例提供的神经网络量化方法,通过利用基于通道层面的缩放因子或基于位置层面的缩放因子,经过量化计算得到神经网络各层的激活值,由于缩放因子是可以根据神经网络的输入数据而自适应变化,提升了神经网络的识别精度。
[0117] 实施例四:
[0118] 对应于实施例二中所提供的神经网络量化方法,本发明实施例提供了一种神经网络量化装置,参见图6所示的一种神经网络量化装置结构框图,该装置包括以下模块:
[0119] 初始值确定模块61,用于在神经网络的迭代训练过程中,基于神经网络的输入层接收到的输入数据确定输入层中各神经元的初始激活值,基于初始激活值确定输入层中各神经元的缩放因子,利用输入层中各神经元的缩放因子,在输入层的各个输出通道对输入层中各神经元的初始激活值进行量化计算,输出输入层的下一隐含层的各神经元的激活值。
[0120] 量化计算模块62,用于将神经网络的各个隐含层逐一作为当前层,对每个当前层均执行以下量化操作:接收当前层中各神经元的激活值,基于当前层中各神经元的激活值确定当前层中各神经元的缩放因子,利用当前层中各神经元的缩放因子,在当前层的各个输出通道对当前层中各神经元的激活值进行量化计算,输出当前层的下一层的各神经元的激活值。
[0121] 量化结束模块63,用于在迭代训练完成时,将当前神经网络作为量化后的神经网络。
[0122] 本实施例提供的上述神经网络量化装置,一方面,通过对当前层中各神经元的激活值进行量化计算,降低了神经网络的计算复杂度,另一方面,由于当前层中各神经元对应的缩放因子是基于当前层中各神经元的激活值确定的,而当前层中各神经元的激活值是基于输入数据得到的,从而使各神经元对应的缩放因子可以根据输入数据自适应变化,提升了神经网络的识别精度。
[0123] 在一种实施方式中,上述量化计算模块62,进一步用于获取当前层的权重,并将当前层的权重输入预先设置的第一量化函数进行量化;基于当前层中各神经元的激活值及量化后的当前层的权重确定当前层中各神经元的中间激活值;基于当前层中各神经元的中间激活值确定当前层中各神经元的缩放因子。
[0124] 在一种实施方式中,上述量化计算模块62,进一步用于将中间激活值分别输入至当前层中各神经元对应输出通道中预先设置的第二量化函数,得到各输出通道中量化后的中间激活值;基于各输出通道中量化后的中间激活值与各通道在当前层中对应的神经元的缩放因子的乘积,确定当前层中各神经元的激活值的量化计算结果;将当前层中各神经元的激活值的量化计算结果作为当前层的下一层的各神经元的激活值。
[0125] 在一种实施方式中,上述量化计算模块62,进一步用于在当前层的各个输出通道中分别对各通道在当前层中对应的神经元的激活值和量化后的当前层的权重进行卷积运算,得到当前层中各神经元的卷积运算结果;将当前层中各神经元的卷积运算结果分别输入至预设的第一非线性激活函数,得到当前层中各神经元的中间激活值。
[0126] 在一种实施方式中,上述隐含层包括全连接层;上述量化计算模块62,进一步用于对当前层中各神经元的中间激活值均执行以下操作:对中间激活值进行全局平均池化运算,得到池化运算结果;获取神经网络中第一全连接层的第一浮点型权重,将池化运算结果和全连接层的浮点型权重输入预设的第二非线性激活函数;获取神经网络中第二全连接层的第二浮点型权重,将第二非线性激活函数的输出结果输入预设的第三非线性激活函数,得到当前层中各神经元的缩放因子;其中,第一全连接层和第二全连接层为全连接层中的任意两层。
[0127] 在一种实施方式中,上述当前层为第l层,第二非线性激活函数为ReLU激活函数,第三非线性激活函数为Sigmoid函数;当前层的各神经元的缩放因子的计算算式为:
[0128]
[0129] 其中, Wl2为第二浮点型权重,Wl1为第一浮点型权重,GAP(Al)为池化运算结果,Al为神经网络中第l层的神经元的中间激活值。
[0130] 在一种实施方式中,上述隐含层包括卷积层;上述量化计算模块62,进一步用于对当前层中各神经元的中间激活值均执行以下操作:获取卷积层中大小为1x1的任意一层卷积层的权重;对中间激活值和卷积层的权重进行卷积运算,并将得到的卷积运算结果输入预设的第三非线性激活函数,获得当前层中各神经元的缩放因子。
[0131] 在一种实施方式中,上述当前层为第l层,第三非线性激活函数Sigmoid函数;当前层的各神经元的缩放因子的计算算式为:
[0132]
[0133] 其中,Wl3为神经网络中任意一个大小为1x1的卷积层的权重, 为卷积运算符,Al为神经网络中第l层的神经元的中间激活值。
[0134] 在一种实施方式中,参见如图7所示的神经网络量化装置结构框图,上述装置还包括:
[0135] 反向传播模块74,用于当神经网络的各个隐含层均完成量化操作后,对当前的神经网络进行反向传播以更新神经网络中各层的权重。
[0136] 重复操作模块75,用于重复执行上述量化操作和反向传播的操作,直至神经网络完成迭代训练。
[0137] 图像识别模块76,用于将待检测图像输入所述量化后的神经网络,得到图像识别结果。
[0138] 本实施例提供的上述神经网络量化装置,通过利用基于通道层面的缩放因子或基于位置层面的缩放因子,经过量化计算得到神经网络各层的激活值,在尽可能少增加计算复杂度的情况下,在神经网络的量化计算中加入可以根据输入数据而变化的缩放因子,提升了神经网络的表现力,进而提升了神经网络的识别精度。
[0139] 本实施例所提供的装置,其实现原理及产生的技术效果和前述实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
[0140] 实施例五:
[0141] 本发明实施例提供了一种计算机可读介质,其中,所述计算机可读介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现上述实施例所述的神经网络模型训练方法。
[0142] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统具体工作过程,可以参考前述实施例中的对应过程,在此不再赘述。
[0143] 本发明实施例所提供的神经网络量化方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0144] 另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0145] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0146] 在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0147] 最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈