System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术属于神经网络,特别涉及一种gru算子的量化方法。
技术介绍
1、gru是循环神经网络的一种,和lstm一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的,相较于lstm,gru更便于计算,更容易进行训练,能够在很大程度上提高模型的训练效率,广泛应用于机器翻译、语音识别等领域。然而gru算子内部存在大量matmul操作,对内存和计算资源的高要求阻碍了它在资源有限的设备上的实施。
2、因此,现有技术存在的缺陷在于:
3、目前gru算子对内存和计算资源的高要求阻碍了它在资源有限的设备上的实施。
4、在gru算子内部存在大量的matmul操作,导致算子对内存和计算资源要求高,从而导致模型难以部署到设备上。
5、现有技术中的常用术语包括:
6、matmul:标准的矩阵乘法,要求第一个矩阵x.shape[-1]等于第二个矩阵y.shape[-2],同时要求x.shape[:-2]和y.shape[:-2]必须相同。
7、(1)x和y是2d矩阵时,简单的矩阵乘法。
8、(2)当x和y不是2d矩阵时,则x和y除最后2个维度之外,其他维度必须相同,而且被认为是batch维度。
9、concat()函数:concat()方法用于连接两个或多个数组。
技术实现思路
1、为了解决上述问题,本申请的目的在于:本专利技术提出一种gru算子的量化方法,量化gru算子内部的所有matmul操作,在保
2、具体地,本专利技术提供一种gru算子的量化方法,所述方法包括以下步骤:
3、s1,gru量化:量化gru需要统计的变量有x、h_all和output;
4、h_all=concat(h_0,…,h_n_1) 公式(7)
5、output=concat(h_1,…,h_n) 公式(8)
6、根据公式(7)计算出量化gru需要统计的中间变量h_all;
7、gru有1或2个输入,gru的第一个输入x=concat(x_1,…,x_n),当gru只有一个输入时h_0会被赋值为一个0向量,gru有两个输入时,h_0为gru的第二个输入;h_1指第一个时间步的隐藏状态,由h_0和x_1计算而来;同理计算直到h_n通过h_n-1和x_n计算而来;
8、s2,统计x、h_all和output的量化scale,即input_scale、h_all_scale和output_scale;
9、根据量化原理故
10、
11、
12、
13、其中bit为feature的量化位宽;
14、s3,量化gru算子内部的matmul操作,即wxz_matmul、rhz_matmul、wxh_matmul、rhh_matmul、wxr_matmul、rhr_matmul,使matmul操作的数据流为整型数据;
15、s4,线下计算量化参数wxzscale、rhzscale、wxrscale、rhrscale、wxhscale、rhhscale,详见下列公式(17)、(20)、(23)、(26)、(29)、(32):
16、线下计算wxzscale,如公式(17)所示:
17、wxzscale=x_scale*wz_scale 公式(17);
18、同理:
19、rhz_matmul=matmul(h_all,rz)+rbz 公式(18)
20、rhz_matmul=h_all_scale*rz_scale*(matmulint(h_all_int,rzint)+rbzint)公式(19)
21、rhzscale=h_all_scale*rz_scale 公式(20);
22、wxr_matmul=matmul(x,wr)+wbr 公式(21)
23、wxr_matmul=x_scale*wr_scale*(matmulint(xint,wrint)+wbrint) 公式(22)
24、wxrscale=x_scale*wr_scale 公式(23)
25、rhr_matmul=matmul(h_all,rr)+rbr 公式(24)
26、rhr_matmul=h_all_scale*rr_scale*(matmulint(h_all_int,rrint)+rbrint)公式(25)
27、rhrscale=h_all_scale*rr_scale 公式(26)
28、wxh_matmul=matmul(x,wh)+wbh 公式(27)
29、wxh_matmul=x_scale*wh_scale*(matmulint(xint,whint)+wbhint) 公式(28)
30、wxhscale=x_scale*wh_scale 公式(29)
31、rhh_matmul=matmul(h_all,rh)+rbh 公式(30)
32、rhh_matmul=h_all_scale*rh_scale*(matmulint(h_all_int,rhint)+rbhint)公式(31)
33、rhhscale=h_all_scale*rh_scale 公式(32)。
34、所述步骤s1中,所述gru量化是一个放射变换:
35、r=s×(q-z) 公式(5)
36、其中s是scale,q是量化后的数据,z是偏移,如果采用对称变换,令z为0,那么就有:
37、r=s×q 公式(6)。
38、所述步骤s3中所述matmul的量化过程:
39、所述matmul操作为
40、output=(∑(input*weight))+bias 公式(9)
41、根据量化原理公式(6)可知
42、input=inputint*input_scale 公式(10)
43、weight=weightint*weight_scale 公式(11)
44、由公式(9)、(10)和(11)可得
45、output=(∑(inputint*input_scale*weight*weight_scale))+bias 公式(12)
46、即
47、
48、对bias使用整型和量化参数表示,bias量化是feature量化和weight量化共同决定;
49、output=((∑(inputint*weightint))+biasint)*input_scale*weight_sca本文档来自技高网...
【技术保护点】
1.一种GRU算子的量化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种GRU算子的量化方法,其特征在于,所述步骤S1中,所述GRU量化是一个放射变换:
3.根据权利要求2所述的一种GRU算子的量化方法,其特征在于,所述步骤S3中所述matmul的量化过程:
4.根据权利要求3所述的一种GRU算子的量化方法,其特征在于,所述步骤S4所述线下计算,进一步包括:
5.根据权利要求3所述的一种GRU算子的量化方法,其特征在于,所述方法中GRUInt8算子的scale计算都在线下完成,且其内部matmul操作的数据流为整型。
【技术特征摘要】
1.一种gru算子的量化方法,其特征在于,所述方法包括以下步骤:
2.根据权利要求1所述的一种gru算子的量化方法,其特征在于,所述步骤s1中,所述gru量化是一个放射变换:
3.根据权利要求2所述的一种gru算子的量化方法,其特征在于,所述步骤s3中所述matmul的量...
【专利技术属性】
技术研发人员:王薇薇,
申请(专利权)人:合肥君正科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。