用torch导出的模型有时候参数过多,不利于查看。查找资料onnxsim可以简化模型,让显示更加自然。
pip install onnx-simplifier
使用onnxsim 可以让结构更加简洁,具体执行方式如下
import onnx
from onnxsim import simplify
ONNX_MODEL_PATH = './model.onnx'
ONNX_SIM_MODEL_PATH = './model_simple.onnx'
if __name__ == "__main__":
onnx_model = onnx.load(ONNX_MODEL_PATH)
onnx_sim_model, check = simplify(onnx_model)
assert check, "Simplified ONNX model could not be validated"
onnx.save(onnx_sim_model, ONNX_SIM_MODEL_PATH)
print('ONNX file simplified!')
onnxsim 本身只提供 constant folding/propagation(即消除结果恒为常量的算子)的能力,而图变换(即合并 conv 和 bn 等等)的能力是由 onnxsim 调用 onnx optimizer 的各种 pass 实现的。constant folding 和图变换同时使用时,很多隐藏的优化机会会被挖掘出来,这也是 onnxsim 优化效果出色的原因之一。