一种ONNX神经网络面向后端部署转换方法与装置制造方法及图纸

技术编号:38153316 阅读:12 留言:0更新日期:2023-07-13 09:19
本发明专利技术提供一种ONNX神经网络面向后端部署转换方法与装置,通过遍历ONNX模型中的所有算子,找到其中的Matmul算子和Upsample算子,将Matmul算子转化为relayir模型中所对应的dense算子或第一组合算子或第二组合算子,将Upsample算子转换为relayir模型中所对应的resize算子,将其余的算子全部直接转换为relayir算子,从而让ONNX模型转换为relayir模型,保证所有算子能被后端支持,避免运算无法正常运行的情况,达到快速部署的目的。达到快速部署的目的。达到快速部署的目的。

【技术实现步骤摘要】
一种ONNX神经网络面向后端部署转换方法与装置


[0001]本专利技术涉及神经网络领域,特别是涉及一种ONNX神经网络面向后端部署转换方法与装置。

技术介绍

[0002]ONNX(Open Neural Network Exchange,开放式神经网络交换)神经网络在面向后端部署时,由于后端硬件特性和相应的硬件软件包支持程度有限,ONNX神经网络中往往存在后端不支持的算子,导致推理运算无法正常运行;而这些不支持的算子中Matmul算子和Upsample算子为近段时间来新流行的ONNX神经网络中的算子,并且使用频率逐渐上升。而Matmul算子和Upsample算子相对于后端的不支持,导致ONNX神经网络难以向后端进行快速部署。
[0003]鉴于此,克服该现有技术所存在的缺陷是本
亟待解决的问题。

技术实现思路

[0004]本专利技术要解决的技术问题是如何将ONNX模型中的Matmul算子和Upsample算子转换为后端所支持的算子。
[0005]本专利技术实施例采用如下技术方案:
[0006]第一方面,提供一种ONNX神经网络面向后端部署转换方法,包括:
[0007]遍历ONNX模型中的所有算子,所述算子包括:Matmul算子、Upsample算子和常规算子;
[0008]当算子为所述Matmul算子时,将该算子由Matmul算子转换为relayir模型中所对应的dense算子、第一组合算子或第二组合算子,其中,所述第一组合算子为dense和reshape组合算子,所述第二组合算子为reshape和batch_matmul组合算子;
[0009]当算子为所述Upsample算子时,将该算子由Upsample算子转换为relayir模型中所对应的resize算子;
[0010]当算子为所述常规算子时,将该算子转换成relayir模型中所对应的relayir算子;
[0011]在所述ONNX模型中的所有算子均转换为relayir模型中所对应的算子后,将所述ONNX模型转换为relayir模型。
[0012]优选的,所述当算子为所述Matmul算子时,将该算子由Matmul算子转换为relayir模型中所对应的dense算子、第一组合算子或第二组合算子,具体包括:
[0013]获取所述Matmul算子的第一输入张量和第二输入张量,并获取所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度;
[0014]根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个;
[0015]从dense算子、reshape算子和batch_matmul算子中选取的一个或者多个算子,进
行算子转换。
[0016]优选的,所述根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个,具体包括:
[0017]当所述第一输入张量和第二输入张量均为二维矩阵时,将所述第二输入张量进行转置;添加所述dense算子,将第一输入张量和转置后的第二输入张量输入至dense算子得到第二输出张量;
[0018]将所述第二输出张量同所述Matmul算子的第一输出张量相对比,当所述第二输出张量同所述第一输出张量一致时,代表所述Matmul算子转换为dense算子,当第二输出张量同所述第一输出张量不一致时,则中断进程。
[0019]优选的,所述根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个,还包括:
[0020]当所述第一输入张量为高维矩阵并且所述第二输入张量为二维矩阵时,于所述第一输入张量后添加所述reshape算子,改变所述第一输入张量的形状;
[0021]将所述第二输入张量进行转置;添加所述dense算子,将改变形状后的第一输入张量以及转置后的第二输入张量输入至所述dense算子得到第三输出张量;
[0022]改变所述第三输出张量的形状,并同所述Matmul算子的第一输出张量的形状相对比,当第三输出张量改变后的形状同所述第一输出张量的形状一致时,代表所述Matmul算子转换为第一组合算子,当第三输出张量改变后的形状同所述第一输出张量的形状不一致时,则中断进程。
[0023]优选的,所述根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个,还包括:
[0024]当所述第一输入张量和第二输入张量均为高维矩阵时,于所述第一输入张量后和所述第二输入张量后均添加所述reshape算子,将所述第一输入张量和所述第二输入张量均进行形状改变;添加所述batch_matmul算子,将改变形状后的第一输入张量和改变形状后的第二输入张量输入至所述batch_matmul算子得到第四输出张量;
[0025]改变所述第四输出张量的形状,并同所述Matmul算子的第一输出张量形状相对比,当第四输出张量改变后的形状同所述第一输出张量形状一致时,代表所述Matmul算子转换为第二组合算子,当第四输出张量改变后的形状同所述第一输出张量形状不一致时,则中断进程。
[0026]优选的,所述当算子为所述Upsample算子时,将该算子由Upsample算子转换为relayir模型中所对应的resize算子,具体包括:
[0027]获取所述Upsample算子的第三输入张量和第四输入张量,并获取所述第三输入张量的矩阵维度和第四输入张量的缩放因子;
[0028]根据所述第三输入张量的矩阵维度进行中断或者向所述Upsample算子添加resize算子。
[0029]优选的,所述根据所述第三输入张量的矩阵维度进行中断或者向所述Upsample算
子添加resize算子,具体包括:
[0030]当所述第三输入张量为五维矩阵时,则中断执行;
[0031]当所述第三输入张量不为五维矩阵时,添加所述resize算子,将第三输入张量和第四输入张量的缩放因子输入至所述resize算子得到第六输出张量;
[0032]当所述第六输出张量同所述Upsample算子的第五输出张量一致时,代表所述Upsample算子转换为resize算子,当所述第六输出张量同所述第一输出张量不一致时,则中断进程。
[0033]优选的,所述当算子为所述常规算子时,将该算子转换成对应的relayir算子,具体包括:
[0034]获取所述常规算子的输入张量的矩阵维度、输入张量形状和参数信息,通过所述输入张量的矩阵维度、输入张量形状和参数信息将常规算子同re本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种ONNX神经网络面向后端部署转换方法,其特征在于,包括:遍历ONNX模型中的所有算子,所述算子包括:Matmul算子、Upsample算子和常规算子;当算子为所述Matmul算子时,将该算子由Matmul算子转换为relayir模型中所对应的dense算子、第一组合算子或第二组合算子,其中,所述第一组合算子为dense和reshape组合算子,所述第二组合算子为reshape和batch_matmul组合算子;当算子为所述Upsample算子时,将该算子由Upsample算子转换为relayir模型中所对应的resize算子;当算子为所述常规算子时,将该算子转换成relayir模型中所对应的relayir算子;在所述ONNX模型中的所有算子均转换为relayir模型中所对应的算子后,将所述ONNX模型转换为relayir模型。2.根据权利要求1所述的ONNX神经网络面向后端部署转换方法,其特征在于,所述当算子为所述Matmul算子时,将该算子由Matmul算子转换为relayir模型中所对应的dense算子、第一组合算子或第二组合算子包括:获取所述Matmul算子的第一输入张量和第二输入张量,并获取所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度;根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个;从dense算子、reshape算子和batch_matmul算子中选取的一个或者多个算子,进行算子转换。3.根据权利要求2所述的ONNX神经网络面向后端部署转换方法,其特征在于,所述根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个包括:当所述第一输入张量和所述第二输入张量均为二维矩阵时,将所述第二输入张量进行转置;添加所述dense算子,将所述第一输入张量和转置后的第二输入张量输入至dense算子得到第二输出张量;将所述第二输出张量同所述Matmul算子的第一输出张量相对比,当所述第二输出张量同所述第一输出张量一致时,代表所述Matmul算子转换为dense算子,当第二输出张量同所述第一输出张量不一致时,则中断进程。4.根据权利要求2所述的ONNX神经网络面向后端部署转换方法,其特征在于,所述根据所述第一输入张量的矩阵维度和所述第二输入张量的矩阵维度,对应向所述Matmul算子添加dense算子、reshape算子和batch_matmul算子中的一个或者多个还包括:当所述第一输入张量为高维矩阵并且所述第二输入张量为二维矩阵时,于所述第一输入张量后添加所述reshape算子,改变所述第一输入张量的形状;将所述第二输入张量进行转置;添加所述dense算子,将改变形状后的第一输入张量以及转置后的第二输入张量输入至所述dense算子得到第三输出张量;改变所述第三输出张量的形状,并同所述Matmul算子的第一输出张量的形状相对比,当所述第三输出张量改变后的形状同所述第一输出张量的形状一致时,代表所述Matmul算子转换为第一组合算子,当所述...

【专利技术属性】
技术研发人员:谌竟成冯雨敖海
申请(专利权)人:芯动微电子科技武汉有限公司
类型:发明
国别省市:

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

1