网站免费建站众享星球,企业网站优化之如何做需求分析,网站icp备案申请流程,wordpress无法评论背景#xff1a;之前我想把onnx模型从opset12变成opset12#xff0c;太慌乱就没找着#xff0c;最近找到了官网上有示例的#xff0c;大爱onnx官网#xff0c;分享给有需求没找着的小伙伴们。
1. onnx模型转换opset版本
官网示例#xff1a;
import onnx
from onnx im… 背景之前我想把onnx模型从opset12变成opset12太慌乱就没找着最近找到了官网上有示例的大爱onnx官网分享给有需求没找着的小伙伴们。
1. onnx模型转换opset版本
官网示例
import onnx
from onnx import version_converter, helper# Preprocessing: load the model to be converted.
model_path path/to/the/model.onnx
original_model onnx.load(model_path)print(fThe model before conversion:\n{original_model})# A full list of supported adapters can be found here:
# https://github.com/onnx/onnx/blob/main/onnx/version_converter.py#L21
# Apply the version conversion on the original model
converted_model version_converter.convert_version(original_model, int target_version)print(fThe model after conversion:\n{converted_model})
其github地址如下
onnx/docs/PythonAPIOverview.md at main · onnx/onnx (github.com)https://github.com/onnx/onnx/blob/main/docs/PythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx其小伙伴拉到gitee上的地址如下以防有的小伙伴github打不开
docs/PythonAPIOverview.md · meiqicheng/github-onnx-onnx - Gitee.comhttps://gitee.com/meiqicheng1216/onnx/blob/master/docs/PythonAPIOverview.md#converting-version-of-an-onnx-model-within-default-domain-aionnx最后附上完整代码
import onnx
from onnx import version_converter, helper# A full list of supported adapters can be found here:
# https://github.com/onnx/onnx/blob/main/onnx/version_converter.py#L21
# Apply the version conversion on the original model# Preprocessing: load the model to be converted.
model_path r./demo.onnx
original_model onnx.load(model_path)
print(fThe model before conversion:\n{original_model})converted_model version_converter.convert_version(original_model, 11)
print(fThe model after conversion:\n{converted_model})save_model model_path[:-5] _opset11.onnx
onnx.save(converted_model, save_model)
2. onnx模型转固定动态输入尺寸
def change_dynamic_input_shape(model_path, shape_list: list):将动态输入的尺寸变成固定尺寸Args:model_path: onnx model pathshape_list: [1, 3, ...]Returns:import osimport onnxmodel_path os.path.abspath(model_path)output_path model_path[:-5] _fixed.onnxmodel onnx.load(model_path)# print(onnx.helper.printable_graph(model.graph))inputs model.graph.input # inputs是一个列表可以操作多输入~# look_input inputs[0].type.tensor_type.shape.dim# print(look_input)# print(type(look_input))# inputs[0].type.tensor_type.shape.dim[0].dim_value 1for idx, i_e in enumerate(shape_list):inputs[0].type.tensor_type.shape.dim[idx].dim_value i_e# print(onnx.helper.printable_graph(model.graph))onnx.save(model, output_path)if __name__ __main__:model_path ./demo.onnxshape_list [1]change_dynamic_input_shape(model_path, shape_list)