Onnx bagus, tapi terkadang terlalu rumit.
Suatu hari saya ingin mengekspor operasi pembentukan kembali sederhana berikut ke 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' ])Bentuk input dalam model ini statis, jadi apa yang saya harapkan

Namun, saya mendapatkan model rumit berikut sebagai gantinya:

Onnx Simplifier disajikan untuk menyederhanakan model ONNX. Ini menyimpulkan seluruh grafik komputasi dan kemudian menggantikan operator yang berlebihan dengan output konstan mereka (alias lipatan konstan).
Kami telah menerbitkan Onnx Simplifier di convertModel.com. Ini bekerja di luar kotak dan tidak memerlukan instalasi apa pun . Perhatikan bahwa itu berjalan di browser secara lokal dan model Anda benar -benar aman.
pip3 install -U pip && pip3 install onnxsim
Kemudian
onnxsim input_onnx_model output_onnx_model
Untuk fitur yang lebih canggih, coba perintah berikut untuk pesan bantuan
onnxsim -h
Perbandingan keseluruhan antara model yang rumit dan versinya yang disederhanakan:

Jika Anda ingin menyematkan paket Python penyederhanaan Onnx dalam skrip lain, itu sesederhana itu.
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 objectAnda dapat melihat lebih banyak detail API di Onnxsim/onnx_simplifier.py
Kami membuat grup QQ Cina untuk ONNX!
ONNX QQ Group (Cina): 1021964010, Kode Verifikasi: NNDAB. Selamat datang untuk bergabung!
Untuk pengguna bahasa Inggris, saya aktif di Onnx Slack. Anda dapat menemukan dan mengobrol dengan saya (daquexian) di sana.