一种提升定点神经网络模型精度的方法、装置及电子设备制造方法及图纸

技术编号:38768307 阅读:11 留言:0更新日期:2023-09-10 10:41
本申请提供一种提升定点神经网络模型精度的方法、装置及电子设备,方法包括:将第一定点数据输入至逐通道卷积模型中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据;将第二定点数据输入至第一逐点卷积模块中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作,利用第一批归一化层对第二定点数据进行归一化处理,以及利用第一非线性激活函数对第二定点数据进行映射,得到第一浮点数据;利用第一伪量化节点将第一浮点数据量化为定点数,得到第三定点数据。本申请提供的方法可以控制模型中需要量化的参数的范围,可以减小量化后模型的精度损失。在不增加模型参数量的基础上,能够取得更好的定点效果,提升模型表达能力。升模型表达能力。升模型表达能力。

【技术实现步骤摘要】
一种提升定点神经网络模型精度的方法、装置及电子设备


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

技术介绍

[0002]随着深度学习的发展,大量的人工智能(artificial intelligence,AI)模型可以用于部署在端侧设备(例如智能手机、平板电脑、个人电脑、智慧屏、智能电视以及智能可穿戴设备)上运行。示例性的,可以将卷积神经网络(onvolutional neural network,CNN)部署在端侧设备上,利用卷积神经网络提取图像或者视频的视觉特征,以达到例如人脸识别、人脸追踪、关键特征点检测等目的。
[0003]人工智能模型一般为浮点模型,浮点模型运行过程中涉及的计算均为浮点数的计算。由于浮点数运算速度较低且内存消耗大,在将模型部署在端侧设备上时,一般将浮点模型量化为定点模型后再进行部署。利用定点数的计算代替浮点数的计算,可以达到降低时延和降低端侧设备功耗的目的。
[0004]但是,由于量化是从一个值域范围到另一个值域范围映射的过程,那么浮点数的值域范围的大小,将影响量化后定点数的精度,进一步影响模型的表征能力。现有的模型某些层的量化范围过大,影响了该层的数据分布,进而影响整个量化的精度,因此现有模型量化存在精度损失大、模型表征能力差的问题。

技术实现思路

[0005]本申请实施例提供了一种提升定点神经网络模型精度的方法、装置及电子设备,以解决现有神经网络模型量化后精度差的问题。
[0006]第一方面,本申请实施例提供一种提升定点神经网络模型精度的方法,模型包括逐通道卷积模块和第一逐点卷积模块,逐通道卷积模块包括逐通道卷积层,第一逐点卷积模块包括第一逐点卷积层、第一批归一化层和第一非线性激活函数;方法包括:将第一定点数据输入至逐通道卷积模块中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据;其中:第一定点数据和第二定点数据均包含n个通道的数据,n大于或者等于1;逐通道卷积层包括n个卷积核,n个卷积核与n个通道一一对应;n个卷积核用于分别与第一定点数据中的对应通道的数据进行卷积操作,以得到第二定点数据中的n个通道的数据;将第二定点数据输入至第一逐点卷积模块中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作,利用第一批归一化层对第二定点数据进行归一化处理,以及利用第一非线性激活函数对第二定点数据进行映射,得到第一浮点数据;其中:第一浮点数据包含m个通道的数据,m大于或者等于1;第一逐点卷积层包括m个卷积核,其中,m个卷积核的长度为1,宽度为1,高度为n,m个卷积核与m个通道一一对应;m个卷积核用于分别对第二定点数据进行卷积操作;利用第一伪量化节点将第一浮点数据量化为定点数,得到第三定点数据。
[0007]本申请实施例提供一种提升定点神经网络模型精度的方法,该方法中第一定点数
据经过逐通道卷积层、第一逐点卷积层、第一批归一化层和第一非线性激活函数处理后,可以得到第一浮点数据,并且该方法可以控制第一浮点数据的离散程度。该方法还可以对离散程度较小的第一浮点数据进行量化,得到第三定点数据。这样,可以减小量化后模型的精度损失,提升模型表达能力。
[0008]在一些可实现的方式中,利用第二伪量化节点将第一定点数据由低比特位数据重量化为高比特位数据,得到第一子数据;第一子数据的数据类型为定点数;低比特位数据的数据类型为uint8或者uint16,高比特位数据的数据类型为uint32;利用第一定点权重和逐通道卷积层的卷积核对第一定点数据的目标位置进行乘法计算,得到多个第二子数据;第二子数据的数据类型为定点数;利用第二伪量化节点将第二子数据由高比特位数据量化为低比特位数据,得到第二定点数据。
[0009]这样,第一定点数据经过卷积后形成了第二定点数据,并且第二定点数据所涉及的后续计算可以采用定点计算,可以提高端侧设备的运算速度。
[0010]在一些可实现的方式中,利用第一定点权重和逐通道卷积层的卷积核对第一定点数据的目标位置进行乘法计算,得到多个第二子数据的步骤后,还包括:将每一第二子数据均与第一偏置相加,得到多个第三子数据,第一偏置的数据类型为定点数;利用第二伪量化节点将所有第三子数据由高比特位数据量化为低比特位数据,得到第二定点数据。
[0011]在一些可实现的方式中,利用第一逐点卷积层对第二定点数据执行逐点卷积操作的步骤前,还包括:利用第四伪量化节点将第一逐点卷积层对应的第二浮点权重量化为第二定点权重。这样,第一逐点卷积层的乘法计算为定点计算,可以提高端侧设备的运算速度。
[0012]在一种可实现的方式中,利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,方法还包括:获取原始输入图片对应的n个通道的浮点数据;将原始输入图片对应的n个通道的浮点数据量化为定点数,得到第一定点数据。
[0013]在一种可实现的方式中,模型还包括第二逐点卷积模块,第二逐点卷积模块包括第二逐点卷积层、第二批归一化层和第二非线性激活函数;利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,方法还包括:获取原始输入图片对应的k个通道的浮点数据,k小于或者等于n;将原始输入图片对应的k个通道的浮点数据量化为定点数,得到原始定点数据;将原始定点数据输入至第二逐点卷积模块中,利用第二逐点卷积层对原始定点数据执行逐点卷积操作,利用第二批归一化层对原始定点数据进行批归一化处理,以及利用第二非线性激活函数对原始定点数据进行映射,得到第二浮点数据;其中:第二浮点数据包括n个通道的数据,第二逐点卷积层包括n个卷积核,其中,n个卷积核的长度为1,宽度为1,高度为k,n个卷积核与n个通道一一对应;n个卷积核用于分别对原始定点数据进行卷积操作;利用第五伪量化节点将第二浮点数据量化为定点数,得到第一定点数据。这样,可以得到精度高、表达能力好的模型。
[0014]在一种可实现的方式中,利用第二逐点卷积层对原始定点数据执行逐点卷积操作的步骤前,还包括:利用第六伪量化节点将第二逐点卷积层对应的第三浮点权重量化为第三定点权重。这样,第二逐点卷积层的乘法计算为定点计算,可以提高端侧设备的运算速度。
[0015]在一种可实现的方式中,第一非线性激活函数和第二非线性激活函数为ReLU函
数。由于第一非线性激活函数和第二非线性激活函数可能为神经网络模型较为靠前的层,或者,为除神经网络模型最后一层外的其他层,如果第一非线性激活函数和第二非线性激活函数为ReLU6函数,那么ReLU6函数函数会限制输出数据的输出范围,在较早的层里扭曲了输出数据的分布范围,导致得到对量化不友好的输出数据的分布,量化后影响模型的表征能力。因此,本申请实施例中,第一非线性激活函数和第二非线性激活函数采用ReLU函数,这样,可以保证第一逐点卷积层的输出结果的范围不被限制,尤其是输出数据的最大值不会被限制,使得输出结果可以准确表达第一浮点数据本应表达的信息,保证模型的表征能力。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种提升定点神经网络模型精度的方法,其特征在于,所述模型包括逐通道卷积模块和第一逐点卷积模块,所述逐通道卷积模块包括逐通道卷积层,所述第一逐点卷积模块包括第一逐点卷积层、第一批归一化层和第一非线性激活函数;所述方法包括:将第一定点数据输入至所述逐通道卷积模块中,利用所述逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据;其中:所述第一定点数据和所述第二定点数据均包含n个通道的数据,n大于或者等于1;所述逐通道卷积层包括n个卷积核,所述n个卷积核与所述n个通道一一对应;所述n个卷积核用于分别与所述第一定点数据中的对应通道的数据进行卷积操作,以得到所述第二定点数据中的n个通道的数据;将所述第二定点数据输入至所述第一逐点卷积模块中,利用所述第一逐点卷积层对所述第二定点数据执行逐点卷积操作,利用所述第一批归一化层对所述第二定点数据进行归一化处理,以及利用所述第一非线性激活函数对所述第二定点数据进行映射,得到第一浮点数据;其中:所述第一浮点数据包含m个通道的数据,m大于或者等于1;所述第一逐点卷积层包括m个卷积核,其中,所述m个卷积核的长度为1,宽度为1,高度为n,所述m个卷积核与所述m个通道一一对应;所述m个卷积核用于分别对所述第二定点数据进行卷积操作;利用第一伪量化节点将所述第一浮点数据量化为定点数,得到第三定点数据。2.根据权利要求1所述的提升定点神经网络模型精度的方法,其特征在于,所述利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据,包括:利用第二伪量化节点将所述第一定点数据由低比特位数据重量化为高比特位数据,得到第一子数据;所述第一子数据的数据类型为定点数;所述低比特位数据的数据类型为uint8或者uint16,所述高比特位数据的数据类型为uint32;利用第一定点权重和所述逐通道卷积层的卷积核对所述第一定点数据的目标位置进行乘法计算,得到多个第二子数据;所述第二子数据的数据类型为定点数;利用所述第二伪量化节点将所述第二子数据由高比特位数据量化为低比特位数据,得到所述第二定点数据。3.根据权利要求2所述的提升定点神经网络模型精度的方法,其特征在于,所述利用第一定点权重和所述逐通道卷积层的卷积核对所述第一定点数据的目标位置进行乘法计算,得到多个第二子数据的步骤后,还包括:将每一所述第二子数据均与第一偏置相加,得到多个第三子数据,所述第一偏置的数据类型为定点数;利用所述第二伪量化节点将所有所述第三子数据由高比特位数据量化为低比特位数据,得到所述第二定点数据。4.根据权利要求3所述的提升定点神经网络模型精度的方法,其特征在于,所述利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,还包括:利用第三伪量化节点将所述逐通道卷积层对应的第一浮点权重量化为所述第一定点权重。5.根据权利要求1所述的提升定点神经网络模型精度的方法,其特征在于,所述利用所述第一逐点卷积层对所述第二定点数据执行逐点卷积操作的步骤前,还包括:利用第四伪量化节点将所述第一逐点卷积层对应的第二浮点权重量化为所述第二定
点权重。6.根据权利要求1所述的提升定点神经网络模型精度的方法,其特征在于,所述利用逐通道卷积层对第一定点数据执行逐通道卷积操作,得到第二定点数据的步骤前,所述方法还包括:获取原始输入图片对应的n个通道的浮点...

【专利技术属性】
技术研发人员:杨逸帆董云鹏
申请(专利权)人:荣耀终端有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1