System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机,尤其涉及一种序列池化方法、装置、电子设备及存储介质。
技术介绍
1、程序语言数据作为一种类似于自然语言的数据,一般可以通过序列的形式存在。目前用神经网络对程序语言进行处理时,由于程序语言长序列的存在通常会导致很大的显存压力,如果序列长度过长,则可能导致在编码器阶段出现显存溢出。而相关技术对程序语言长序列进行缩短处理的手段存在信息的损失,影响输出结果的准确性。
技术实现思路
1、为了解决上述问题,本专利技术实施例提供了一种序列池化方法、装置、电子设备及存储介质,以至少解决相关技术对程序语言长序列进行缩短处理的手段存在信息的损失的问题。
2、本专利技术的技术方案是这样实现的:
3、一方面,本专利技术实施例提供了一种序列池化方法,该方法包括:
4、确定第一程序语言序列中的每个向量与相邻向量的相似度;所述第一程序语言序列中的每个向量表征一个词法单元token;
5、根据所述相似度从小到大的顺序对所述第一程序语言序列中的所有向量进行排序;
6、从排序后的所述第一程序语言序列中的相似度最小的向量开始,获取设定数量的向量的索引值;所述设定数量为所述第一程序语言序列对应的池化序列的长度;
7、将所述设定数量的向量的索引值按照从小到大的顺序进行排序,得到第一索引序列;
8、基于所述第一索引序列,确定所述第一程序语言序列的池化序列。
9、在上述方案中,所述基于所述第一索引序列,确定所述
10、基于所述第一程序语言序列的向量位置和序列长度,对所述第一索引序列进行索引值的预填充,得到第二索引序列;所述第二索引序列与所述第一程序语言序列的序列长度相同;
11、从所述第一索引序列中提取索引值替换所述第二索引序列中预填充的索引值,得到第三索引序列;
12、将所述池化序列的索引值映射到所述第三索引序列中,得到第四索引序列;
13、基于所述第四索引序列中的索引值和所述第一程序语言序列的向量,确定所述池化序列的向量。
14、在上述方案中,所述从所述第一索引序列中提取索引值替换所述第二索引序列中预填充的索引值,得到第三索引序列,包括:
15、确定当前线程对应的第一索引值在所述第二索引序列中的序号,所述序号表征所述第一索引值在所述第二索引序列中的位置;所述第二索引序列中的每个索引值对应一个线程;
16、遍历所述第一索引序列中的索引值,若所述第一索引值的序号大于当前遍历的第二索引值,且所述第二索引值为所述第一索引序列的遍历终点,则使用所述第二索引值替换所述第二索引序列中的第一索引值;
17、若所述第一索引值的序号等于当前遍历的第二索引值,则使用所述第二索引值替换所述第二索引序列中的第一索引值。
18、在上述方案中,所述方法还包括:
19、若当前遍历的第二索引值不等于所述第一索引值的序号,且所述第二索引值不是所述第一索引序列的遍历终点,则获取第一差值和第二差值;所述第一差值表征当前遍历的第二索引值与所述第一索引值的序号的差值的绝对值,所述第二差值表征所述当前线程在上一次遍历时得到的第一差值;
20、若所述第一差值大于所述第二差值,且所述第一索引值的序号大于第三索引值,则使用所述第二索引值替换所述第二索引序列中的第一索引值;所述第三索引值表征所述第一索引序列中的所述第二索引值的前一个索引值;
21、若所述第一差值等于所述第二差值,则使用所述第二索引值替换所述第二索引序列中的第一索引值;
22、若所述第一差值大于所述第二差值,且所述第一索引值的序号小于或等于所述第三索引值,则使用所述第三索引值替换所述第二索引序列中的第一索引值。
23、在上述方案中,所述方法还包括:
24、若当前遍历的第二索引值为所述第一索引序列的遍历起点,或所述第一差值小于所述第二差值,则将当前遍历得到的所述第一差值设置为下一次遍历时的第二差值。
25、在上述方案中,所述基于所述第四索引序列中的索引值和所述第一程序语言序列的向量,确定所述池化序列的向量,包括:
26、确定当前线程遍历的第一元素在所述第一程序语言序列中对应的第一向量,所述第一程序语言序列中的每个向量包括多个元素,每个向量中的多个元素由一个线程进行遍历;
27、确定所述第一向量在所述第四索引序列中对应的第四索引值;
28、基于所述第一元素在所述第一向量中的相对位置,确定所述第一程序语言序列中都对应第四索引值的向量中的位于所述相对位置的元素;
29、基于所述第一程序语言序列中都对应第四索引值的向量中的位于所述相对位置的元素,确定所述池化序列的第二向量中位于所述相对位置的元素;所述第二向量与所述第四索引序列中的第四索引值存在映射关系。
30、在上述方案中,所述获取设定数量的向量的索引值,包括:
31、基于预设字典确定所述设定数量的向量中的每个向量的索引值;所述预设字典存储有多个token的索引值。
32、另一方面,本专利技术实施例还提供了一种序列池化方法,该方法包括:
33、基于第一模型的多层编码器中的神经网络对第二程序语言序列进行特征提取;所述第二程序语言序列包括多个词法单元token;所述多层编码器的每一层编码器包括神经网络和池化层;
34、基于所述多层编码器中的池化层对经过当前层神经网络特征提取后的所述第二程序语言序列进行池化处理,并将池化处理结果输入至下一层神经网络进行特征提取;其中,每一层神经网络的输出为当前池化层的输入,每一层池化层的输出为下一层神经网络的输入;所述池化层执行如第一方面所述的序列池化方法进行池化处理;
35、获取最后一层编码器的池化层输出的池化序列。
36、在上述方案中,所述第一模型还包括嵌入层,所述方法还包括:
37、基于预设字典确定源码数据中的函数对应的第五索引序列;所述函数包括多个token,所述预设字典存储有多个token的索引值;
38、基于所述嵌入层对所述第五索引序列进行嵌入编码,得到所述第二程序语言序列。
39、另一方面,本专利技术实施例提供了一种分类方法,该方法包括:
40、基于第二模型的多层编码器中的神经网络对第三程序语言序列进行特征提取;所述第三程序语言序列包括多个词法单元token;所述多层编码器的每一层编码器包括神经网络和池化层;
41、基于所述多层编码器中的池化层对经过当前层神经网络特征提取后的所述第三程序语言序列进行池化处理,并将池化处理结果输入至下一层神经网络进行特征提取;其中,每一层神经网络的输出为当前池化层的输入,每一层池化层的输出为下一层神经网络的输入;所述池化层执行如第一方面所述的方法进行池化处理;
42、基于所述第二模型的分类器对最后一层编码器本文档来自技高网...
【技术保护点】
1.一种序列池化方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述基于所述第一索引序列,确定所述第一程序语言序列对应的池化序列,包括:
3.如权利要求2所述的方法,其特征在于,所述从所述第一索引序列中提取索引值替换所述第二索引序列中预填充的索引值,得到第三索引序列,包括:
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
6.如权利要求2所述的方法,其特征在于,所述基于所述第四索引序列中的索引值和所述第一程序语言序列的向量,确定所述池化序列的向量,包括:
7.如权利要求1所述的方法,其特征在于,所述获取设定数量的向量的索引值,包括:
8.一种序列池化方法,其特征在于,包括:
9.如权利要求8所述的方法,其特征在于,所述第一模型还包括嵌入层,所述方法还包括:
10.一种分类方法,其特征在于,包括:
11.如权利要求10所述的方法,其特征在于,所述第一模型还包括嵌入层,所述方法还包
12.一种代码生成方法,其特征在于,包括:
13.如权利要求12所述的方法,其特征在于,所述基于所述第三模型的解码器对所述多层编码器的输出结果进行反池化,包括:
14.如权利要求13所述的方法,其特征在于,所述方法还包括:
15.一种序列池化装置,其特征在于,包括:
16.一种序列池化装置,其特征在于,包括:
17.一种分类装置,其特征在于,包括:
18.一种代码生成装置,其特征在于,包括:
19.一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9任一项所述的序列池化方法、或实现如权利要求10至11任一项所述的分类方法、或实现如权利要求12至14任一项所述的代码生成方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1至9任一项所述的序列池化方法、或执行如权利要求10至11任一项所述的分类方法、或执行如权利要求12至14任一项所述的代码生成方法。
...【技术特征摘要】
1.一种序列池化方法,其特征在于,包括:
2.如权利要求1所述的方法,其特征在于,所述基于所述第一索引序列,确定所述第一程序语言序列对应的池化序列,包括:
3.如权利要求2所述的方法,其特征在于,所述从所述第一索引序列中提取索引值替换所述第二索引序列中预填充的索引值,得到第三索引序列,包括:
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
6.如权利要求2所述的方法,其特征在于,所述基于所述第四索引序列中的索引值和所述第一程序语言序列的向量,确定所述池化序列的向量,包括:
7.如权利要求1所述的方法,其特征在于,所述获取设定数量的向量的索引值,包括:
8.一种序列池化方法,其特征在于,包括:
9.如权利要求8所述的方法,其特征在于,所述第一模型还包括嵌入层,所述方法还包括:
10.一种分类方法,其特征在于,包括:
11.如权利要求10所述的方法,其特征在于,所述第一模型还包括嵌入层,所述方法还包括:
12.一种代码生成方法,其特征在...
【专利技术属性】
技术研发人员:邓琛,赵明,
申请(专利权)人:苏州洞察云信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。