一种提升定点神经网络模型精度的方法、装置及电子设备与流程

文档序号:35382927发布日期:2023-09-09 11:22阅读:21来源:国知局
一种提升定点神经网络模型精度的方法、装置及电子设备与流程

本技术实施例涉及卷积神经网络领域,尤其涉及一种提升定点神经网络模型精度的方法、装置及电子设备。


背景技术:

1、随着深度学习的发展,大量的人工智能(artificial intelligence,ai)模型可以用于部署在端侧设备(例如智能手机、平板电脑、个人电脑、智慧屏、智能电视以及智能可穿戴设备)上运行。示例性的,可以将卷积神经网络(onvolutional neural network,cnn)部署在端侧设备上,利用卷积神经网络提取图像或者视频的视觉特征,以达到例如人脸识别、人脸追踪、关键特征点检测等目的。

2、人工智能模型一般为浮点模型,浮点模型运行过程中涉及的计算均为浮点数的计算。由于浮点数运算速度较低且内存消耗大,在将模型部署在端侧设备上时,一般将浮点模型量化为定点模型后再进行部署。利用定点数的计算代替浮点数的计算,可以达到降低时延和降低端侧设备功耗的目的。

3、但是,由于量化是从一个值域范围到另一个值域范围映射的过程,那么浮点数的值域范围的大小,将影响量化后定点数的精度,进一步影响模型的表征能力。现有的模型某些层的量化范围过大,影响了该层的数据分布,进而影响整个量化的精度,因此现有模型量化存在精度损失大、模型表征能力差的问题。


技术实现思路

1、本技术实施例提供了一种提升定点神经网络模型精度的方法、装置及电子设备,以解决现有神经网络模型量化后精度差的问题。

2、第一方面,本技术实施例提供一种提升定点神经网络模型精度的方法,模型包括逐通道卷积模块和第一逐点卷积模块,逐通道卷积模块包括逐通道卷积层,第一逐点卷积模块包括第一逐点卷积层、第一批归一化层和第一非线性激活函数;方法包括:将第一定点数据输入至逐通道卷积模块中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据;其中:第一定点数据和第二定点数据均包含n个通道的数据,n大于或者等于1;逐通道卷积层包括n个卷积核,n个卷积核与n个通道一一对应;n个卷积核用于分别与第一定点数据中的对应通道的数据进行卷积操作,以得到第二定点数据中的n个通道的数据;将第二定点数据输入至第一逐点卷积模块中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作,利用第一批归一化层对第二定点数据进行归一化处理,以及利用第一非线性激活函数对第二定点数据进行映射,得到第一浮点数据;其中:第一浮点数据包含m个通道的数据,m大于或者等于1;第一逐点卷积层包括m个卷积核,其中,m个卷积核的长度为1,宽度为1,高度为n,m个卷积核与m个通道一一对应;m个卷积核用于分别对第二定点数据进行卷积操作;利用第一伪量化节点将第一浮点数据量化为定点数,得到第三定点数据。

3、本技术实施例提供一种提升定点神经网络模型精度的方法,该方法中第一定点数据经过逐通道卷积层、第一逐点卷积层、第一批归一化层和第一非线性激活函数处理后,可以得到第一浮点数据,并且该方法可以控制第一浮点数据的离散程度。该方法还可以对离散程度较小的第一浮点数据进行量化,得到第三定点数据。这样,可以减小量化后模型的精度损失,提升模型表达能力。

4、在一些可实现的方式中,利用第二伪量化节点将第一定点数据由低比特位数据重量化为高比特位数据,得到第一子数据;第一子数据的数据类型为定点数;低比特位数据的数据类型为uint8或者uint16,高比特位数据的数据类型为uint32;利用第一定点权重和逐通道卷积层的卷积核对第一定点数据的目标位置进行乘法计算,得到多个第二子数据;第二子数据的数据类型为定点数;利用第二伪量化节点将第二子数据由高比特位数据量化为低比特位数据,得到第二定点数据。

5、这样,第一定点数据经过卷积后形成了第二定点数据,并且第二定点数据所涉及的后续计算可以采用定点计算,可以提高端侧设备的运算速度。

6、在一些可实现的方式中,利用第一定点权重和逐通道卷积层的卷积核对第一定点数据的目标位置进行乘法计算,得到多个第二子数据的步骤后,还包括:将每一第二子数据均与第一偏置相加,得到多个第三子数据,第一偏置的数据类型为定点数;利用第二伪量化节点将所有第三子数据由高比特位数据量化为低比特位数据,得到第二定点数据。

7、在一些可实现的方式中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作的步骤前,还包括:利用第四伪量化节点将第一逐点卷积层对应的第二浮点权重量化为第二定点权重。这样,第一逐点卷积层的乘法计算为定点计算,可以提高端侧设备的运算速度。

8、在一种可实现的方式中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,方法还包括:获取原始输入图片对应的n个通道的浮点数据;将原始输入图片对应的n个通道的浮点数据量化为定点数,得到第一定点数据。

9、在一种可实现的方式中,模型还包括第二逐点卷积模块,第二逐点卷积模块包括第二逐点卷积层、第二批归一化层和第二非线性激活函数;利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,方法还包括:获取原始输入图片对应的k个通道的浮点数据,k小于或者等于n;将原始输入图片对应的k个通道的浮点数据量化为定点数,得到原始定点数据;将原始定点数据输入至第二逐点卷积模块中,利用第二逐点卷积层对原始定点数据执行逐点卷积操作,利用第二批归一化层对原始定点数据进行批归一化处理,以及利用第二非线性激活函数对原始定点数据进行映射,得到第二浮点数据;其中:第二浮点数据包括n个通道的数据,第二逐点卷积层包括n个卷积核,其中,n个卷积核的长度为1,宽度为1,高度为k,n个卷积核与n个通道一一对应;n个卷积核用于分别对原始定点数据进行卷积操作;利用第五伪量化节点将第二浮点数据量化为定点数,得到第一定点数据。这样,可以得到精度高、表达能力好的模型。

10、在一种可实现的方式中,利用第二逐点卷积层对原始定点数据执行逐点卷积操作的步骤前,还包括:利用第六伪量化节点将第二逐点卷积层对应的第三浮点权重量化为第三定点权重。这样,第二逐点卷积层的乘法计算为定点计算,可以提高端侧设备的运算速度。

11、在一种可实现的方式中,第一非线性激活函数和第二非线性激活函数为relu函数。由于第一非线性激活函数和第二非线性激活函数可能为神经网络模型较为靠前的层,或者,为除神经网络模型最后一层外的其他层,如果第一非线性激活函数和第二非线性激活函数为relu6函数,那么relu6函数函数会限制输出数据的输出范围,在较早的层里扭曲了输出数据的分布范围,导致得到对量化不友好的输出数据的分布,量化后影响模型的表征能力。因此,本技术实施例中,第一非线性激活函数和第二非线性激活函数采用relu函数,这样,可以保证第一逐点卷积层的输出结果的范围不被限制,尤其是输出数据的最大值不会被限制,使得输出结果可以准确表达第一浮点数据本应表达的信息,保证模型的表征能力。

12、第二方面,本技术实施例还提供一种提升定点神经网络模型精度的装置,模型包括逐通道卷积模块和第一逐点卷积模块,逐通道卷积模块包括逐通道卷积层,第一逐点卷积模块包括第一逐点卷积层、第一批归一化层和第一非线性激活函数;装置包括:第一卷积模块,用于将第一定点数据输入至逐通道卷积模块中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据;其中:第一定点数据和第二定点数据均包含n个通道的数据,n大于或者等于1;逐通道卷积层包括n个卷积核,n个卷积核与n个通道一一对应;n个卷积核用于分别与第一定点数据中的对应通道的数据进行卷积操作,以得到第二定点数据中的n个通道的数据;第二卷积模块,用于将第二定点数据输入至第一逐点卷积模块中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作,利用第一批归一化层对第二定点数据进行归一化处理,以及利用第一非线性激活函数对第二定点数据进行映射,得到第一浮点数据;其中:第一浮点数据包含m个通道的数据,m大于或者等于1;第一逐点卷积层包括m个卷积核,其中,m个卷积核的长度为1,宽度为1,高度为n,m个卷积核与m个通道一一对应;m个卷积核用于分别对第二定点数据进行卷积操作;量化模块,用于利用第一伪量化节点将第一浮点数据量化为定点数,得到第三定点数据。

13、本技术实施例提供一种提升定点神经网络模型精度的装置,该装置中第一定点数据经过逐通道卷积层、第一逐点卷积层、第一批归一化层和第一非线性激活函数处理后,可以得到第一浮点数据,并且该装置可以控制第一浮点数据的离散程度。该方法还可以对离散程度较小的第一浮点数据进行量化,得到第三定点数据。这样,可以减小量化后模型的精度损失,提升模型表达能力。

14、第三方面,本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机执行上述各方面及其各个实现方式中的提升定点神经网络模型精度的方法。

15、第四方面,本技术实施例还提供一种电子设备,包括:处理器和存储器;存储器存储有程序指令,当程序指令被处理器执行时,使得电子设备执行上述各方面及其各个实现方式中的提升定点神经网络模型精度的方法。

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