Files
FastDeploy/paddle2onnx/convert.py
Jason 6343b0db47 [Build] Support build with source code of Paddle2ONNX (#1559)
* Add notes for tensors

* Optimize some apis

* move some warnings

* Support build with Paddle2ONNX

* Add protobuf support

* Fix compile on mac

* add clearn package script

* Add paddle2onnx code

* remove submodule

* Add onnx ocde

* remove softlink

* add onnx code

* fix error

* Add cmake file

* fix patchelf

* update paddle2onnx

* Delete .gitmodules

---------

Co-authored-by: PaddleCI <paddle_ci@example.com>
Co-authored-by: pangyoki <pangyoki@126.com>
Co-authored-by: jiangjiajun <jiangjiajun@baidu.lcom>
2023-03-17 10:03:22 +08:00

84 lines
3.3 KiB
Python
Executable File

# Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from paddle2onnx.utils import logging
def export_onnx(paddle_graph,
save_file,
opset_version=9,
enable_onnx_checker=False,
operator_export_type="ONNX",
verbose=False,
auto_update_opset=True,
output_names=None):
from paddle2onnx.legacy.convert import export_onnx
return export_onnx(paddle_graph, save_file, opset_version, opset_version,
enable_onnx_checker, operator_export_type, verbose,
auto_update_opset, output_names)
def dygraph2onnx(layer, save_file, input_spec=None, opset_version=9, **configs):
if "enable_dev_version" in configs and not configs["enable_dev_version"]:
from paddle2onnx.legacy.convert import dygraph2onnx
return dygraph2onnx(layer, save_file, input_spec, opset_version,
**configs)
import os
import paddle2onnx
import paddle
dirname = os.path.split(save_file)[0]
paddle_model_dir = os.path.join(dirname,
"paddle_model_static_onnx_temp_dir")
model_file = os.path.join(paddle_model_dir, "model.pdmodel")
params_file = os.path.join(paddle_model_dir, "model.pdiparams")
if os.path.exists(paddle_model_dir):
if os.path.isfile(paddle_model_dir):
logging.info("File {} exists, will remove it.".format(
paddle_model_dir))
os.remove(paddle_model_dir)
if os.path.isfile(model_file):
os.remove(model_file)
if os.path.isfile(params_file):
os.remove(params_file)
paddle.jit.save(layer, os.path.join(paddle_model_dir, "model"), input_spec)
logging.info("Static PaddlePaddle model saved in {}.".format(
paddle_model_dir))
if not os.path.isfile(params_file):
params_file = ""
if save_file is None:
return paddle2onnx.export(model_file, params_file, save_file,
opset_version)
else:
paddle2onnx.export(model_file, params_file, save_file, opset_version)
logging.info("ONNX model saved in {}.".format(save_file))
def program2onnx(program,
scope,
save_file,
feed_var_names=None,
target_vars=None,
opset_version=9,
enable_onnx_checker=False,
operator_export_type="ONNX",
auto_update_opset=True,
**configs):
from paddle2onnx.legacy.convert import program2onnx
return program2onnx(program, scope, save_file, feed_var_names, target_vars,
opset_version, enable_onnx_checker,
operator_export_type, auto_update_opset, **configs)