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 Simplifier لتبسيط نموذج ONNX. يثير الرسم البياني للحساب بأكمله ثم يحل محل المشغلين الزائدين بمخرجاتهم الثابتة (ويعرف أيضًا باسم طي ثابت).
لقد نشرنا OnNx Simplifier على convertModel.com. إنه يعمل خارج الصندوق ولا يحتاج إلى أي تثبيت . لاحظ أنه يعمل في المتصفح محليًا وأن نموذجك آمن تمامًا.
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 objectيمكنك رؤية المزيد من تفاصيل واجهة برمجة التطبيقات في onnxsim/onnx_simplifier.py
أنشأنا مجموعة QQ صينية لـ ONNX!
ONNX QQ Group (الصينية): 1021964010 ، رمز التحقق: NNDAB. مرحبًا بك للانضمام!
بالنسبة للمستخدمين الإنجليز ، أنا نشط على OnNx Slack. يمكنك أن تجد والدردشة معي (Daquexian) هناك.