全整型神经网络模型推理方法、装置、设备及存储介质与流程
未命名
08-15
阅读:97
评论:0
1.本发明涉及神经网络领域,特别涉及全整型神经网络模型推理方法、装置、设备及存储介质。
背景技术:
2.随着深度学习相关技术不断发展,神经网络模型在很多行业和场景得到广泛应用。由于神经网络模型的参数量和计算量大,在资源有限的嵌入式设备部署较为困难,往往需要采用模型量化等轻量化方法。另外,有些嵌入式设备只支持整型数据计算,而在现有的模型推理方法中,矩阵相乘等计算量大的算子采用量化后的整型数据计算,而对于更多的算子,往往还需要采用浮点数计算。例如常见的残差网络中的add算子,由于将两个int8数据相加可能会导致数据溢出,因此往往采用浮点数计算。另外,对于标量数据相加,由于量化后的int8数据经过了缩放,无法直接与标量数据相加,往往需要采用浮点数计算。因此,如何在只支持硬件计算的嵌入式设备上部署神经网络模型,成为了亟待解决的问题。
技术实现要素:
3.有鉴于此,本发明的目的在于提供一种全整型神经网络模型推理方法、装置、设备及存储介质,通过此方法,可以在只支持硬件计算的嵌入式设备上部署神经网络模型。其具体方案如下:
4.第一方面,本技术公开了一种全整型神经网络模型推理方法,应用于支持整型计算的嵌入式设备,包括:
5.利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;
6.基于预设规则将算子进行分类,以得到若干种类型的算子;
7.对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;
8.基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。
9.可选的,所述利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,包括:
10.利用int数据类型对所述嵌入式设备中部署的训练好的神经网络模型进行量化。
11.可选的,所述基于预设规则将算子进行分类,包括:
12.基于每种类型算子的计算方式将所述算子进行分类。
13.可选的,所述基于预设规则将算子进行分类,以得到若干种类型的算子,包括:
14.基于每种类型算子的计算方式将所述算子分为进行量化和逆量化计算的第一类型算子、通过移位方式计算的第二类型算子以及通过查表方式计算的第三类型算子。
15.可选的,所述对所述若干种类型的算子进行相应的计算,得到与各种类型的算子
对应的各中间数据,包括:
16.对任一第一类型算子进行计算时,若当前输入为另一个所述第一类型算子的输出,则由所述任一第一类型算子直接进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输入为所述第二类型算子或所述第三类型算子的输出,则对所述任一第一类型算子进行量化操作,然后进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输出为另一个所述第一类型算子的输入,则对所述任一第一类型算子进行逆量化操作以及乘以预设的中间表示常数中的data分量,以得到所述任一第一类型算子对应的所述中间数据;
17.对所述第二类型算子进行计算时,基于不同的移位操作执行相应的计算,以得到所述第二类型算子的所述中间数据;
18.对所述第三类型算子进行计算时,基于哈希表获取所述第三类型算子的所述中间数据。
19.可选的,所述中间表示常数为基于所述data分量以及shift分量构建的常数,其中,所述shift分量表征整型计算时进行右移的位数,所述data分量为以2为底数、以所述shift分量为指数得到的数值。
20.可选的,所述对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据的过程中,还包括:
21.利用预先创建的数据溢出检测模块检测当前在计算所述中间数据时是否发生溢出,若溢出,则调小所述shift分量。
22.第二方面,本技术公开了一种全整型神经网络模型推理装置,应用于支持整型计算的嵌入式设备,包括:
23.权重系数获取模块,用于利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;
24.算子获取模块,用于基于预设规则将算子进行分类,以得到若干种类型的算子;
25.中间数据获取模块,用于对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;
26.模型推理模块,用于基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。
27.第三方面,本技术公开了一种电子设备,包括:
28.存储器,用于保存计算机程序;
29.处理器,用于执行所述计算机程序以实现前述的全整型神经网络模型推理方法。
30.第四方面,本技术公开了一种计算机可读存储介质,用于保存计算机程序,所述计算机程序被处理器执行时实现前述的全整型神经网络模型推理方法。
31.由上可知,本技术在对全整型神经网络模型推理时,首先利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;基于预设规则将算子进行分类,以得到若干种类型的算子;对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。可见,本技术通过提供一种全整型神经网络模型推理方法,能够在只支
持硬件计算的嵌入式设备上部署神经网络模型,并且适用于卷积等常见的神经网络模型,具有较高的实用价值和创新价值。
附图说明
32.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
33.图1为本技术公开了一种全整型神经网络模型推理方法流程图;
34.图2为本技术公开了一种具体的全整型神经网络模型推理方法流程图;
35.图3为本技术公开了一种全整型神经网络模型推理装置结构示意图;
36.图4为本技术公开的一种电子设备结构图。
具体实施方式
37.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
38.在现有的模型推理方法中,矩阵相乘等计算量大的算子采用量化后的整型数据计算,而对于更多的算子,往往还需要采用浮点数计算。例如常见的残差网络中的add算子,由于将两个int8数据相加可能会导致数据溢出,因此往往采用浮点数计算。另外,对于标量数据相加,由于量化后的int8数据经过了缩放,无法直接与标量数据相加,往往需要采用浮点数计算。为解决上述问题,本技术公开了一种全整型神经网络模型推理方法,能够在只支持硬件计算的嵌入式设备上部署神经网络模型。
39.参见图1所示,本发明实施例公开了一种全整型神经网络模型推理方法,应用于支持整型计算的嵌入式设备,包括:
40.步骤s11、利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数。
41.本实施例中,首先利用int数据类型对所述嵌入式设备中部署的训练好的神经网络模型进行量化。就是采用合适的方法,对训练好的模型进行量化。为了方便描述,假设模型采用int8类型量化。但本专利量化不限于int8数据类型。以得到所述神经网络模型的权重系数。
42.步骤s12、基于预设规则将算子进行分类,以得到若干种类型的算子。
43.本实施例中,基于每种类型算子的计算方式将所述算子进行分类,将所述算子分为进行量化和逆量化计算的第一类型算子、通过移位方式计算的第二类型算子以及通过查表方式计算的第三类型算子。就是按照相应的计算方式,将算子分为如下三类:可以进行量化和逆量化计算的卷积、矩阵相乘等算子,用ops_a表示;通过移位方式计算的element-wise、relu、relu6、clip、pooling、hswish、hsigmoid、标量计算等算子,用ops_b表示;通过查表方式计算的sigmoid、tanh、sin、cos等算子,用ops_c表示。这样便得到了若干种类型的
算子。
44.步骤s13、对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据。
45.本实施例中,基于上述实施例可知,获取到了若干种类型的算子,其中,对任一第一类型算子进行计算时,若当前输入为另一个所述第一类型算子的输出,则由所述任一第一类型算子直接进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输入为所述第二类型算子或所述第三类型算子的输出,则对所述任一第一类型算子进行量化操作,然后进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输出为另一个所述第一类型算子的输入,则对所述任一第一类型算子进行逆量化操作以及乘以预设的中间表示常数中的data分量,以得到所述任一第一类型算子对应的所述中间数据;对所述第二类型算子进行计算时,基于不同的移位操作执行相应的计算,以得到所述第二类型算子的所述中间数据;对所述第三类型算子进行计算时,基于哈希表获取所述第三类型算子的所述中间数据。这样便得到了与各种类型的算子对应的各中间数据;其中,各所述中间数据的数据类型均为目标整型数据。需要指出的是,所述中间表示常数为基于所述data分量以及shift分量构建的常数,其中,所述shift分量表征整型计算时进行右移的位数,所述data分量为以2为底数、以所述shift分量为指数得到的数值。即需要设置中间表示常数alpha,其中alpha由alpha_data及alpha_shift组成,具体关系如下:alpha_data=pow(2,alpha_shift)
46.alpha用于将浮点数数据乘以alpha_data,转成int32整型数据。在后续计算中,再相应右移alpha_shift位数,以满足数据变换要求。一般情况下,alpha_shift可以设为10-15之间的整数。且在所述对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据的过程中,还包括:利用预先创建的数据溢出检测模块检测当前在计算所述中间数据时是否发生溢出,若溢出,则调小所述shift分量。就是在推理过程中设计相应数据溢出检测模块,如果发生int32数据类型溢出的情况,需要选择更小的alpha_shift。
47.步骤s14、基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。
48.本实施例中,利用通过量化得到的所述神经网络模型的权重系数以及所述中间数据分别计算神经网络的每一层,以此类推,便可以进行全整型神经网络模型的计算推理。且需要指出的是,本技术主要解决在只支持整型计算的嵌入式设备上部署神经网络模型的问题,即主要针对只支持整型计算的嵌入式设备进行问题的解决。
49.由上可知,本技术在对全整型神经网络模型推理时,首先利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;基于预设规则将算子进行分类,以得到若干种类型的算子;对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。可见,本技术通过提供一种全整型神经网络模型推理方法,能够在只支持硬件计算的嵌入式设备上部署神经网络模型,并且适用于卷积等常见的神经网络模型,具有较高的实用价值和创新价值。
50.基于上述实施例可知,本技术可以对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据,接下来,将针对得到与各种类型的算子对应的各中间数据的过程进行具体的描述。参见图2所示,本发明实施例公开了一种具体的全整型神经网络模型推理方法,应用于支持整型计算的嵌入式设备,包括:
51.步骤s21、对任一第一类型算子进行计算时,若当前输入为另一个第一类型算子的输出,则由所述任一第一类型算子直接进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输入为第二类型算子或第三类型算子的输出,则对所述任一第一类型算子进行量化操作,然后进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的中间数据;若当前输出为另一个所述第一类型算子的输入,则对所述任一第一类型算子进行逆量化操作以及乘以预设的中间表示常数中的data分量,以得到所述任一第一类型算子对应的所述中间数据。
52.本实施例中,由上一实施例可知,本技术通过将算子进行分类,得到了进行量化和逆量化计算的第一类型算子(可以用ops_a表示)、通过移位方式计算的第二类型算子(可以用ops_b表示)以及通过查表方式计算的第三类型算子(可以用ops_c表示)。针对ops_a类型算子。如果输入为另一个ops_a算子的输出,即为int8数据类型,可以直接进行相应的卷积或矩阵相乘计算,得到int32数据类型的中间结果。如果输入为ops_b或ops_c类型算子的输出,则需要进行量化,将量化同右移alpha_shift位数同时进行,得到量化后的int8数据,然后进行相应的卷积或矩阵相乘计算,得到int32数据类型的中间结果。另外,如果该算子的输出为另一个ops_a算子的输入,则将上述计算结果,同时进行该算子的逆量化以及下一个ops_a算子的量化,得到int8数据类型的输出。否则,将上述计算结果,同时进行该算子的逆量化以及乘以alpha_data,得到int32中间数据,也就是整型中间数据。
53.步骤s22、对所述第二类型算子进行计算时,基于不同的移位操作执行相应的计算,以得到所述第二类型算子的中间数据。
54.本实施例中,ops_b类型算子输入一般是乘以alpha_data后得到的int32类型的数据。对于element-wise操作,使用int32类型数据计算,并根据具体算子类型右移alpha_shift位数,例如,点乘算子需右移一个alpha_shift位数,点加算子不需要右移;对于relu、relu6及clip算子,需要将相应的clip阈值左移alpha_shift位数,然后执行clip计算;对于pooling算子,max_pooling可以直接进行计算,average_pooling中除法转化为乘以一个小数,并将该小数左移一定位数shift_pool,转化为int32数据,然后执行pooling计算,计算完需要右移shift_pool位数;对于标量算子,需要将标量左移alpha_shift位数,然后执行计算;对于hswish、hsigmoid算子,实际是由标量算子组成,采用标量算子的计算方式计算。通过上述方式,所有ops_b类型算子的输出仍然为乘以alpha_data的int32数据类型,保存了数据的精度。
55.步骤s23、对所述第三类型算子进行计算时,基于哈希表获取所述第三类型算子的中间数据。
56.本实施例中,ops_c类型算子输入一般为乘以alpha_data后得到的int32类型的数据。首先建立一张哈希表,key为通过int32类型数据,value仍为乘以alpha_data后得到的int32类型的数据。因此在构建该哈希表时,需要对key右移alpha_shift位数,对value乘以alpha_data。
57.由上可知,本技术提供一种全整型神经网络模型推理方法,首先,将训练好的模型进行量化。其次,将算子类型按照计算方式分为三种,对于每种算子,采用不同的整型计算方式计算。通过上述方式,可以在只支持硬件计算的嵌入式设备上部署神经网络模型,适用于卷积等常见的神经网络模型,具有较高的实用价值和创新价值。
58.参见图3所示,本发明实施例公开了一种全整型神经网络模型推理装置,应用于支持整型计算的嵌入式设备,包括:
59.权重系数获取模块11,用于利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;
60.算子获取模块12,用于基于预设规则将算子进行分类,以得到若干种类型的算子;
61.中间数据获取模块13,用于对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;
62.模型推理模块14,用于基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。
63.由上可知,本技术在对全整型神经网络模型推理时,首先利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;基于预设规则将算子进行分类,以得到若干种类型的算子;对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。可见,本技术通过提供一种全整型神经网络模型推理方法,能够在只支持硬件计算的嵌入式设备上部署神经网络模型,并且适用于卷积等常见的神经网络模型,具有较高的实用价值和创新价值。
64.在一些具体的实施例中,所述权重系数获取模块11,具体可以包括:
65.量化单元,用于利用int数据类型对所述嵌入式设备中部署的训练好的神经网络模型进行量化。
66.在一些具体的实施例中,所述算子获取模块12,具体可以包括:
67.分类单元,用于基于每种类型算子的计算方式将所述算子进行分类。
68.在一些具体的实施例中,所述算子获取模块12,具体可以包括:
69.算子获取单元,用于基于每种类型算子的计算方式将所述算子分为进行量化和逆量化计算的第一类型算子、通过移位方式计算的第二类型算子以及通过查表方式计算的第三类型算子。
70.在一些具体的实施例中,所述中间数据获取模块13,具体可以包括:
71.第一中间数据获取单元,用于对任一第一类型算子进行计算时,若当前输入为另一个所述第一类型算子的输出,则由所述任一第一类型算子直接进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输入为所述第二类型算子或所述第三类型算子的输出,则对所述任一第一类型算子进行量化操作,然后进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输出为另一个所述第一类型算子的输入,则对所述任一第一类型算子进行逆量化操作以及乘以预设的中间表示常数中的data分量,以得到所述任一第一类型算子对应的所述中间数据;
72.第一中间数据获取单元,用于对所述第二类型算子进行计算时,基于不同的移位操作执行相应的计算,以得到所述第二类型算子的所述中间数据;
73.第一中间数据获取单元,用于对所述第三类型算子进行计算时,基于哈希表获取所述第三类型算子的所述中间数据。
74.在一些具体的实施例中,所述中间数据获取模块13,还可以包括:
75.检测单元,用于利用预先创建的数据溢出检测模块检测当前在计算所述中间数据时是否发生溢出,若溢出,则调小所述shift分量。
76.进一步的,本技术实施例还公开了一种电子设备,图4是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
77.图4为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的全整型神经网络模型推理方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
78.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
79.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
80.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的全整型神经网络模型推理方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
81.进一步的,本技术还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的全整型神经网络模型推理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
82.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
83.专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
84.结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
85.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
86.以上对本技术所提供的技术方案进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的一般技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种全整型神经网络模型推理方法,其特征在于,应用于支持整型计算的嵌入式设备,包括:利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;基于预设规则将算子进行分类,以得到若干种类型的算子;对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。2.根据权利要求1所述的全整型神经网络模型推理方法,其特征在于,所述利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,包括:利用int数据类型对所述嵌入式设备中部署的训练好的神经网络模型进行量化。3.根据权利要求1所述的全整型神经网络模型推理方法,其特征在于,所述基于预设规则将算子进行分类,包括:基于每种类型算子的计算方式将所述算子进行分类。4.根据权利要求3所述的全整型神经网络模型推理方法,其特征在于,所述基于预设规则将算子进行分类,以得到若干种类型的算子,包括:基于每种类型算子的计算方式将所述算子分为进行量化和逆量化计算的第一类型算子、通过移位方式计算的第二类型算子以及通过查表方式计算的第三类型算子。5.根据权利要求4所述的全整型神经网络模型推理方法,其特征在于,所述对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据,包括:对任一第一类型算子进行计算时,若当前输入为另一个所述第一类型算子的输出,则由所述任一第一类型算子直接进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输入为所述第二类型算子或所述第三类型算子的输出,则对所述任一第一类型算子进行量化操作,然后进行相应的卷积计算或矩阵相乘的计算,以得到所述任一第一类型算子对应的所述中间数据;若当前输出为另一个所述第一类型算子的输入,则对所述任一第一类型算子进行逆量化操作以及乘以预设的中间表示常数中的data分量,以得到所述任一第一类型算子对应的所述中间数据;对所述第二类型算子进行计算时,基于不同的移位操作执行相应的计算,以得到所述第二类型算子的所述中间数据;对所述第三类型算子进行计算时,基于哈希表获取所述第三类型算子的所述中间数据。6.根据权利要求5所述的全整型神经网络模型推理方法,其特征在于,所述中间表示常数为基于所述data分量以及shift分量构建的常数,其中,所述shift分量表征整型计算时进行右移的位数,所述data分量为以2为底数、以所述shift分量为指数得到的数值。7.根据权利要求6所述的全整型神经网络模型推理方法,其特征在于,所述对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据的过程中,还包括:利用预先创建的数据溢出检测模块检测当前在计算所述中间数据时是否发生溢出,若
溢出,则调小所述shift分量。8.一种全整型神经网络模型推理装置,其特征在于,应用于支持整型计算的嵌入式设备,包括:权重系数获取模块,用于利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;算子获取模块,用于基于预设规则将算子进行分类,以得到若干种类型的算子;中间数据获取模块,用于对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;模型推理模块,用于基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。9.一种电子设备,其特征在于,包括:存储器,用于保存计算机程序;处理器,用于执行所述计算机程序以实现如权利要求1至7任一项所述的全整型神经网络模型推理方法。10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的全整型神经网络模型推理方法。
技术总结
本申请公开了全整型神经网络模型推理方法、装置、设备及存储介质,应用于支持整型计算的嵌入式设备,涉及神经网络领域,包括:利用预设方法对所述嵌入式设备中部署的训练好的神经网络模型进行量化,以得到所述神经网络模型的权重系数;基于预设规则将算子进行分类,以得到若干种类型的算子;对所述若干种类型的算子进行相应的计算,得到与各种类型的算子对应的各中间数据;各所述中间数据的数据类型均为目标整型数据;基于所述中间数据以及所述神经网络模型的权重系数进行全整型神经网络模型的计算推理。这样一来,本申请便可以在只支持硬件计算的嵌入式设备上部署神经网络模型。硬件计算的嵌入式设备上部署神经网络模型。硬件计算的嵌入式设备上部署神经网络模型。
技术研发人员:陈其宾 段强 姜凯 李锐
受保护的技术使用者:山东浪潮科学研究院有限公司
技术研发日:2023.05.25
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种钢球生产热处理工艺的制作方法 下一篇:一种钠离子电池正极材料及其制备方法和应用
