环境
基础
conda create -n onnx python=3.8 -y
conda activate onnx
# ONNX
# https://github.com/onnx/onnx
conda install -c conda-forge onnx -y
python -c "import onnx; print(onnx.__version__)"
import onnx
model = onnx.load("model.onnx")
简化
# ONNX Simplifier
# https://github.com/daquexian/onnx-simplifier
pip install onnx-simplifier
python -m onnxsim -h
import onnxsim
model_simp, check = onnxsim.simplify(model, perform_optimization=False)
assert check, "Simplified ONNX model could not be validated"
使用
给出些 ONNX 模型使用的示例方法。
提取子模型
import onnx
input_path = "path/to/the/original/model.onnx"
output_path = "path/to/save/the/extracted/model.onnx"
input_names = ["input_0", "input_1", "input_2"]
output_names = ["output_0", "output_1"]
onnx.utils.extract_model(input_path, output_path, input_names, output_names)
修改输入输出名称
def _onnx_rename(model, names, names_new):
for node in model.graph.node:
for i, n in enumerate(node.input):
if n in names:
node.input[i] = names_new[names.index(n