System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及计算机,尤其涉及人工智能领域。
技术介绍
1、目前主流深度学习框架支持的编程方式有两种,分别为动态图和静态图。动态图的编程体验更佳、更易调试,但性能方面与静态图有一定差距。静态图先组网再执行,预先拥有完整网络结构,更利于全局优化,虽调试难度大,但执行性能更佳,所以动转静的功能必不可少,但是目前动转静技术的准确率较低,导致代码的运行效率较低。
技术实现思路
1、本公开提供了一种用于字节码处理的方法、装置、设备以及存储介质。
2、根据本公开的第一方面,提供了一种字节码处理方法,包括:
3、对源代码进行解析以获取字节码,并从所述字节码中提取目标变量;
4、根据所述目标变量的第一输入值运行所述字节码,以获取运行结果;
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、可选的,所述变量提取模块包括:
32、转化模块,用于将所述源代码转化为字节码,其中,所述字节码为所述源代码对应的中间表示;
33、模拟运行模块,用于将所述字节码按照顺序模拟执行,获取所述字节码对应的语义;
34、变量确定模块,用于根据所述语义从所述字节码中确定目标变量,其中,所述目标变量对所述字节码的输出有影响。
35、可选的,所述函数生成模块包括:
36、创建模块,用于创建所述目标变量对应的保护信息,其中,所述保护信息中用于从框架字典中提取所述目标变量,且所述保护信息中包含所述目标变量对应的第一输入值;
37、生成模块,用于根据所述保护信息生成保护函数,所述保护函数用于对所述第二输入值与所述第一输入值进行对比。
38、可选的,所述生成模块包括:
39、公共因子确定模块,用于确定各个所述目标变量之间的公共因子和非公共因子,其中,所述公共因子为各个所述目标变量中相同的因子;
40、中间变量生成模块,用于根据所述公共因子生成中间变量,并根据所述非公共因子引用所述中间变量。
41、可选的,所述装置还包括:
42、分桶模块,用于选取一个所述目标变量作为参考变量,根据所述参考变量对应的各个所述第一输入值创建桶文件;
43、存储模块,用于将所述参考变量的第一输入值相同的保护函数存储至同一个所述桶文件中。
44、可选的,所述对比模块包括:
45、第一对比模块,用于将所述目标变量的所述第二输入值与所述保护函数中目标变量的第一输入值进行对比;
46、第一目标确定模块,如果所有所述目标变量的第二输入值和所述第一输入值相同,则确定所述保护函数为所述目标保护函数,提取所述目标保护函数中包含的运行结果。
47、可选的,所述第一对比模块包括:
48、第二对比模块,用于将所述参考变量的所述第二输入值与所述保护函数中参考变量的第一输入值进行对比;
49、第二目标确定模块,用于如果参考变量的所述第二输入值和所述第一输入值相同,则检索所述第一输入值对应的桶文件,对比其他目标变量的第二输入值和第一输入值。
50、根据本公开的第三方面,提供了一种电子设备,包括:
51、至少一个处理器;以及
52、与所述至少一个处理器通信连接的存储器;其中,
53、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面中任一项所述的方法。
54、根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据第一方面中任一项所述的方法。
55、根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据第一方面中任一项所述的方法。
56、本公开实施例可以实现以下有益效果:
<本文档来自技高网...【技术保护点】
1.一种字节码处理方法,包括:
2.根据权利要求1所述的方法,其中,所述对源代码进行解析以获取字节码,并从所述字节码中提取目标变量,包括:
3.根据权利要求2所述的方法,其中,所述根据所述运行结果、所述目标变量和所述第一输入值生成保护函数,包括:
4.根据权利要求3所述的方法,其中,所述根据所述保护信息生成保护函数,包括:
5.根据权利要求3所述的方法,其中,所述方法还包括:
6.根据权利要求5所述的方法,其中,所述获取所述目标变量的第二输入值,并根据所述第二数据值确定目标保护函数,包括:
7.根据权利要求5所述的方法,其中,所述将所述目标变量的所述第二输入值与所述保护函数中目标变量的第一输入值进行对比,包括:
8.一种字节码处理装置,包括:
9.根据权利要求8所述的装置,其中,所述变量提取模块包括:
10.根据权利要求9所述的装置,其中,所述函数生成模块包括:
11.根据权利要求10所述的装置,其中,所述生成模块包括:
12.根据权利要求10所述的
13.根据权利要求12所述的装置,其中,所述对比模块包括:
14.根据权利要求12所述的装置,其中,所述第一对比模块包括:
15.一种电子设备,包括:
16.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-7中任一项所述的方法。
17.一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据权利要求1-7中任一项所述的方法。
...【技术特征摘要】
1.一种字节码处理方法,包括:
2.根据权利要求1所述的方法,其中,所述对源代码进行解析以获取字节码,并从所述字节码中提取目标变量,包括:
3.根据权利要求2所述的方法,其中,所述根据所述运行结果、所述目标变量和所述第一输入值生成保护函数,包括:
4.根据权利要求3所述的方法,其中,所述根据所述保护信息生成保护函数,包括:
5.根据权利要求3所述的方法,其中,所述方法还包括:
6.根据权利要求5所述的方法,其中,所述获取所述目标变量的第二输入值,并根据所述第二数据值确定目标保护函数,包括:
7.根据权利要求5所述的方法,其中,所述将所述目标变量的所述第二输入值与所述保护函数中目标变量的第一输入值进行对比,包括:
8.一种字节码处理装置,包括:
...【专利技术属性】
技术研发人员:熊昆,徐晓健,吴展飞,王震,张留杰,刘红雨,蓝翔,
申请(专利权)人:北京百度网讯科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。