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

神经网络模型的运行方法、可读介质和电子设备与流程

2022-05-18 07:26:05 来源:中国专利 TAG:

神经网络模型的运行方法、可读介质和电子设备
1.本技术要求于2021年12月31日提交中国专利局、申请号为202111677116.5、申请名称为“神经网络模型的运行方法”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及人工智能领域,特别涉及一种神经网络模型的运行方法、可读介质和电子设备。


背景技术:

3.随着人工智能(artificial intelligence,ai)的迅速发展,神经网络模型在人工智能领域的应用越来越广泛。为提高神经网络模型的运行精度,通常需要对神经网络模型中的算子的输出结果进行归一化。例如,在alexnet网络中,可以通过局部响应归一化(local response normalization,lrn)算子对线性整流(rectified linear unit,relu)算子的输出数据进行归一化。
4.但是由于lrn算子中包括累加、乘法、除法、求指数幂等运算,而用于运行神经网络模型的运算单元,例如神经网络处理器(neural-network processing unit,npu),为定点运算单元,并没有能够直接实现lrn算子中的求指数幂、除法等非线性运算的电路,而是通过迭代求解来实现通过lrn算子对relu算子的输出进行归一化的运算,速度慢且占用npu的大量硬件资源,降低了电子设备运行神经网络模型的速度。


技术实现要素:

5.有鉴于此,本技术实施例提供了神经网络模型的运行方法、可读介质和电子设备。
6.第一方面,本技术实施例提供了一种神经网络模型的运行方法,应用于电子设备,包括:在运行神经网络模型的过程中检测到第一运算,第一运算包括第一运算部分,其中,第一运算部分包括至少一个非线性运算因子;从第一数据矩阵中,获取第一运算的第一输入数据;生成第一输入数据的第一查表参数;确定索引表中与第一查表参数对应的第一索引值,第一索引值对应的浮点数与第一查表参数对应的浮点数数值相同;获取索引表中与第一索引值对应的第一查表结果,其中,第一查表参数与第一索引值为定点数,并且第一查表结果为预先将第一索引值作为第一运算部分的输入数据计算得到的定点数结果;基于第一查表结果确定第一运算部分的运算结果。
7.也即是说,电子设备在运行神经网络模型中,若检测到第一运算,例如通过lrn算子对第一输入数据进行归一化的运算,可以通过确定出第一输入数据对应的第一查表参数(例如下文的查表索引值),基于第一查表参数从预设的索引表(例如下文的查找表)中,获取第一运算中包括非线性运算因子的第一运算部分(例如下文的查表项)的定点数查表结果,再根据查表结果即可确定第一运算部分的定点数运算结果(例如下文的查表结果),而无需进行复杂的非线性运算,降低了电子设备运行神经网络模型时占用的硬件资源,提高
了电子设备运行包括非线性因子的第一运算的速度。
8.在上述第一方面的一种可能实现中,上述生成第一输入数据的第一查表参数,包括:从至少一个第二数据矩阵中获取与第一输入数据对应的至少一个第二输入数据,并将第一运算部分中,包括第一输入数据和第二输入数据的第一子运算的运算结果,作为第一输入数据的第一查表参数,其中,第一子运算只包括线性运算因子,第二输入数据在第二数据矩阵中的行和列与第一输入数据在第一数据矩阵中的行和列相同。
9.也即是说,第一运算部分的运算结果随第一输入数据和第二输入数据的变化而变化,预设的索引表中存储的是以第一运算部分中包括第一输入数据和第二输入数据的线性运算的子运算的结果为索引,第一运算部分的对应结果,而非对于每一个第一输入数据和第二输入数据的组合都存储一个第一运算部分对应的结果,减小了索引表的大小,提高了电子设备查表的速度,从而进一步提高了电子设备运行包括非线性因子的第一运算的速度。
10.在上述第一方面的一种可能实现中,上述第一查表参数的量化位数为m,索引表中的索引值的量化位数为n;并且确定索引表中与第一查表参数对应的第一索引值,包括:在m小于或等于n的情况下,第一索引值为索引表中与第一查表参数相等的索引值;在m大于n的情况下,第一索引值为索引表中与第一查表参数对应的二进制数的高n位相等的索引值。
11.也即是说,索引表中的索引值的量化位数可以根据第一运算的精度需要进行设定,在第一查表参数的量化位数小于或等于索引值的量化位数的情况下,直接以与第一查表参数相同的索引值对应的结果为第一运算部分的查表结果,在第一查表的量化位数大于索引值的量化位数的情况下,以与第一查表参数的高n位相同的索引值对应的结果为第一运算部分的查表结果。从而可以根据第一运算的精度需要来设置索引表的量化位数,以减小索引表的大小,提高查表速度,进而提高电子设备运行包括非线性因子的第一运算的速度。
12.在上述第一方面的一种可能实现中,上述基于第一查表结果确定第一运算的运算结果,包括:在m小于或等于n的情况下,以第一查表结果为第一运算部分的运算结果。
13.在上述第一方面的一种可能实现中,上述基于第一查表结果确定第一运算的运算结果,包括:在m大于n的情况下,基于第一索引值加1得到的第二索引值,从索引表中获取第二索引值对应的第二查表结果;确定第二查表结果减去第一查表结果的差值,并将差值与第一查表参数减去第一索引值的差值相乘后再向右移m-n位,得到修正值;将修正值与第一查表结果的和作为第一运算部分的运算结果。
14.也即是在第一查表参数的量化位数大于索引值的量化位数的情况下,通过上述步骤进行插值查表,从而可以提高查表结果的精度,进而提高电子设备运行神经网络模型的精度。
15.在上述第一方面的一种可能实现中,上述第一运算还包括第二运算部分;并且上述方法还包括:基于第一运算部分的运算结果和第二运算部分的运算结果的线性运算,确定第一运算的定点数运算结果。
16.在上述第一方面的一种可能实现中,第一运算为利用lrn算子对待归一化数据集中的第一输入数据进行归一化的运算,待归一化数据集包括n(n》1)个数据矩阵,并且第一
运算通过以下公式定义:其中,为第一输入数据,表示待归一化数据集中第i(1≤i≤n)个数据矩阵中的第x行第y列的数据;为第一运算的运算结果,表示第一输入数据的归一化结果;k、α、β、n为超参数;第一运算部分包括第二运算部分包括
17.在上述第一方面的一种可能实现中,上述第一查表参数根据以下公式确定:其中,表示待归一化数据集中第j(max(0,i-n/2)≤j≤min(n,i-n/2))个数据矩阵中的第x行第y列的数据对应的定点数。
18.在上述第一方面的一种可能实现中,上述基于第一运算部分的运算结果和第二运算部分的运算结果的线性运算,确定第一运算的定点数运算结果,包括:从索引表中获取预先存储的缩放系数和移位数;将第一运算部分的运算结果和第一输入数据对应的定点数相乘后,再乘以缩放系数,并将所得的乘积向左移移位数位,得到第一运算的定点数运算结果。
19.也即是说,在本技术实施例中,通过查表得到第一运算部分的定点数查表结果,将该结果与输入数据的定点数的乘积与预设的缩放系数相乘,再将相乘的结果向左移预设的移位数位,即可得到通过lrn算子对第一输入数据进行归一化的定点数结果,而无需进行复杂的非线性运算,从而提高了电子设备运算包括lrn算子的神经网络模型的速度。
20.第二方面,本技术实施例提供了一种可读介质,该可读介质中包含有指令,当指令被电子设备的处理器执行时使电子设备实现上述第一方面以及上述第一方面的各种可能实现提供的任意一种神经网络模型的运行方法。
21.第三方面,本技术实施提供了一种电子设备,该电子设备包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令;以及处理器,是电子设备的处理器之一,用于运行指令以使电子设备实现上述第一方面以及上述第一方面的各种可能实现提供的任意一种的神经网络模型的运行方法。
附图说明
22.图1根据本技术的一些实施例,示出了一种神经网络模型的结构示意图;
23.图2根据本技术的一些实施例,示出了一种神经网络模型10的卷积层和激活层计算过程示意图;
24.图3根据本技术的一些实施例,示出了一种查找表30的示意图;
25.图4根据本技术的一些实施例,示出了一种神经网络模型的运行方法的流程示意
图;
26.图5根据本技术的一些实施例,示出了一种根据索引值确定查表结果的流程图;
27.图6根据本技术的一些实施例,示出了一种插值查表的过程示意图;
28.图7根据本技术的一些实施例,示出了一种电子设备100的结构示意图。
具体实施方式
29.本技术的说明性实施例包括但不限于神经网络模型的运行方法、介质和电子设备。
30.为了更加清楚的理解本技术,现对神经网络模型的结构进行说明。
31.图1根据本技术的一些实施例,示出了一种神经网络模型的结构示意图。如图1所示,神经网络模型10包括输入层11、卷积层12、激活层13,归一化层14,全连接层15和输出层16。其中,卷积层12通过多个卷积核对输入图像进行特征提取,得到多个特征矩阵;激活层13用于对各特征矩阵进行激活,例如通过relu算子对各特征矩阵进行激活,以提高后续层的运算速度;归一化层14为通过lrn算子对激活层13的输出数据进行归一化;全连接层15用于对输入图像数据进行分类,例如得到输入图像属于各预设图像类别的概率;输出层16用于输出输入图像的类别,例如将输入图像的类别确定为前述概率最大的预设图像类别。
32.可以理解,神经网络模型10的结构只是一种示例,在另一些实施例中,神经网络模型可以是任意包括lrn算子的神经网络模型,在此不做限定。
33.可以理解,在一些实施例中,预设的图像类别可以包括:风景、人物、动物等。
34.可以理解,lrn算子可以通过以下公式(1)定义。
[0035][0036]
其中表示第i组输入数据的第x行第y列的数据;第i组归一化结果的第x行第y列的数据;n为输入数据的组数;k、α、β、n为超参数,由神经网络模型在部署到电子设备前确定,也即是说,对于一个待运行的神经网络模型,超参数k、α、β、n为已知量。
[0037]
可以理解,上述超参数k、α、β、n也可以根据实际的应用场景进行调整,例如在一些实施例中,可以将α/n替换为一个超参数,本技术实施例不做限定。
[0038]
例如,图2根据本技术的一些实施例,示出了神经网络模型10中卷积层12和激活层13的计算过程示意图。如图2所示,输入图像数据矩阵a为9
×
9的矩阵;卷积层12中包括9个3
×
3的卷积核ki(i=1,2,

,9),矩阵a和ki分别卷积,得到9个卷积结果hi(i=1,2,

,9);激活层13的激活函数为relu激活函数,用于将hi中小于0的元素设置为0,得到9组待归一化的数据ai(i=1,2,

,9),即是公式(1)中n=9。
[0039]
例如,参考图2,假设经过卷积核k3卷积计算和激活计算后经过卷积核k4卷积计算和激活计算后经过卷积核k5卷积计算和激活计算后如此,可以计算得到待归一化数据归一化后的结果
[0040]
假设i=4,x=1,y=9,n=2,k=2,α=10-5
,β=0.75基于公式(1)可以得到:
[0041][0042]
由公式(1)可知,lrn算子中包括累加、乘法、除法、求指数幂等运算,而用于运行神经网络模型的运算单元,例如npu,为定点运算单元,并不能直接通过硬件实现上述运算中的求指数幂、除法等非线性运算,而是通过迭代求解来实现通过lrn算子对relu算子的输出进行归一化的运算,速度慢且占用npu的大量硬件资源,降低了电子设备运行神经网络模型的速度。
[0043]
为了解决上述问题,本技术实施例提供了一种lrn算子的运算方法,通过将lrn算子中的非线性运算设置为查表项,以将lrn算子等价为查表项和待归一化数据的乘积,并预先构建用于存储基于输入数据确定的索引值和对应的查表项查表结果的对应关系的查找表,从而使得npu在通过lrn算子对进行归一化的过程中,可以基于待归一化数据确定查表的索引值,并根据索引值从查找表中查询出索引值对应的查表项查表结果,再将查表结果和待归一化数据相乘即可得到对的归一化结果。如此,npu无需进行复杂的非线性运算,提高了npu对数据进行lrn归一化的速度,从而提高了神经网络模型的运行速度。
[0044]
可以理解,上述非线性运算(也可以称为非线性运算因子)是npu不能直接通过硬件电路实现,而是需要通过其他线性运算来迭代求解的运算,包括但不限于除法、幂指数、倒数等。其中,线性运算可以包括乘法、加法、减法、左移、右移等。
[0045]
具体地,从公式(1)可知,不是仅随第i组数据变化,而是随max(0,i-n/2)组至第且min(i n/2,n)组数据变化,因此,若直接以作为查表项的索引值,会导致查找表数据量过大,占用存储空间大且不利于快速查找到查表项的查找结果,进而影响神经网络模型的运行速度。因此,在一些实施例中,可以以如下公式(2)定义的lut_in作为查表项的查表索引,如下公式(3)定义的lut_out作为查表项的查表结果:
[0046][0047][0048]
从而结合公式(1)至公式(3)可知:
[0049][0050]
也即是说,基于公式(2)和公式(3)可知,查表项即为lrn算子中包括非线性运算的
部分查表过程即是根据索引值lut_in查找到查表值lut_out,即前述非线性运算部分的值。因此,通过预先构建存储有索引值lut_in和查表值lut_out的对应关系的查找表,电子设备在通过lrn算子对进行归一化的过程中,可以先根据(j取[max(0,i-n/2),min(n,i n/2)],确定出索引值lut_in,即查表索引值,再根据lut_in从查找表中获取到查表值lut_out,即查表结果,最后计算和查表结果的乘积即可得到的值。
[0051]
下面介绍基于上述公式(1)至公式(4)构建查找表的过程。
[0052]
为便于描述,在此定义在本技术实施例,x_f表示变量x的浮点数,x_q表示变量x的定点数,x_scale表示x_f量化为x_q的缩放系数。假设x_q为对称量化的n位定点数,则x_f、x_scale与x_q的关系可以通过如下公式(5)和公式(6)确定。
[0053][0054]
x_q=round(x_scale
·
x_f)
ꢀꢀꢀ
(6)
[0055]
其中,max(a)表示求a的最大值,min(a)表示求a的最小值,abs(a)表示求a的绝对值,round(a)表示对a进行四舍五入取整。
[0056]
可以理解,round(a)也可以为其他功能的函数,例如,可以为保留整数部分舍弃小数部分的floor(a)函数、fix(a)函数等等,本技术不做限定。
[0057]
可以理解,由于npu只能进行定点运算,因此查找表中的索引值和输出都应当为定点数,即索引值lut_in_q和查表值lut_out_q,而在离线构建查找表的过程中,为避免构建过程中直接使用定点运算确定索引值lut_in_q对应的查表值lut_out_q影响查找表的精度,可以先将索引值lut_in_q转化为浮点数索引值lut_in_f,基于公式(3)得到浮点数查表值lut_out_f,再将浮点数查表值lut_out_f转化为定点数查表值lut_out_q。
[0058]
具体地,在为m位定点数的情况下,由公式(2)可知,索引值lut_in_q的值域为2m位定点数。即在索引值lut_in_q为有符号数(即对称量化的定数)时,索引值lut_in_q的取值范围为[-2
2m-1

……
,2
2m-1];在索引值lut_in_q为无符号数(即非对称量化的定点数)时,索引值lut_in_q的取值范围为[0,
……
,2
2m-1]。
[0059]
例如假设上述激活层13的输出为8位定点数,且为对称量化的有符号数,则索引值lut_in_q的取值范围为[-32768,32767]。
[0060]
首先,基于公式(2)和公式(6)可以得到如公式(7)所示的将定点数的索引值转换为浮点数的索引值的转换公式。
[0061][0062]
例如,假设n=2,在索引值lut_in_q为十进制定点数25,即二进制00011001,待归一化数据的缩放系数的情况下,可以得到浮点数索引值lut_in_f为浮点数25。
[0063]
从而基于公式(2)和公式(7)可以得到如公式(8)所示的查找表中浮点数查表值的计算公式。
[0064][0065]
例如,假设k=2,α=10-5
,β=0.75,在浮点数索引值lut_in_f为前述定点数25的情况下,浮点数索引值lut_out_f=0.5945。
[0066]
在得到浮点数索引值lut_out_f后,通过浮点数索引值lut_out_f的最大值和最小值,以及公式(5)和公式(6)即可得到如公式(9)所示的将浮点数查表值转换为定点数查表值的计算公式。
[0067][0068]
例如,在浮点数索引值lut_in_f的取值范围为[-32768,32767]的情况下,若k=2,α=10-5
,β=0.75,浮点数查表值lut_out_f的最大值为0.6800,最小值为0.5307。从而基于公式(5)可知,若将查表值lut_out_q量化为8位,则查表值缩放系数lut_out_scale=(2
7-1)/0.6800=186.76。
[0069]
由公式(4)可知:
[0070][0071]
从而结合公式(6)将输入数据定点数定点数查表值lut_out_q、定点数归一化结果代入公式(10)可以得到如下公式(11)。
[0072][0073]
对公式(11)进行移项可以得到如下公式(12)。
[0074]
[0075]
其中查表值lut_out_q可以通过查表得到,定点数待归一化数据由待归一化数据量化得到,从而只要在离线构建查找表的过程中将确定为一个定点数,npu即可在运行神经网络模型,快速通过简单的定点运算通过lrn算子对待归一化数据进行归一化。
[0076]
在一些实施例中,可以将表示为一个定点数和2的幂指数的乘积,例如将转化为qscale
×2shift
,并将qscale(缩放系数)和shift(移位数)记录在查找表中,从而npu在计算和查表值lut_out_q的乘积的过程中,只需计算查表值lut_out_q和缩放系数qscale的乘积,并将结果向左移shift位即可得到计算结果,进一步提高npu基于lrn算子对数据进行量化的速度。例如,在前述浮点数查表值lut_out_f的最大值为0.6800,最小值为0.5307、的绝对值的取值范围为[0,128]的情况下,可以得到的取值范围为[0,87.04],则在将量化为8位的情况下,归一化结果缩放系数从而可以得到:
[0077][0078]
在一些实施例中,可以将0.0079转换为qscale
×2shift
,例如2-7
,即是缩放系数qscale=1,移位数shift=-7。从而,基于上述数据,可以构建如图3所示的查找表30。如图3所示,查找表30中可以包括索引值lut_in_q值对应的查表值lut_out_q值,以及前述缩放系数qscale和移位数shift的值,也即是说查表结果中包括查表值lut_out_q、缩放系数qscale、和移位数shift。
[0079]
从而,公式(12)可以表示为如下公式(13)。
[0080][0081]
公式(13)中“《《”表示左移运算。
[0082]
从公式(13)可知,npu在通过(j取[max(0,i-n/2),min(n,i n/2)]中的整数)确定索引值索引值lut_in_q,并根据索引值lut_in_q从查找表中获取到查表值lut_out_q、缩放系数qscale、移位数shift的值,再将查表值lut_out_q、定点数待归一化数据缩放系数qscale相乘后左移shift位,即可得到通过lrn算子对待归一化数据进行归一化的定点数归一化结果,而无需进行除法、求幂指数等复杂的非线性运算,降低了npu的硬件资源消耗,从而提高了神经网络模型的运行速度。
[0083]
例如,npu在计算前述时,可以基于确定索引值lut_in_q=00011001,从查找表中获取到查表值lut_out_q=0110 1111,再计算再左移-7位(即右移7位),得到7位(即右移7位),得到
[0084]
可以理解,在另一些实施例中,查找表30也可以以其他数据形式进行存储,例如图、数组等,本技术实施例对查找表30的存储形式不做限定。
[0085]
可以理解,在另一些实施例中,可以将转换为其他定点项的运算,并将该定点项作为计算项,在本技术中不做限定。
[0086]
下面结合神经网络模型10和前述查找表的构建过程,介绍本技术实施例的技术方案。
[0087]
图4根据本技术的一些实施例,示出了一种神经网络模型的运行方法的流程示意图。该流程的执行主体为电子设备,如图4所示,该流程包括如下步骤:
[0088]
s401:检测到神经网络模型10中的lrn算子运算。
[0089]
即是电子设备在运行神经网络模型10的过程中,若检测到lrn算子的运算,即通过本技术实施例提供的方法通过lrn算子对待归一化数据进行运算。
[0090]
例如,电子设备在运行神经网络模型10的过程中,在通过输入层11对输入图像进行预处理生成图像数据矩阵,再通过卷积层12对图像数据矩阵进行卷积,通过relu激活函数对卷积层12的输出结果hi(i=1,2,

,9)进行激活,得到数据矩阵ai(i=1,2,

,9)后,在运行归一化层14时,即可检测到lrn算子运算,触发本技术实施例提供的神经网络模型运行方法,具体过程将在下文进行描述,在此不做赘述。
[0091]
s402:根据待归一化数据,确定待归一化数据的查表索引值。
[0092]
电子设备根据待归一化数据,以及lrn算子的超参数,确定待归一化数据的查表索引。
[0093]
例如,在一些实施例中,待归一化数据可以为经过relu激活函数的输出矩阵ai(i=1,2,

,9)中的某元素其中,中的i对应于卷积核ki的卷积结果hi,(x,y)表示元素位于矩阵ai中的第x行第y列。
[0094]
示例性的,假设神经网络模型10的lrn算子的超参数n=2,若待归一化元素是relu激活函数的输出矩阵a4的第1行第9列的元素,即参考图2,的值为4,则根据公式(1),获取输出矩阵a3的第1行第9列的元素输出矩阵a5的第1行第9列的元素由公式(2)即可得到该待归一化元素的查表索引值为:
[0095][0096]
可以理解,仅为示例性的待归一化元素,对于其他待归一化元素,电子设备可以用类似的方法确定相应的查表索引值,在此不做赘述。
[0097]
s403:基于查表索引值,从查找表中获取查表项的查表结果。
[0098]
即是电子设备基于查表索引值,例如前述索引值lut_in_q,从查找表(例如前述查
找表30)中获取查表值lut_out_q、缩放系数qscale、移位数shift的定点数。即是查表结果可以包括查表值lut_out_q、缩放系数qscale、移位数shift的定点数
[0099]
例如,对于步骤s402中待归一化元素对应的索引值lut_in_q为25的情况,电子设备即可根据该索引值从查找表中获取到对应的查表值lut_out_q、缩放系数qscale和移位数shift。
[0100]
可以理解,在一些实施例中,为了节省查找表的长度,减小查找表占用的存储空间,查找表的位数(索引值的取值范围)可能会低于索引值lut_in_q。为了提升查表结果的精度,可以通过插值查找的方式来获得索引值lut_in_q对应的查表值lut_out_q。
[0101]
具体地,图5根据本技术的一些实施例,示出了一种根据索引值lut_in_q确定查表值lut_out_q的流程图。该流程图的执行主体为电子设备。如图5所示,该流程包括了如下步骤。
[0102]
s403a:确定步骤s402中确定的待归一化数据的查表索引值的取值范围和存储的预设的查找表的索引值的取值范围。
[0103]
例如,在一些实施例中,可以根据查表索引值的二进制数的位数来确定查表索引值的取值范围、根据查找表的索引值的二进制位数来确定查找表的索引值的取值范围。
[0104]
具体地,假设查表索引值lut_in_q的二进制位数为n1,查找表中索引值的二进制位数为n2。电子设备可以从存储的查找表中确定出该查找表中索引值的二进制数,确定查找表的索引值的位数n2,例如,假设某一索引值的二进制数为00011001,则说明查找表的索引值的二进制位数为8。以及,电子设备在确定出查表索引值lut_in_q后,可以确定出该查表索引值lut_in_q的位数n1,例如,在索引值lut_in_q=0000011001时,n1=10。
[0105]
可以理解,在另一些实施例中,电子设备可以使用其他方式来确定查表索引值的取值范围和查找表的索引值的取值范围,在本技术中不做限定。
[0106]
s403b:判断查表索引值的取值范围是否大于查找表的索引值的取值范围。如果是,说明查表索引值可能不存在于查找表的索引值中,进入步骤s403c进行插值查表;否则,说明查表索引值存在于查找表的索引值中,进入步骤s403d。
[0107]
例如,在一些实施例中,电子设备可以通过判断查表索引值的二进制位数是否大于查找表中索引值的二进制位数,来确定查表索引值的取值范围是否大于查表找的索引值的取值范围,即是在查表索引值的二进制位数大于查找表的索引值的位数的情况下,确定查表索引值的取值范围大于查找表的索引值的取值范围。
[0108]
例如,若查表索引值lut_in_q的二进制位数n1为10位,查找表中索引值的二进制位数n2为8位,也即n1大于n2,则电子设备需要进行插值查表。再例如,若查表索引值lut_in_q的二进制位数n1为10位,查找表中索引值的二进制位数n2为16位,也即n1小于n2,则电子设备无需进行插值查表,而是可以直接根据查表索引值lut_in_q从查找表中找到对应的查表值lut_out_q。
[0109]
可以理解,电子设备判断查表索引值lut_in_q的二进制位数n1是否大于查找表中索引值的二进制位数n2的方法可以为直接比较n1、n2的大小,也可以为通过判断n1和n2的差值是否大于0来确定n1和n2的大小,在本技术中不做限定。
[0110]
s403c:确定插值位数。
[0111]
例如,在一些实施例中,插值位数可以为查表索引值lut_in_q的二进制位数n1减
去查找表中索引值的二进制位数n2的差值,即插值位数为n3=n1-n2。例如,若查表索引值lut_in_q的二进制位数n1为10位,查找表中索引值的二进制位数n2为8位,从而电子设备可以确定出索引值lut_in_q的插值位数为2位。
[0112]
可以理解,在另一些实施例中,插值位数n3也可以为查找表中索引值的二进制位数n2,在本技术中不做限制。
[0113]
s403d:直接根据查表索引值从查找表中查找出查表索引值对应的查表值。
[0114]
电子设备在查表索引值lut_in_q的取值范围小于查找表的索引值的取值范围的情况下,可以直接根据查表索引值lut_in_q从查找表中获取对应的查表值lut_out_q。例如,若查表索引值lut_in_q的二进制位数n1为8位,查找表中索引值的二进制位数n2为16位,也即n1小于n2,则电子设备无需进行插值查表,而是可以直接根据查表索引值lut_in_q从查找表中找到对应的查表值lut_out_q。
[0115]
s403e:根据插值位数和查表索引值确定出查表值。
[0116]
电子设备在查表索引值的二进制位数n1超过了查找表中的索引值的二进制n2的情况下,可以根据查表索引值lut_in_q从查找表中确定出基准索引lut_in_st1对应的第一查表结果lut_out_st1以及基准索引加一后的lut_in_st2(即lut_in_st2=lut_in_st1 1)对应的第二查表结果lut_out_st2,从而电子设备可以确定查表索引值lut_in_q的查表值lut_out_q的值位于第一查表结果lut_out_st1和第二查表结果lut_out_st2之间。而后电子设备可以根据插值位数n3、查表索引值和基准索引的差值,第一查表结果lut_out_st1和第二查表结果lut_out_st2确定修正值e。查表索引值lut_in_q对应的查表值lut_out_q即为第一查表结果lut_out_st1与修正值e之和。
[0117]
例如,图6根据本技术的一些实施例,示出了一种插值查表的过程示意图。电子设备将查表索引值00 0000 1101右移2位即可得到基准索引值00 0000 11,从而根据基准索引值00 0000 11可以从查找表中确定出对应的第一查表结果lut_out_st1。然后电子设备根据基准索引值lut_in_st1加一后的索引值00 000100,从查找表中确定出对应的第二查表结果lut_out_st2。再根据查表索引值与基准索引值的差值d和插值位数n3,电子设备可以计算出该数值对应的修正值e。查表值lut_out_q即为第一查表结果lut_out_st1和修正值e之和。
[0118]
具体地,参考图6,电子设备先将查表索引值00 0000 1101右移2位得到0000 0011,然后将0000 0011左移2位,即可得到00 0000 1100,从而00 0000 1101与00 0000 1100的差值d=00 0000 0001,在根据差值d与2
n3
的比值,该比值即是修正值e与第二查表结果减去第一查表结果的差值的比值,从而将该比值与第二查表结果减去第一查表结果的差值相乘即可得到修正值e。为了快速计算,避免求比值的除法过程占用电子设备的计算资源,可以通过移位的方式来确定上述比值,并基于上述比值确定修正值e。
[0119]
在一些实施例中,查表索引值与基准索引值的差值可以通过如下公式(15)来确定。
[0120]
d=lut_in_q-(lut_in_q>>n3<<n3)
ꢀꢀꢀ
(15)
[0121]
公式(15)中“《《”表示左移运算、“》》”表示右移运算。进而修正值e可以通过如下公式(16)来确定。
[0122]
e=(lut_out_st2-lut_out_st1)
×
d>>n3
ꢀꢀꢀ
(16)
[0123]
公式(16)中“》》”表示右移运算。
[0124]
其中,e表示修正值,lut_out_st2为通过基准索引值加一后的索引值从查找表中确定的第二查表结果,lut_out_st1为通过基准索引值从查找表中确定的第一查表结果,d为查表索引值与基准索引值之差,n3为插值位数。
[0125]
确定了修正值e后,电子设备可以将第一查表结果lut_out_st1与修正值e相加之和作为查表索引值lut_in_q的查表值lut_out_q,也即确定了第一查表结果lut_out_st1与修正值e之后,查表值lut_out_q可以通过如下公式(17)确定。
[0126]
lut_out_q=lut_out_st1 e
ꢀꢀꢀ
(17)
[0127]
s404:基于待归一化数据、查表结果,确定对待归一化数据的归一化结果。
[0128]
即是电子设备根据查表得到的查表值lut_out_q、缩放系数qscale、移位数shift,定点数待归一化数据以及前述公式(13),得到对待归一化数据的归一化结果
[0129]
例如,待归一化元素为的情况下,电子设备根据步骤s402得到的查表索引值lut_in_q,从查找表中获取到对应的查表值lut_out_q、缩放系数qscale、移位数shift后,可以基于公式(13)计算得到待归一化元素的归一化结果。根据公式(13),可以计算得到该待归一化元素的归一化结果:从查找表中获取lut_out_q=0110 1111,再计算再左移-7位(即右移7位),得到
[0130]
可以理解,其他待归一化元素可以通过类似的方法得到对应的归一化结果,在本技术中不做赘述。
[0131]
可以理解,电子设备通过归一化层14对激活层13的9个数据矩阵归一化后,可以将归一化结果传送给全连接层15,确定输入图像数据被分为各预设图像类别的概率,并将概率最大的预设图像类别确定为输入图像数据的类型。例如,电子设备确定出输入图像为风景类型的概率为1/5、确定出输入图像为人物类型的概率为1/5以及确定输入图像为动物类型的概率为3/5后,可以比较输入图像为不同种类型的概率大小,从而确定出概率最大的动物类型为输出结果。
[0132]
通过本技术实施例提供的方法,电子设备根据待归一化数据(j取[max(0,i-n/2),min(n,i n/2)]中的整数)确定索引值lut_in_q,并根据索引值lut_in_q从查找表中获取到查表值lut_out_q、移位数shift,再将查表值lut_out_q、缩放系数qscale相乘后左移shift位,即可得到通过lrn算子对进行归一化的定点数归一化结果,而无需进行除法、求幂指数等复杂的非线性运算,降低了电子设备的硬件资源消耗,从而提高了神经网络模型的运行速度。
[0133]
下面结合图1的神经网络模型10和图2的卷积层12和激活层13计算过程详细介绍电子设备确定待归一化数据的步骤。
[0134]
在介绍神经网络模型10的计算过程前,先介绍卷积的计算过程,设矩阵a的大小为m
×
m,卷积核k的大小为n
×
n,卷积步长为k,则矩阵a与卷积核k的卷积结果h可以表示为:
[0135][0136]
在公式(18)中,h(m,n)为矩阵h第m行第n列的元素;m,n满足以下关系式:
[0137][0138]
其中为向下取整运算,即为小于x的最大整数。由于m-n《m且k为正整数,可见也即是说卷积结果h的大小总是小于或等于矩阵a的大小。
[0139]
为确保卷积结果对应的矩阵的大小与输入数据的大小相同,避免丢失图片数据矩阵边缘的数据特征,通常在卷积计算的过程中在输入矩阵的第一行前和最后一行后填充值为0的行以及在输入矩阵第一列之前和最后一列之后填充值为0的行或列,即在输入矩阵的四周填充值为0的行或列。设在输入矩阵a的四周各填充数量为p的值为0的行或列,此时,输入矩阵a的大小变为(m 2p)
×
(m 2p)。此时,公式(1)中的m,n满足以下关系式:
[0140][0141]
令即可计算得到p的值。
[0142]
假设图像数据矩阵a为9
×
9大小的矩阵(也即m为9),矩阵a与卷积核ki(i从1到9)分别进行卷积即可得到9个特征图像h1至h9。
[0143]
假设图像数据矩阵a为:
[0144][0145]
卷积核k3为:
[0146][0147]
可以理解,卷积核k3的大小为3
×
3(也即n为3)的情况下,在特征矩阵h与初始的图像数据矩阵a大小一样的假设下,可以计算得到p为1。
[0148]
由此,矩阵a与卷积核k3在滑动步长为1的情况下进行卷积后的结果h3可以表示为:
[0149][0150][0151]
类似地,矩阵a与卷积核k4卷积后的特征矩阵h4可以表示为:
[0152][0153]
矩阵a与卷积核k4卷积后的特征矩阵h5可以表示为:
[0154][0155]
可以理解,图像数据矩阵a与其他卷积核的卷积计算过程类似,在此不做赘述。
[0156]
可以理解,上述实施例中的图像数据矩阵a仅为示例性的。
[0157]
完成卷积层12的卷积计算后,电子设备继续运行神经网络模型10中的激活层13以对特征矩阵h1至特征矩阵h9进行激活,例如通过relu算子对特征矩阵h1至特征矩阵h9进行激活来提高后续层的运算速度。以relu算子对前述特征矩阵h3、特征矩阵h4和特征矩阵h5进行激活为例,relu算子将特征矩阵中小于0的元素都设置为0,也即h3、h4和h5经过relu激活后变为如下的a3、a4、a5:
[0158]
[0159][0160][0161]
可以理解,激活层13对等其他矩阵的激活过程类似,在本技术中不做赘述。
[0162]
在运行完神经网络模型10的激活层13后,电子设备继续运行归一化层14,在运行归一化层14时检测到lrn算子,从而电子设备将激活层13的输出数据作为待归一化数据进行归一化。也即,上述激活后的矩阵a1至矩阵a9都为待归一化数据。电子设备可以根据图4所示的方法,对待归一化数据进行归一化,得到归一化后的数据,再由全连接层15基于归一化后的数据,得到图像数据矩阵a对应的输入图像属于各预设图像类别的概率,并将概率最大的预设图像类别确定该输入图像的类别。例如,电子设备通过全连接层15确定出输入图像为风景类型的概率为1/5、确定出输入图像为人物类型的概率为1/5以及确定输入图像为动物类型的概率为3/5后,可以将动物确定为该输入图像的类别。
[0163]
可以理解,本技术实施例提供的神经网络模型的运行方法,可以应用于能够运行神经网络模型的任意电子设备,包括但不限于手机、可穿戴设备(如智能手表等)、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,pda)、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备等,本技术实施例不做限定。为便于理解本技术实施例的技术方案,以电子设备100为例说明本技术实施例提供的神经网络模型的运行方法的适用的电子设备的结构。
[0164]
进一步,图7根据本技术的一些实施例,示出了一种电子设备100的结构示意图。如图7所示,电子设备100包括一个或多个处理器101、系统内存102、非易失性存储器(non-volatile memory,nvm)103、通信接口104、输入/输出(i/o)设备105、以及用于耦接处理器101、系统内存102、非易失性存储器103、通信接口104和输入/输出(i/o)设备105的系统控
制逻辑106。其中:
[0165]
处理器101可以包括一个或多个处理单元,例如,可以包括中央处理器cpu(central processing unit)、图像处理器gpu(graphics processing unit)、数字信号处理器dsp(digital signal processor)、微处理器mcu(micro-programmed control unit)、ai(artificial intelligence,人工智能)处理器或可编程逻辑器件fpga(field programmable gate array)、神经网络处理器(neural-network processing unit,npu)等的处理模块或处理电路可以包括一个或多个单核或多核处理器。在一些实施例中,npu可以用于运行本技术实施例提供的神经网络模型的运行方法对应的指令。
[0166]
系统内存102是易失性存储器,例如随机存取存储器(random-access memory,ram),双倍数据率同步动态随机存取存储器(double data rate synchronous dynamic random access memory,ddr sdram)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于存储上述查找表30。
[0167]
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(hard disk drive,hdd)、光盘(compact disc,cd)、数字通用光盘(digital versatile disc,dvd)、固态硬盘(solid-state drive,ssd)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(secure digital,sd)存储卡等。在另一些实施例中,非易失性存储器103可以用于上述存储查找表30。
[0168]
特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101中的至少一个执行时使电子设备100实现本技术各实施例提供的神经网络模型的运行方法。
[0169]
通信接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于电子设备100的其他组件,例如通信接口104可以集成于处理器101中。在一些实施例中,电子设备100可以通过通信接口104和其他设备通信,例如,电子设备100可以通过通信接口104从其他电子设备获取神经网络模型以及该神经网络模型对应的查找表30。
[0170]
输入/输出(i/o)设备105可以包括输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(i/o)设备105与电子设备100进行交互。
[0171]
系统控制逻辑106可以包括任意合适的接口控制器,以电子设备100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。
[0172]
在一些实施例中,处理器101中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(system in package,sip)。在另一些实施例中,处理器101中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(system-on-chip,soc)。
[0173]
可以理解,图7所示的电子设备100的结构只是一种示例,在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0174]
本技术公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本技术的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0175]
可将程序代码应用于输入指令,以执行本技术描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本技术的目的,处理系统包括具有诸如例如数字信号处理器(digital signal processor,dsp)、微控制器、专用集成电路(application specific integrated circuit,asic)或微处理器之类的处理器的任何系统。
[0176]
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本技术中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
[0177]
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(cd-roms)、磁光盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
[0178]
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
[0179]
需要说明的是,本技术各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本技术所提出的技术问题的关键。此外,为了突出本技术的创新部分,本技术上述各设备实施例并没有将与解决本技术所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
[0180]
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物
品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0181]
虽然通过参照本技术的某些优选实施例,已经对本技术进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本技术的精神和范围。
再多了解一些

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

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

相关文献