当前位置: 首页 > 专利查询>北京大学专利>正文

一种兼容多框架的深度学习模型导出至ONNX的方法和装置制造方法及图纸

技术编号:38470592 阅读:8 留言:0更新日期:2023-08-11 14:47
本申请实施例公开了一种兼容多框架的深度学习模型导出至ONNX的方法和装置,其方法包括:获取目标模型的每个层的层信息,以及广度优先搜索规则,目标模型为深度学习统一编程框架模型,目标模型能够兼容多个采用不同转换规则的框架;根据目标模型的每个层的层信息,以及广度优先遍历规则,对目标深度学习模型的每个层依序进行层遍历,得到对应的模型拓扑结构;根据模型拓扑结构,对目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX;以及根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括ONNX模型的模型文件。生成包括ONNX模型的模型文件。生成包括ONNX模型的模型文件。

【技术实现步骤摘要】
一种兼容多框架的深度学习模型导出至ONNX的方法和装置


[0001]本专利技术涉及计算机
,具体涉及一种兼容多框架的深度学习模型导出至ONNX的方法和装置。

技术介绍

[0002]目前,深度学习模型部署大都采用转换为一个中间表示ONNX(Open Neural Network Exchange,开放神经网络交换)来实现,然后通过推理引擎ONNX Runtime进行推理,也有通过TensorRT进行部署的。然而,ONNX已经占据深度学习部署的大部分市场,各个深度学习框架厂商纷纷将其所采用的的框架转换到ONNX。
[0003]目前,用于将各个框架依次转换到ONNX的工具有很多,例如,ensorFlow2ONNX、Keras2ONNX、Paddle2ONNX。上述这些工具均具有对应于其特定的一套转换规则。例如,TensorFlow2ONNX是将TensorFlow算子一一对应到ONNX的算子,然后再将整个TensorFlow模型计算图转换为对应的ONNX的图,然后导出ONNX模型。
[0004]由于各个框架之间算子、算子参数不尽相同,在将各个框架中的任意一个框架转换到ONNX时,都需要配置对应于该框架所采用的特定的一套转换规则。
[0005]目前,各个深度学习框架在模型部署方面,具有其对应的特定一套转换工具(例如,paddle有paddle2onnx转换工具,mindspore有mindspore2onnx转换工具)。由于上述各个深度学习框架具有其对应的特定的前端接口,且各个前端接口之间均存在差异,各个深度学习框架均有其对应的一套转换规则;因此,针对采用不同转换规则的不同深度学习框架,用户需要依次实现对应框架的代码,并通过对应框架的代码来进行模型的部署及迁移,这将使得模型的部署及迁移过程变得困难。

技术实现思路

[0006]基于此,有必要针对现有的针对采用不同转换规则的不同深度学习框架,模型的部署及迁移过程是极其困难的问题,提供一种兼容多框架的深度学习模型导出至ONNX的方法、装置、存储介质、电子设备和计算机程序产品。
[0007]第一方面,本申请实施例提供了一种兼容多框架的深度学习模型导出至ONNX的方法,所述方法包括:
[0008]获取目标模型的每个层的层信息,以及广度优先搜索规则,所述目标模型为深度学习统一编程框架模型,所述目标模型能够兼容多个采用不同转换规则的框架;
[0009]根据所述目标模型的每个层的层信息,以及广度优先遍历规则,对所述目标深度学习模型的每个层依序进行层遍历,得到对应的模型拓扑结构;
[0010]根据所述模型拓扑结构,对所述目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX;
[0011]根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括所述ONNX模型的模型文件。
[0012]在一种实施方式中,所述获取目标模型的每个层的层信息,包括:
[0013]获取模块节点的各项属性信息,模块节点的各项属性信息包括神经网络层、当前层神经网络层输入节点、当前层神经网络层输出节点、当前层神经网络层输入值、当前层神经网络层输出值、以及当前网络层节点名称;
[0014]通过调用所述模块节点执行一次前向传播,获取目标模型的每个层的层信息,所述目标模型的每个层的层信息包括目标神经网络层、任意一层作为当前层所对应当前层神经网络层输入节点、任意一层作为当前层所对应的当前层神经网络层输出节点、任意一层作为当前层所对应的当前层神经网络层输入值、任意一层作为当前层所对应的当前层神经网络层输出值和任意一层作为当前层所对应的当前网络层节点名称。
[0015]在一种实施方式中,所述根据所述模型拓扑结构,对所述目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX,包括:
[0016]获取所述模型拓扑结构;
[0017]根据所述模型拓扑结构确定对应的拓扑排序方式;
[0018]根据拓扑排序方式,依序对每个层进行映射处理,得到对应的ONNX算子组合,以将模型节点映射至ONNX。
[0019]在一种实施方式中,所述多个关键函数至少包括用于创建ONNX计算图的第一函数和用于创建ONNX模型的第二函数,所述根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括所述ONNX模型的模型文件,包括:
[0020]获取将模型节点映射到ONNX的所述映射结果;
[0021]根据所述映射结果、所述第一函数和所述第二函数,创建对应的ONNX计算图和对应的ONNX模型;
[0022]验证所述ONNX模型是否为有效模型,并在验证所述ONNX模型有效的情况下,生成包括所述ONNX模型的模型文件。
[0023]在一种实施方式中,所述验证所述ONNX模型是否为有效模型,包括:
[0024]在从TensorLayerX所使用的每一层均能映射到ONNX统一格式的情况下,验证所述ONNX模型为有效模型。
[0025]在一种实施方式中,所述验证所述ONNX模型是否为有效模型,还包括:
[0026]在所述TensorLayerX中至少包括一个不能映射到ONNX统一格式的层的情况下,验证所述ONNX模型为无效模型。
[0027]在一种实施方式中,所述目标模型能够兼容的多个采用不同转换规则的框架包括以下至少一项:
[0028]TneosFlow、MindSpore、PaddlePaddle和PyTorch。
[0029]第二方面,本申请实施例提供了一种兼容多框架的深度学习模型导出至ONNX的装置,所述装置包括:
[0030]获取模块,用于获取目标模型的每个层的层信息,以及广度优先搜索规则,所述目标模型为深度学习统一编程框架模型,所述目标模型能够兼容多个采用不同转换规则的框架;
[0031]遍历模块,用于根据所述目标模型的每个层的层信息,以及广度优先遍历规则,对所述目标深度学习模型的每个层依序进行层遍历,得到对应的模型拓扑结构;
[0032]映射模块,用于根据所述模型拓扑结构,对所述目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX;
[0033]生成模块,用于根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括所述ONNX模型的模型文件。
[0034]第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序用于执行上述的方法步骤。
[0035]第四方面,本申请实施例提供一种电子设备,所述电子设备包括:
[0036]处理器;
[0037]用于存储所述处理器可执行指令的存储器;
[0038]所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述可执行指令以实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种兼容多框架的深度学习模型导出至ONNX的方法,其特征在于,所述方法包括:获取目标模型的每个层的层信息,以及广度优先搜索规则,所述目标模型为深度学习统一编程框架模型,所述目标模型能够兼容多个采用不同转换规则的框架;根据所述目标模型的每个层的层信息,以及广度优先遍历规则,对所述目标深度学习模型的每个层依序进行层遍历,得到对应的模型拓扑结构;根据所述模型拓扑结构,对所述目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX;根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括所述ONNX模型的模型文件。2.根据权利要求1所述的方法,其特征在于,所述获取目标模型的每个层的层信息,包括:获取模块节点的各项属性信息,模块节点的各项属性信息包括神经网络层、当前层神经网络层输入节点、当前层神经网络层输出节点、当前层神经网络层输入值、当前层神经网络层输出值、以及当前网络层节点名称;通过调用所述模块节点执行一次前向传播,获取目标模型的每个层的层信息,所述目标模型的每个层的层信息包括目标神经网络层、任意一层作为当前层所对应当前层神经网络层输入节点、任意一层作为当前层所对应的当前层神经网络层输出节点、任意一层作为当前层所对应的当前层神经网络层输入值、任意一层作为当前层所对应的当前层神经网络层输出值和任意一层作为当前层所对应的当前网络层节点名称。3.根据权利要求1所述的方法,其特征在于,所述根据所述模型拓扑结构,对所述目标模型的每个层依序进行映射,以将模型节点映射至开放神经网络交换ONNX,包括:获取所述模型拓扑结构;根据所述模型拓扑结构确定对应的拓扑排序方式;根据拓扑排序方式,依序对每个层进行映射处理,得到对应的ONNX算子组合,以将模型节点映射至ONNX。4.根据权利要求1所述的方法,其特征在于,所述多个关键函数至少包括用于创建ONNX计算图的第一函数和用于创建ONNX模型的第二函数,所述根据将模型节点映射到ONNX的映射结果和多个关键函数,通过创建ONNX计算图和创建ONNX模型,生成包括所述ONNX模型的模型文件,包括:获取将模型节点映射到O...

【专利技术属性】
技术研发人员:董豪
申请(专利权)人:北京大学
类型:发明
国别省市:

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

1