代码生成方法、装置、设备及存储介质制造方法及图纸

技术编号:28836369 阅读:14 留言:0更新日期:2021-06-11 23:33
本发明专利技术涉及一种代码生成方法、装置、设备及存储介质,所述代码生成方法包括:获取初始运算表达式,其中,所述初始运算表达式包括第一张量的索引运算;针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式;根据所述目标算术表达式生成代码,其中,所述索引运算的表达式的代码,按照所述索引运算的索引信息对所述第一张量进行标注得到。因此可以针对包含索引运算的张量运算生成代码,且在代码运行时减少了对索引运算结果的读写操作,进而节省了针对索引运算结果的存储空间。

【技术实现步骤摘要】
代码生成方法、装置、设备及存储介质
本专利技术涉及代码生成
,尤其涉及一种代码生成方法、装置、设备及存储介质。
技术介绍
随着人工智能技术的发展,图像等对象可以在多方面进行自动处理,降低了人工成本,提高了效率和准确率。这些对象的特征多会使用张量进行表示,因此特征的处理可以用张量的运算过程表示,但是相关技术中,针对张量处理的运算过程,尤其是包括索引运算的运算过程,无法自动生成代码。
技术实现思路
本专利技术提供一种代码生成方法、装置、设备及存储介质,以解决相关技术中的下述技术问题:针对张量处理的运算过程,尤其是包括索引运算的运算过程,无法自动生成代码。根据本专利技术实施例的第一方面,提供一种代码生成方法,包括:获取初始运算表达式,其中,所述初始运算表达式包括第一张量的索引运算;针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式;根据所述目标算术表达式生成代码,其中,所述索引运算的表达式的代码,按照所述索引运算的索引信息对所述第一张量进行标注得到。结合本公开提供的任一实施方式,所述针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式,包括:根据所述初始运算表达式,生成运算图;根据所述运算图,生成所述目标算术表达式。结合本公开提供的任一实施方式,根据所述初始运算表达式,生成运算图,包括:响应于所述初始运算表达式中算术运算的输入和输出中的一个为所述第一张量的索引运算的结果,另一个为第二张量,生成表示所述第一张量的第一节点、表示所述第二张量的第二节点以及表示所述索引运算的索引信息和所述算术运算的算术信息的运算边;响应于所述初始运算表达式中算术运算的输入和输出中的一个为所述第一张量,另一个为第三张量,生成表示所述第一张量第一节点、表示所述第三张量的第三节点以及表示所述算术运算的算术信息的算术边。结合本公开提供的任一实施方式,还包括:响应于所述第一节点和所述第二节点间具有两条运算边,且所述两条运算边所表示的算术信息的方向相反,根据所述第一张量和一条运算边表示的索引信息确定第四张量;删除所述一条运算边,并生成表示所述第四张量的第四节点、表示所述一条第一边所表示的算术信息的算术边以及连接所述第一节点和所述第四节点的跳边。结合本公开提供的任一实施方式,所述根据所述运算图,生成目标算术表达式,包括:根据所述运算图的每条运算边及所述运算边两端的节点,生成目标算术表达子式,和/或,根据所述运算图的每条算术边及所述算术边两端的节点,生成目标算术表达子式。结合本公开提供的任一实施方式,所述按照所述索引运算的索引信息对所述第一张量进行标注,包括:根据所述索引信息确定所述索引运算的结果的维度信息、偏置信息和步长信息,其中,所述维度信息包括各个维度的维度内容,所述偏置信息表征首个张量元素在所述张量中的位置,所述步长信息包括各个维度的步长内容,所述步长内容表征对应维度的张量元素的循环周期;使用所述维度信息、所述偏置信息和所述步长信息标注所述第一张量。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为整数时,所述根据所述索引信息确定所述索引运算的结果的维度信息,包括:从原始维度信息中删除所述第一维度的维度内容,以得到所述索引运算的结果的维度信息,其中,所述原始维度信息为所述索引运算所针对的张量的维度信息。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为整数时,所述根据所述索引信息确定所述索引运算的结果的偏置信息,包括:根据原始偏置信息、所述整数和所述原始步长信息中的第一维度的步长内容,确定所述索引运算的结果的偏置信息,其中,所述原始偏置信息为所述索引运算所针对的张量的偏置信息,所述原始步长信息为所述索引运算所针对的张量的步长信息。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为整数时,所述根据所述索引信息确定所述索引运算的结果的步长信息,包括:从原始步长信息中删除所述第一维度的步长内容,以得到所述索引运算的结果的步长信息,其中,所述原始步长信息为所述索引运算所针对的张量的步长信息。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为切片时,所述根据所述索引信息确定所述索引运算的结果的维度信息,包括:根据原始维度信息中第一维度的维度内容、以及所述切片的起始值、终止值和步长值确定第一维度的维度内容,其他维度的维度内容保持不变,以得到所述索引运算的结果的维度信息,其中,所述原始维度信息为所述索引运算所针对的张量的维度信息。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为切片时,所述根据所述索引信息确定所述索引运算的结果的偏置信息,包括:根据原始偏置信息、所述切片的起始值和所述原始步长信息中的第一维度的步长内容,确定所述索引运算的结果的偏置信息,其中,所述原始偏置信息为所述索引运算所针对的张量的偏置信息,所述原始步长信息为所述索引运算所针对的张量的步长信息。结合本公开提供的任一实施方式,当所述索引信息中的第一维度的索引元素为切片时,所述根据所述索引信息确定所述索引运算的结果的步长信息,包括:根据原始步长信息中的第一维度的步长内容和所述切片的步长值确定第一维度的步长内容,其他维度的步长内容保持不变,以形成所述索引运算的结果的步长信息,其中,所述原始步长信息为所述索引运算所针对的张量的步长信息。结合本公开提供的任一实施方式,当所述索引信息包括多个维度的索引元素时,所述根据所述索引信息确定所述索引运算的结果的维度信息、偏置信息和步长信息,包括:依次根据每个维度的索引元素确定索引结果的维度信息、偏置信息和步长信息。结合本公开提供的任一实施方式,所述第一张量以有序数组的形式进行保存,其中,所述有序数组的顺序根据所述张量的各个维度的预设顺序以及每个维度内的张量元素的预设顺序进行确定;所述使用所述维度信息、所述偏置信息和所述步长信息标注所述张量,包括:使用所述维度信息、所述偏置信息和所述步长信息标注所述索引运算的结果所包含的各个张量元素在所述有序数组内的位置。结合本公开提供的任一实施方式,所述第一张量的偏置信息为0,首个维度的步长内容为1,其他维度的步长内容为前一维度的步长内容与维度内容的乘积。根据本专利技术实施例的第二方面,提供一种代码生成装置,包括:获取模块,用于获取初始运算表达式,其中,所述初始运算表达式包括第一张量的索引运算;转化模块,用于针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式;生成模块,用于根据所述目标算术表本文档来自技高网...

【技术保护点】
1.一种代码生成方法,其特征在于,包括:/n获取初始运算表达式,其中,所述初始运算表达式包括第一张量的索引运算;/n针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式;/n根据所述目标算术表达式生成代码,其中,所述索引运算的表达式的代码,按照所述索引运算的索引信息对所述第一张量进行标注得到。/n

【技术特征摘要】
1.一种代码生成方法,其特征在于,包括:
获取初始运算表达式,其中,所述初始运算表达式包括第一张量的索引运算;
针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式;
根据所述目标算术表达式生成代码,其中,所述索引运算的表达式的代码,按照所述索引运算的索引信息对所述第一张量进行标注得到。


2.根据权利要求1所述的代码生成方法,其特征在于,所述针对所述初始运算表达式中关于所述索引运算的结果的算术运算,通过以所述索引运算的表达式作为输入或输出,将所述初始运算表达式转化为目标算术表达式,包括:
根据所述初始运算表达式,生成运算图;
根据所述运算图,生成所述目标算术表达式。


3.根据权利要求2所述的代码生成方法,其特征在于,根据所述初始运算表达式,生成运算图,包括:
响应于所述初始运算表达式中算术运算的输入和输出中的一个为所述第一张量的索引运算的结果,另一个为第二张量,生成表示所述第一张量的第一节点、表示所述第二张量的第二节点以及表示所述索引运算的索引信息和所述算术运算的算术信息的运算边;
响应于所述初始运算表达式中算术运算的输入和输出中的一个为所述第一张量,另一个为第三张量,生成表示所述第一张量第一节点、表示所述第三张量的第三节点以及表示所述算术运算的算术信息的算术边。


4.根据权利要求3所述的代码生成方法,其特征在于,还包括:
响应于所述第一节点和所述第二节点间具有两条运算边,且所述两条运算边所表示的算术信息的方向相反,根据所述第一张量和一条运算边表示的索引信息确定第四张量;
删除所述一条运算边,并生成表示所述第四张量的第四节点、表示所述一条第一边所表示的算术信息的算术边以及连接所述第一节点和所述第四节点的跳边。


5.根据权利要求2至4任一项所述的代码生成方法,其特征在于,所述根据所述运算图,生成目标算术表达式,包括:
根据所述运算图的每条运算边及所述运算边两端的节点,生成目标算术表达子式,和/或,根据所述运算图的每条算术边及所述算术边两端的节点,生成目标算术表达子式。


6.根据权利要求1至5任一项所述的代码生成方法,其特征在于,所述按照所述索引运算的索引信息对所述第一张量进行标注,包括:
根据所述索引信息确定所述索引运算的结果的维度信息、偏置信息和步长信息,其中,所述维度信息包括各个维度的维度内容,所述偏置信息表征首个张量元素在所述张量中的位置,所述步长信息包括各个维度的步长内容,所述步长内容表征对应维度的张量元素的循环周期;
使用所述维度信息、所述偏置信息和所述步长信息标注所述第一张量。


7.根据权利要求6所述的代码生成方法,其特征在于,当所述索引信息中的第一维度的索引元素为整数时,所述根据所述索引信息确定所述索引运算的结果的维度信息,包括:
从原始维度信息中删除所述第一维度的维度内容,以得到所述索引运算的结果的维度信息,其中,所述原始维度信息为所述索引运算所针对的张量的维度信息。


8.根据权利要求6所述的代码生成方法,其特征在于,当所述索引信息中的第一维度的索引元素为整数时,所述根据所述索引信息确定所述索引运算的结果的偏置信息,包括:
根据原始偏置信息、所述整数和所述原始步长信息中的第一维度的步长内容,确定所述索引运算的结果的偏置信息,其中,所述原始偏置信息为所述索引运算所针对的张量的偏置信息,所述原始步长信息为所述索引运算所针对的张量的步长信息。


9.根据权利要求6所述的代码生成方法,其...

【专利技术属性】
技术研发人员:李秀红肖权伦颜深根
申请(专利权)人:上海商汤智能科技有限公司
类型:发明
国别省市:上海;31

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

1