对象类型的处理方法、装置、电子设备及存储介质制造方法及图纸

技术编号:38210141 阅读:11 留言:0更新日期:2023-07-21 17:01
本公开提供了一种对象类型的处理方法、装置、电子设备及存储介质,涉深度学习以及软件发开等技术领域。具体实现方案包括:确定集成开发环境中业务的代码处于非运行状态;基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;在所述业务的代码中注释所述指定对象的类型信息。本公开的技术,能够有效地提高业务代码的开发效率。码的开发效率。码的开发效率。

【技术实现步骤摘要】
对象类型的处理方法、装置、电子设备及存储介质


[0001]本公开涉及计算机
,具体涉及深度学习以及软件发开等
,尤其涉及一种对象类型的处理方法、装置、电子设备及存储介质。

技术介绍

[0002]深度学习框架中,通常采用Python语言进行开发,Python语言是一门动态语言,不需要指定对象类型信息。可是自从Python增强建议(Python Enhancement Proposals;PEP)406提出之后,Python3.5引入了类型提示功能,开发者只需要在源码中添加类型注释即可添加类型提示功能。不同于其他静态语言,Python代码中的类型注释并不影响解释器的运行,反而将其作为注释的一种而忽略掉,从而遵循动态语言的本质。
[0003]在深度学习的开发中,开发者在编写深度学习代码时不可避免的频繁对一些对象调用方法和属性。但是有一些类型的对象生成情况较为复杂,无法获取到这些对象的类型,进而也无法在Python代码中注释这些对象的类型,以进行提示。例如,有些对象的动态图和静态图下的表示不一致,而且这些对象都是通过Pybind11在C++端实现的。在使用这些对象时,由于静态类型的分析工具无法通过分析Python源码的方式,来获取对象的类型信息,导致无法从深度学习的集成开发环境(Integrated Development Environment;IDE)/编辑器(Editor)中获取这些对象的类型。

技术实现思路

[0004]本公开提供了一种对象类型的处理方法、装置、电子设备及存储介质。
[0005]根据本公开的一方面,提供了一种对象类型的处理方法,包括:
[0006]确定集成开发环境中业务的代码处于非运行状态;
[0007]基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;
[0008]在所述业务的代码中注释所述指定对象的类型信息。
[0009]根据本公开的另一方面,提供了一种对象类型的处理装置,包括:
[0010]确定模块,用于确定集成开发环境中业务的代码处于非运行状态;
[0011]类型获取模块,用于基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;
[0012]注释模块,在所述业务的代码中注释所述指定对象的类型信息。
[0013]根据本公开的再一方面,提供了一种电子设备,包括:
[0014]至少一个处理器;以及
[0015]与所述至少一个处理器通信连接的存储器;其中,
[0016]所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方面和任一可能的实现方式的方法。
[0017]根据本公开的又一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如上所述的方面和任一可能的实现方式的方法。
[0018]根据本公开的再另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方面和任一可能的实现方式的方法。
[0019]根据本公开的技术,能够有效地提高业务代码的开发效率。
[0020]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0021]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0022]图1是根据本公开第一实施例的示意图;
[0023]图2是根据本公开第二实施例的示意图;
[0024]图3是本公开提供的调用代理模块的代码片段示意图;
[0025]图4是本公开提供的一种业务的一段代码片段的示意图;
[0026]图5是图4所示的Tensor类型的智能提示的效果图;
[0027]图6是根据本公开第三实施例的示意图;
[0028]图7是根据本公开第四实施例的示意图;
[0029]图8是用来实现本公开实施例的方法的电子设备的框图。
具体实施方式
[0030]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0031]显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
[0032]需要说明的是,本公开实施例中所涉及的终端设备可以包括但不限于手机、个人数字助理(Personal Digital Assistant,PDA)、无线手持设备、平板电脑(Tablet Computer)等智能设备;显示设备可以包括但不限于个人电脑、电视等具有显示功能的设备。
[0033]另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0034]图1是根据本公开第一实施例的示意图;如图1所示,本实施例提供一种对象类型的处理方法,应用在深度学习的IDE中,具体可以包括如下步骤:
[0035]S101、确定IDE中业务的代码处于非运行状态;
[0036]S102、基于对业务的代码对应的配置文件以及源代码的解析,获取业务的代码中
指定对象的类型信息;
[0037]S103、在业务的代码中注释指定对象的类型信息。
[0038]本实施例的技术方案,应用于深度学习的框架中,业务的代码可以采用Python语言进行开发。对于有些指定对象,是通过Pybind11在C++端实现的,所以,静态类型分析工具很难直接从Python代码中获得指定对象的类型信息。所以,在本实施例的技术方案中,可以基于对业务的代码对应的配置文件以及源代码的解析,获取业务的代码中指定对象的类型信息,这样,可以解决静态分析工具无法从Python代码中获得指定对象的类型信息的问题。进一步地,在业务的代码中注释指定对象的类型信息,实现对指定对象的类型进行有效地提示,以供开发者参考,进而可以有效地提高开发效率。
[0039]而且在实际应用中,指定对象的类型的注释主要是提示给开发者,供开发者参考。考虑到开发者开发业务的代码时,业务的代码应该处于非运行状态。而且,业务的代码若处于运行状态,在业务代码中注释指定对象的类型信息,可能会导致业务的代码运行出现错误(Bug)等问题。所以,本实施例中,必须要确定IDE中业务的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种对象类型的处理方法,包括:确定集成开发环境中业务的代码处于非运行状态;基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息;在所述业务的代码中注释所述指定对象的类型信息。2.根据权利要求1所述的方法,其中,基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述业务的代码中指定对象的类型信息,包括:调用为所述业务的代码预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息。3.根据权利要求2所述的方法,其中,调用预先配置的代理模块,从所述代理模块对所述业务的代码对应的所述配置文件以及所述源代码的解析中,获取所述指定对象的类型信息之前,所述方法还包括:为所述业务的代码配置所述代理模块,使得所述代理模块能够解析所述业务的代码对应的配置文件以及源代码,获取所述指定对象的类型信息。4.根据权利要求2所述的方法,其中,所述配置文件包括算子YAML文件,所述源代码包括C++源码,所述指定对象包括张量对象。5.根据权利要求1所述的方法,其中,确定集成开发环境中业务的代码处于非运行状态,包括:通过检测标识业务的代码运行状态的预设变量的值,确定所述业务的代码处于非运行状态。6.根据权利要求5所述的方法,其中,通过检测标识程序运行状态的预设变量的值,确定所述业务的代码处于非运行状态,包括:检测预设变量typing.TYPE_CHECKING的值是否为True;若是,确定所述业务的代码处于非运行状态。7.根据权利要求1

6中任一所述的方法,其中,在所述业务的代码中注释所述指定对象的类型信息,包括:在所述业务的代码中所述指定对象的位置处注释所述指定对象的类型信息;或者以弹框的形式在所述业务的代码中所述指定对象的位置处展示所述指定对象的类型信息。8.一种对象类型的处理装置,包括:确定模块,用于确定集成开发环境中业务的代码处于非运行状态;类型获取模块,用于基于对所述业务的代码对应的配置文件以及源代码的解析,获取所述...

【专利技术属性】
技术研发人员:吴京京骆涛徐晓健孔嘉明詹荣瑞
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1