Nothing Special   »   [go: up one dir, main page]

Skip to content

Latest commit

 

History

History
executable file
·
124 lines (84 loc) · 5.68 KB

README_zh.md

File metadata and controls

executable file
·
124 lines (84 loc) · 5.68 KB

Paddle2ONNX

简体中文 | English

简介

paddle2onnx支持将PaddlePaddle模型格式转化到ONNX模型格式。

  • 模型格式,支持Paddle静态图和动态图模型转为ONNX,可转换由save_inference_model导出的静态图模型,使用方法请参考IPthon示例。动态图转换目前处于实验状态,将伴随Paddle 2.0正式版发布后,提供详细使用教程。
  • 算子支持,目前稳定支持导出ONNX Opset 9~11,部分Paddle算子支持更低的ONNX Opset转换,详情可参考算子列表
  • 模型类型,官方测试可转换的模型请参考模型库

AIStudio入门教程

环境依赖

用户环境配置

 python >= 2.7  
 静态图: paddlepaddle >= 1.8.0
 动态图: paddlepaddle >= 2.0.0
  1.7.0 | 可选

安装

安装方式1

 pip install paddle2onnx

安装方式2

 git clone https://github.com/PaddlePaddle/paddle2onnx.git
 python setup.py install

使用方式

静态图模型导出

命令行

Paddle模型的参数保存为多个文件(not combined):

paddle2onnx --model_dir paddle_model  --save_file onnx_file --opset_version 10 --enable_onnx_checker True

Paddle模型的参数保存在一个单独的二进制文件中(combined):

paddle2onnx --model_dir paddle_model  --model_filename model_filename --params_filename params_filename --save_file onnx_file --opset_version 10 --enable_onnx_checker True

如需配置输入的大小,请使用如下命令:

paddle2onnx --model_dir paddle_model  --model_filename model_filename --params_filename params_filename --save_file onnx_file --opset_version 10 --enable_onnx_checker True --input_shape_dict "{'x': [1, 3, 224, 224]}"

参数选项

参数 参数说明
--model_dir 配置包含Paddle模型的路径, 由paddle.fluid.io.save_inference_model保存得到
--model_filename [可选] 配置位于--model_dir下存储网络结构的文件名称。当且仅当所有模型参数被保存在一个单独的二进制文件中,它才需要被指定。默认为None
--params_filename [可选] 配置位于--model_dir下存储模型参数的文件名称。当且仅当所有模型参数被保存在一个单独的二进制文件中,它才需要被指定。默认为None
--save_file 指定转换后的模型保存目录路径
--opset_version [可选] 配置转换为ONNX的OpSet版本,目前比较稳定地支持9、10、11三个版本,默认为9
--enable_dev_version [可选] 是否使用新版本Paddle2ONNX(当前正在开发中),默认为False
--enable_onnx_checker [可选] 配置是否检查导出为ONNX模型的正确性, 建议打开此开关。若指定为True,需要安装 onnx>=1.7.0, 默认为False
--enable_paddle_fallback [可选] 配置custom op是否使用paddle_fallback模式导出, 默认为False
--enable_auto_update_opset [可选] 配置是否开启opset version自动校正功能, 默认为True
--input_shape_dict [可选] 配置输入的shape, 默认为空
--version [可选] 查看paddle2onnx版本
--output_names [可选] 配置模型的输出名, 默认为空,支持配置为list形式,如:--output_names "['my_output1','my_output2']",或者dict形式,如:--output_names "{'paddle_output1':'my_output1', 'paddle_output2':'my_output2'}"
  • PaddlePaddle模型的两种存储形式:
    • 参数被保存在一个单独的二进制文件中(combined),需要在指定--model_dir的前提下,指定--model_filename, --params_filename, 分别表示--model_dir目录下的网络文件名称和参数文件名称。
    • 参数被保存为多个文件(not combined),只需要指定--model_dir,该目录下面需要包含了'__model__',以及多个参数文件。
  • 使用onnxruntime验证转换模型:
  • 若模型转换中提示OP不支持,欢迎开发者自己开发并向我们提PR,具体请参考文档OP开发指南

IPython教程

动态图模型导出

import paddle
from paddle import nn
from paddle.static import InputSpec
import paddle2onnx as p2o

class LinearNet(nn.Layer):
    def __init__(self):
        super(LinearNet, self).__init__()
        self._linear = nn.Linear(784, 10)

    def forward(self, x):
        return self._linear(x)

layer = LinearNet()

# configure model inputs
x_spec = InputSpec([None, 784], 'float32', 'x')

# convert model to inference mode
layer.eval()

save_path = 'onnx.save/linear_net'
p2o.dygraph2onnx(layer, save_path + '.onnx', input_spec=[x_spec])

# when you paddlepaddle>2.0.0, you can try:
# paddle.onnx.export(layer, save_path, input_spec=[x_spec])

IPython教程

相关文档

License

Provided under the Apache-2.0 license.