Onnx ist großartig, aber manchmal zu kompliziert.
Eines Tages wollte ich den folgenden einfachen Umgestaltungsvorgang nach ONNX exportieren:
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' ])Die Eingangsform in diesem Modell ist statisch, also erwartete ich, dass ich erwartet habe

Ich habe jedoch stattdessen das folgende komplizierte Modell erhalten:

Onnx Simplifier wird dargestellt, um das ONNX -Modell zu vereinfachen. Es färbt das gesamte Berechnungsdiagramm und ersetzt dann die redundanten Operatoren durch ihre konstanten Ausgänge (auch bekannt als konstante Faltung).
Wir haben Onnx Simplifier auf ConvertModel.com veröffentlicht. Es funktioniert aus der Schachtel und benötigt keine Installation . Beachten Sie, dass es im Browser lokal ausgeführt wird und Ihr Modell völlig sicher ist.
pip3 install -U pip && pip3 install onnxsim
Dann
onnxsim input_onnx_model output_onnx_model
Weitere erweiterte Funktionen finden Sie den folgenden Befehl, um Hilfe bei der Hilfe zu erhalten
onnxsim -h
Ein Gesamtvergleich zwischen einem komplizierten Modell und seiner vereinfachten Version:

Wenn Sie das Python -Paket für Simplifikator in einem anderen Skript einbetten möchten, ist es einfach so einfach.
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 objectWeitere Details der API in Onnxsim/Onnx_Simplifier.py sehen
Wir haben eine chinesische QQ -Gruppe für ONNX erstellt!
ONNX QQ Group (Chinese): 1021964010, Verifizierungscode: Nndab. Willkommen bei Join!
Für englische Nutzer bin ich aktiv auf dem ONNX -Slack. Sie können dort (Daquexian) mit mir (Daquexian) finden und chatten.