mindspore.onnx.export

查看源文件
mindspore.onnx.export(net, *inputs, file_name, input_names=None, output_names=None, export_params=True, keep_initializers_as_inputs=False, dynamic_axes=None)[源代码]

将MindSpore网络模型导出为ONNX文件。

说明

  • 支持模型大小超过2GB导出ONNX,当检测到模型大小超过2GB时,模型的参数会保存在额外的二进制文件中,与ONNX文件保存在同级目录。

  • file_name 没有后缀时,系统会自动添加后缀 .onnx

参数:
  • net (Union[Cell, function]) - MindSpore网络结构。

  • inputs (Union[Tensor, list, tuple, Number, bool]) - 网络的输入,如果网络有多个输入,需要一同传入。

  • file_name (str) - 导出模型的文件名称。

  • input_names (list, 可选) - 按顺序为图的输入节点修改名称。默认值: None

  • output_names (list, 可选) - 按顺序为图的输出节点修改名称。默认值: None

  • export_params (bool, 可选) - 如果设置为False,参数(权重)将不会被导出到ONNX模型中,而作为模型的输入节点。默认值: True

  • keep_initializers_as_inputs (bool, 可选) - 如何设置为True,所有的初始化值(模型参数、模型权重)也将被添加为图的输入,当运行导出的ONNX模型时,如果想替换某一或所有权重,请设置为True。默认值:False

  • dynamic_axes (dict[str, dict[int, str]], 可选) - 将输入节点张量的轴指定为动态的(运行时)。默认值: None

    • 参数格式为{"输入节点": {轴索引: "轴名称"}},例如:{"input1": {0:"batch_size", 1: "seq_len"}, "input2": {{0:"batch_size"}}。

    • 默认情况下,导出的模型的所有输入张量的形状与 inputs 中给定的形状完全匹配。

异常:
  • ValueError - 参数 net 的类型不为 mindspore.nn.Cell 对象。

  • ValueError - 参数 input_names 的类型不为list。

  • ValueError - 参数 output_names 的类型不为list。

  • ValueError - 参数 dynamic_axes 的类型不为dict。

样例:

>>> import mindspore as ms
>>> import numpy as np
>>> from mindspore import Tensor
>>>
>>> # Define the network structure of LeNet5. Refer to
>>> # https://gitee.com/mindspore/docs/blob/master/docs/mindspore/code/lenet.py
>>> net = LeNet5()
>>> input_tensor = Tensor(np.ones([1, 1, 32, 32]).astype(np.float32))
>>> ms.onnx.export(net, input_tensor, file_name='lenet.onnx', input_names=['input1'], output_names=['output1'])