onnx simplifier
1.0.0
Onnx는 훌륭하지만 때로는 너무 복잡합니다.
언젠가 나는 다음과 같은 간단한 재구성 작업을 ONNX로 내보내고 싶었습니다.
import torch
class JustReshape ( torch . nn . Module ):
def __init__ ( self ):
super ( JustReshape , self ). __init__ ()
def forward ( self , x ):
return x . view (( x . shape [ 0 ], x . shape [ 1 ], x . shape [ 3 ], x . shape [ 2 ]))
net = JustReshape ()
model_name = 'just_reshape.onnx'
dummy_input = torch . randn ( 2 , 3 , 4 , 5 )
torch . onnx . export ( net , dummy_input , model_name , input_names = [ 'input' ], output_names = [ 'output' ])이 모델의 입력 모양은 정적이므로 예상 한 것은

그러나 대신 다음과 같은 복잡한 모델을 얻었습니다.

ONNX 모델을 단순화하기 위해 ONNX 단순화기가 제공됩니다. 전체 계산 그래프를 유추한 다음 중복 연산자를 일정한 출력 (일명 상수 접이식)으로 대체합니다.
Convertmodel.com에 Onnx Simplifier를 게시했습니다. 상자에서 작동하며 설치가 필요하지 않습니다 . 브라우저에서 로컬에서 실행되며 모델은 완전히 안전합니다.
pip3 install -U pip && pip3 install onnxsim
그 다음에
onnxsim input_onnx_model output_onnx_model
고급 기능을 보려면 도움 메시지를 위해 다음 명령을 사용해보십시오.
onnxsim -h
복잡한 모델과 단순화 된 버전의 전반적인 비교 :

Onnx Simplifier Python 패키지를 다른 스크립트에 포함시키려면 간단합니다.
import onnx
from onnxsim import simplify
# load your predefined ONNX model
model = onnx . load ( filename )
# convert model
model_simp , check = simplify ( model )
assert check , "Simplified ONNX model could not be validated"
# use model_simp as a standard ONNX model objectonnxsim/onnx_simplifier.py에서 API에 대한 자세한 내용을 볼 수 있습니다.
우리는 ONNX를위한 중국 QQ 그룹을 만들었습니다!
Onnx QQ Group (중국어) : 1021964010, 검증 코드 : NNDAB. 가입에 오신 것을 환영합니다!
영어 사용자의 경우 Onx Slack에서 활동하고 있습니다. 당신은 저와 함께 찾아 채팅 할 수 있습니다 (daquexian).