qairt-visualizer 0.5.1__py3-none-win_amd64.whl → 0.7.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qairt_visualizer/core/helpers/version.py +23 -0
- qairt_visualizer/core/launchers/base_ui_launcher_context.py +28 -7
- qairt_visualizer/core/launchers/electron_launcher_context.py +72 -3
- qairt_visualizer/core/parsers/dlc_parser/dlc_parser.py +105 -33
- qairt_visualizer/core/parsers/dlc_parser/get_source_topology.py +47 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libDlModelToolsPy.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.pyd +0 -0
- qairt_visualizer/core/parsers/dlc_parser/libPyIrGraph.so +0 -0
- qairt_visualizer/core/parsers/dlc_parser/models/op_tensor_mappings.py +8 -4
- qairt_visualizer/core/ui/dist/browser/__init__.py +47 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity.js → acuity.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/app.js → app.js} +63 -57
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-schema.js → armnn-schema.js} +590 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn.js → armnn.js} +3 -5
- qairt_visualizer/core/ui/dist/browser/assets/i18n/common/en.json +8 -2
- qairt_visualizer/core/ui/dist/browser/assets/i18n/graph/en.json +44 -36
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/en.json +9 -3
- qairt_visualizer/core/ui/dist/browser/assets/i18n/panels/model-diff/en.json +6 -0
- qairt_visualizer/core/ui/dist/browser/assets/i18n/workspaces/en.json +3 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/barracuda.js → barracuda.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/base.js → base.js} +20 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl.js → bigdl.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/browser.js → browser.js} +59 -49
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe.js → caffe.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-proto.js → caffe2-proto.js} +26 -26
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2.js → caffe2.js} +113 -114
- qairt_visualizer/core/ui/dist/browser/chunk-3SMGFPTN.js +11 -0
- qairt_visualizer/core/ui/dist/browser/chunk-43LQFSHA.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-447NKSFT.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-5MAR72QP.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-7PTY53DS.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-GAUD627J.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-H7TLLCSI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HISUA6LZ.js +4 -0
- qairt_visualizer/core/ui/dist/browser/chunk-HXB7IAZI.js +1 -0
- qairt_visualizer/core/ui/dist/browser/chunk-JPD5T7FP.js +120 -0
- qairt_visualizer/core/ui/dist/browser/chunk-L3QJ7DR2.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{chunk-HBP6TEQ6.js → chunk-MCR4N53U.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/chunk-QD7PA2I4.js +19 -0
- qairt_visualizer/core/ui/dist/browser/chunk-TKZG6FLW.js +12 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WFAVWONI.js +5 -0
- qairt_visualizer/core/ui/dist/browser/chunk-WRMDGTCT.js +35 -0
- qairt_visualizer/core/ui/dist/browser/chunk-X25J6H7V.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-schema.js → circle-schema.js} +17 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle.js → circle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk.js → cntk.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-proto.js → coreml-proto.js} +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml.js → coreml.js} +24 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dagre.js → dagre.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet-metadata.json → darknet-metadata.json} +0 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/darknet.js → darknet.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/electron.mjs → desktop.mjs} +44 -131
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j.js → dl4j.js} +5 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-schema.js → dlc-schema.js} +8 -8
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc.js → dlc.js} +110 -29
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn.js → dnn.js} +2 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dot.js → dot.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/eaix.js +24 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso.js → espresso.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch-schema.js → executorch-schema.js} +363 -42
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/executorch.js → executorch.js} +108 -40
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flatbuffers.js → flatbuffers.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flax.js → flax.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux.js → flux.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/gguf.js → gguf.js} +44 -24
- qairt_visualizer/core/ui/dist/browser/grapher.css +145 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/grapher.js → grapher.js} +24 -48
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo.js → hailo.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hickle.js → hickle.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/imgdnn.js → imgdnn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/index.html +15 -16
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/index.js → index.js} +2 -24
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/json.js → json.js} +28 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann.js → kann.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-metadata.json → keras-metadata.json} +15 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras.js → keras.js} +13 -7
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kmodel.js → kmodel.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne.js → lasagne.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lightgbm.js → lightgbm.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/main-EVI665MB.js +1 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mediapipe.js → mediapipe.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine.js → megengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/message.js → message.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlir.js → mlir.js} +53 -17
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet.js → mlnet.js} +2 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-schema.js → mnn-schema.js} +9 -6
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn.js → mnn.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite.js → mslite.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet.js → mxnet.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn.js → ncnn.js} +3 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla.js → nnabla.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnef.js → nnef.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/node.js +102 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/numpy.js → numpy.js} +9 -9
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om.js → om.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn.js → onednn.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-metadata.json → onnx-metadata.json} +3500 -233
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-proto.js → onnx-proto.js} +436 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx.js → onnx.js} +284 -199
- qairt_visualizer/core/ui/dist/browser/onnx.py +231 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino.js → openvino.js} +36 -31
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-proto.js → paddle-proto.js} +54 -54
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle.js → paddle.js} +22 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pickle.js → pickle.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/python.js → python.js} +743 -325
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-metadata.json → pytorch-metadata.json} +3217 -2934
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-proto.js → pytorch-proto.js} +4 -4
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch.js → pytorch.js} +172 -86
- qairt_visualizer/core/ui/dist/browser/pytorch.py +304 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn.js → qnn.js} +6 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn.js → rknn.js} +3 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/safetensors.js → safetensors.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece.js → sentencepiece.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/server.py → server.py} +95 -103
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn-metadata.json → sklearn-metadata.json} +15 -10
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sklearn.js → sklearn.js} +5 -5
- qairt_visualizer/core/ui/dist/browser/{styles-MRR6DOT2.css → styles-2Z5PB4WZ.css} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tar.js → tar.js} +18 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine.js → tengine.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tensorrt.js → tensorrt.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-metadata.json → tf-metadata.json} +1255 -163
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf-proto.js → tf-proto.js} +46 -12
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tf.js → tf.js} +36 -13
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite.js → tflite.js} +18 -21
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn.js → tnn.js} +1 -3
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch.js → torch.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/transformers.js +171 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tvm.js → tvm.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff.js → uff.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/view.js → view.js} +1406 -1115
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/weka.js → weka.js} +3 -4
- qairt_visualizer/core/ui/dist/browser/worker-EHYFMTM7.js +1 -0
- qairt_visualizer/core/ui/dist/browser/worker-KX5DA6GL.js +4 -0
- qairt_visualizer/core/ui/dist/browser/xgboost.js +59 -0
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xml.js → xml.js} +2 -2
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel.js → xmodel.js} +1 -1
- qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/zip.js → zip.js} +38 -41
- qairt_visualizer/core/ui/dist/qairt_visualizer.exe +0 -0
- qairt_visualizer/core/ui/dist/resources/app.asar +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/METADATA +1 -1
- qairt_visualizer-0.7.0.dist-info/RECORD +265 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CITATION.cff +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/CONTRIBUTING.md +0 -29
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/LICENSE +0 -21
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/README.md +0 -36
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/jenkins/Jenkinsfile +0 -69
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package-lock.json +0 -5743
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.js +0 -689
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.json +0 -53
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/package.py +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background.svg +0 -5
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/background@2x.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/electron-builder.json +0 -109
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/eslint.config.js +0 -231
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/forge.config.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.html +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.icns.svg +0 -175
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.png +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/icon.svg +0 -179
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/notarize.cjs +0 -24
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/pyproject.toml +0 -63
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/publish/setup.py +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/resolve_upgrade_merge.sh +0 -10
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/__init__.py +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/cambricon.js +0 -32
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/favicon.ico +0 -0
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/grapher.css +0 -602
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/index.html +0 -2222
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/modular.js +0 -81
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/onnx.py +0 -227
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/pytorch.py +0 -298
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qcontrol.js +0 -207
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qgraph-toolkit.js +0 -123
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsubgraph.js +0 -226
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/qais/qsummary-panel.js +0 -89
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/source/server.js +0 -250
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/backend.py +0 -80
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/measures.py +0 -27
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.js +0 -359
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/models.json +0 -8523
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/test/worker.js +0 -859
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/armnn +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/bigdl +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe +0 -37
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/caffe-script.js +0 -12
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle +0 -43
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/circle_script.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/cntk +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/coreml +0 -49
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dlc.fbs +0 -165
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/dnn.proto +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/executorch +0 -41
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/flatc.js +0 -1315
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/gguf +0 -22
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/kann +0 -33
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras +0 -62
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_metadata.py +0 -205
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/keras_script.py +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mediapipe +0 -72
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine +0 -47
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine-script.js +0 -113
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/megengine_script.js +0 -112
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mnn +0 -40
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite +0 -45
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite-script.js +0 -83
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/mslite_metadata.js +0 -82
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla +0 -79
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/nnabla_script.py +0 -145
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om +0 -26
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/om.proto +0 -204
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx +0 -135
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_metadata.py +0 -233
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/onnx_script.py +0 -332
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/paddle +0 -38
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/protoc.js +0 -1609
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch +0 -85
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_metadata.py +0 -166
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/pytorch_script.py +0 -404
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/rknn.fbs +0 -78
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sentencepiece +0 -39
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn +0 -65
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_metadata.py +0 -126
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/sklearn_script.py +0 -129
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf +0 -97
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_metadata.py +0 -403
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tf_script.py +0 -422
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite-script.js +0 -87
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/tflite_metadata.js +0 -73
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff +0 -20
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/uff.proto +0 -127
- qairt_visualizer/core/ui/dist/browser/assets/netron_plugin/tools/xmodel +0 -36
- qairt_visualizer/core/ui/dist/browser/chunk-3NAQCYEU.js +0 -1
- qairt_visualizer/core/ui/dist/browser/chunk-NFKTPX3Z.js +0 -11
- qairt_visualizer/core/ui/dist/browser/chunk-OMI6HJ5Y.js +0 -19
- qairt_visualizer/core/ui/dist/browser/chunk-TTZXMRJ5.js +0 -34
- qairt_visualizer/core/ui/dist/browser/main-NXPVOKMG.js +0 -1
- qairt_visualizer/core/ui/dist/browser/worker-5VPKG2GV.js +0 -4
- qairt_visualizer/core/ui/dist/browser/worker-UVGWDZ5K.js +0 -1
- qairt_visualizer-0.5.1.dist-info/RECORD +0 -337
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/acuity-metadata.json → acuity-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/armnn-metadata.json → armnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-metadata.json → bigdl-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/bigdl-proto.js → bigdl-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-metadata.json → caffe-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe-proto.js → caffe-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/caffe2-metadata.json → caffe2-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/catboost.js → catboost.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/circle-metadata.json → circle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-metadata.json → cntk-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/cntk-proto.js → cntk-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/coreml-metadata.json → coreml-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dl4j-metadata.json → dl4j-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dlc-metadata.json → dlc-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-metadata.json → dnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/dnn-proto.js → dnn-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/espresso-metadata.json → espresso-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flexbuffers.js → flexbuffers.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/flux-metadata.json → flux-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hailo-metadata.json → hailo-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/hdf5.js → hdf5.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/icon.png → icon.png} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-metadata.json → kann-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/kann-schema.js → kann-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/keras-proto.js → keras-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/lasagne-metadata.json → lasagne-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-metadata.json → megengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/megengine-schema.js → megengine-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mlnet-metadata.json → mlnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mnn-metadata.json → mnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-metadata.json → mslite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mslite-schema.js → mslite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/mxnet-metadata.json → mxnet-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/ncnn-metadata.json → ncnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-metadata.json → nnabla-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnabla-proto.js → nnabla-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/nnc.js → nnc.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-metadata.json → om-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/om-proto.js → om-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onednn-metadata.json → onednn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/onnx-schema.js → onnx-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/openvino-metadata.json → openvino-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-metadata.json → paddle-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/paddle-schema.js → paddle-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/protobuf.js → protobuf.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/pytorch-schema.js → pytorch-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/qnn-metadata.json → qnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-metadata.json → rknn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/rknn-schema.js → rknn-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/sentencepiece-proto.js → sentencepiece-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tengine-metadata.json → tengine-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/text.js → text.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-metadata.json → tflite-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tflite-schema.js → tflite-schema.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/tnn-metadata.json → tnn-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/torch-metadata.json → torch-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-metadata.json → uff-metadata.json} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/uff-proto.js → uff-proto.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/worker.js → worker.js} +0 -0
- /qairt_visualizer/core/ui/dist/browser/{assets/netron_plugin/source/xmodel-proto.js → xmodel-proto.js} +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/LICENSE.pdf +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/WHEEL +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/entry_points.txt +0 -0
- {qairt_visualizer-0.5.1.dist-info → qairt_visualizer-0.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const modular = {};
|
|
3
|
-
|
|
4
|
-
modular.ModelFactory = class {
|
|
5
|
-
|
|
6
|
-
async match(context) {
|
|
7
|
-
const obj = await context.peek('json');
|
|
8
|
-
if (obj && obj.signature === "netron:modular") {
|
|
9
|
-
return context.set('modular', obj);
|
|
10
|
-
}
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async open(context) {
|
|
15
|
-
return new modular.Model(context.value);
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
modular.Model = class {
|
|
20
|
-
|
|
21
|
-
constructor(obj) {
|
|
22
|
-
this.format = 'Modular';
|
|
23
|
-
this.graphs = obj.graphs.map((graph) => new modular.Graph(graph));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
modular.Graph = class {
|
|
28
|
-
|
|
29
|
-
constructor(graph) {
|
|
30
|
-
this.nodes = Array.from(graph.nodes.map((node) => new modular.Node(node)));
|
|
31
|
-
this.inputs = [];
|
|
32
|
-
this.outputs = [];
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
modular.Argument = class {
|
|
37
|
-
|
|
38
|
-
constructor(name, value) {
|
|
39
|
-
this.name = name;
|
|
40
|
-
this.value = value;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
modular.Value = class {
|
|
45
|
-
|
|
46
|
-
constructor(name, value) {
|
|
47
|
-
if (typeof name !== 'string') {
|
|
48
|
-
throw new modular.Error(`Invalid value identifier '${JSON.stringify(name)}'.`);
|
|
49
|
-
}
|
|
50
|
-
this.name = name;
|
|
51
|
-
this.value = value;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
modular.Node = class {
|
|
56
|
-
|
|
57
|
-
constructor(node) {
|
|
58
|
-
this.name = '';
|
|
59
|
-
this.type = { name: node.type.name };
|
|
60
|
-
if (node.type.category === 'List') {
|
|
61
|
-
this.type.category = 'Data';
|
|
62
|
-
} else if (node.type.category === 'ControlFlow') {
|
|
63
|
-
this.type.category = 'Control';
|
|
64
|
-
} else {
|
|
65
|
-
this.type.category = node.type.category;
|
|
66
|
-
}
|
|
67
|
-
this.attributes = Array.isArray(node.attributes) ? Array.from(node.attributes).map((attribute) => new modular.Argument(attribute.name, attribute.value)) : [];
|
|
68
|
-
this.inputs = Array.from(node.inputs.map((input) => new modular.Argument(input.name, Array.from(input.arguments.map((value) => new modular.Value(value.toString(), input.name))))));
|
|
69
|
-
this.outputs = Array.from(node.outputs.map((output) => new modular.Argument(output.name, Array.from(output.arguments.map((value) => new modular.Value(value.toString(), output.name))))));
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
modular.Error = class extends Error {
|
|
74
|
-
|
|
75
|
-
constructor(message) {
|
|
76
|
-
super(message);
|
|
77
|
-
this.name = 'Error loading Modular model.';
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export const ModelFactory = modular.ModelFactory;
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
''' ONNX backend '''
|
|
2
|
-
|
|
3
|
-
import collections
|
|
4
|
-
import enum
|
|
5
|
-
import json
|
|
6
|
-
import os
|
|
7
|
-
|
|
8
|
-
class ModelFactory: # pylint: disable=too-few-public-methods
|
|
9
|
-
''' ONNX backend model factory '''
|
|
10
|
-
def open(self, model): # pylint: disable=missing-function-docstring
|
|
11
|
-
return _Model(model)
|
|
12
|
-
|
|
13
|
-
class _Model: # pylint: disable=too-few-public-methods
|
|
14
|
-
def __init__(self, model):
|
|
15
|
-
''' Serialize ONNX model to JSON message '''
|
|
16
|
-
# import onnx.shape_inference
|
|
17
|
-
# model = onnx.shape_inference.infer_shapes(model)
|
|
18
|
-
self.value = model
|
|
19
|
-
self.metadata = _Metadata()
|
|
20
|
-
self.graph = _Graph(model.graph, self.metadata)
|
|
21
|
-
|
|
22
|
-
def to_json(self): # pylint: disable=missing-function-docstring
|
|
23
|
-
''' Serialize model to JSON message '''
|
|
24
|
-
model = self.value
|
|
25
|
-
json_model = {}
|
|
26
|
-
json_model['signature'] = 'netron:onnx'
|
|
27
|
-
json_model['format'] = 'ONNX' + (' v' + str(model.ir_version) if model.ir_version else '')
|
|
28
|
-
if model.producer_name and len(model.producer_name) > 0:
|
|
29
|
-
producer_version = ' v' + model.producer_version if model.producer_version else ''
|
|
30
|
-
json_model['producer'] = model.producer_name + producer_version
|
|
31
|
-
if model.model_version and model.model_version != 0:
|
|
32
|
-
json_model['version'] = str(model.model_version)
|
|
33
|
-
if model.doc_string and len(model.doc_string):
|
|
34
|
-
json_model['description'] = str(model.doc_string)
|
|
35
|
-
json_metadata = self._metadata_props(model.metadata_props)
|
|
36
|
-
if len(json_metadata) > 0:
|
|
37
|
-
json_model['metadata'] = json_metadata
|
|
38
|
-
json_model['graphs'] = []
|
|
39
|
-
json_model['graphs'].append(self.graph.to_json())
|
|
40
|
-
return json_model
|
|
41
|
-
|
|
42
|
-
def _metadata_props(self, metadata_props): # pylint: disable=missing-function-docstring
|
|
43
|
-
json_metadata = []
|
|
44
|
-
metadata_props = [ [ entry.key, entry.value ] for entry in metadata_props ]
|
|
45
|
-
metadata = collections.OrderedDict(metadata_props)
|
|
46
|
-
value = metadata.get('converted_from')
|
|
47
|
-
if value:
|
|
48
|
-
json_metadata.append({ 'name': 'source', 'value': value })
|
|
49
|
-
value = metadata.get('author')
|
|
50
|
-
if value:
|
|
51
|
-
json_metadata.append({ 'name': 'author', 'value': value })
|
|
52
|
-
value = metadata.get('company')
|
|
53
|
-
if value:
|
|
54
|
-
json_metadata.append({ 'name': 'company', 'value': value })
|
|
55
|
-
value = metadata.get('license')
|
|
56
|
-
license_url = metadata.get('license_url')
|
|
57
|
-
if license_url:
|
|
58
|
-
value = '<a href=\'' + license_url + '\'>' + (value if value else license_url) + '</a>'
|
|
59
|
-
if value:
|
|
60
|
-
json_metadata.append({ 'name': 'license', 'value': value })
|
|
61
|
-
if 'author' in metadata:
|
|
62
|
-
metadata.pop('author')
|
|
63
|
-
if 'company' in metadata:
|
|
64
|
-
metadata.pop('company')
|
|
65
|
-
if 'converted_from' in metadata:
|
|
66
|
-
metadata.pop('converted_from')
|
|
67
|
-
if 'license' in metadata:
|
|
68
|
-
metadata.pop('license')
|
|
69
|
-
if 'license_url' in metadata:
|
|
70
|
-
metadata.pop('license_url')
|
|
71
|
-
for name, value in metadata.items():
|
|
72
|
-
json_metadata.append({ 'name': name, 'value': value })
|
|
73
|
-
return json_metadata
|
|
74
|
-
|
|
75
|
-
class _Graph:
|
|
76
|
-
def __init__(self, graph, metadata):
|
|
77
|
-
self.metadata = metadata
|
|
78
|
-
self.graph = graph
|
|
79
|
-
self.values_index = {}
|
|
80
|
-
self.values = []
|
|
81
|
-
|
|
82
|
-
def _tensor(self, tensor): # pylint: disable=unused-argument
|
|
83
|
-
return {}
|
|
84
|
-
|
|
85
|
-
def value(self, name, tensor_type=None, initializer=None): # pylint: disable=missing-function-docstring
|
|
86
|
-
if not name in self.values_index:
|
|
87
|
-
argument = _Value(name, tensor_type, initializer)
|
|
88
|
-
self.values_index[name] = len(self.values)
|
|
89
|
-
self.values.append(argument)
|
|
90
|
-
index = self.values_index[name]
|
|
91
|
-
# argument.set_initializer(initializer)
|
|
92
|
-
return index
|
|
93
|
-
|
|
94
|
-
def attribute(self, _, op_type): # pylint: disable=missing-function-docstring,too-many-branches
|
|
95
|
-
if _.type == _AttributeType.UNDEFINED:
|
|
96
|
-
attribute_type = None
|
|
97
|
-
value = None
|
|
98
|
-
elif _.type == _AttributeType.FLOAT:
|
|
99
|
-
attribute_type = 'float32'
|
|
100
|
-
value = _.f
|
|
101
|
-
elif _.type == _AttributeType.INT:
|
|
102
|
-
attribute_type = 'int64'
|
|
103
|
-
value = _.i
|
|
104
|
-
elif _.type == _AttributeType.STRING:
|
|
105
|
-
attribute_type = 'string'
|
|
106
|
-
value = _.s.decode('latin1' if op_type == 'Int8GivenTensorFill' else 'utf-8')
|
|
107
|
-
elif _.type == _AttributeType.TENSOR:
|
|
108
|
-
attribute_type = 'tensor'
|
|
109
|
-
value = self._tensor(_.t)
|
|
110
|
-
elif _.type == _AttributeType.GRAPH:
|
|
111
|
-
attribute_type = 'tensor'
|
|
112
|
-
raise Exception('Unsupported graph attribute type') # pylint: disable=broad-exception-raised
|
|
113
|
-
elif _.type == _AttributeType.FLOATS:
|
|
114
|
-
attribute_type = 'float32[]'
|
|
115
|
-
value = list(_.floats)
|
|
116
|
-
elif _.type == _AttributeType.INTS:
|
|
117
|
-
attribute_type = 'int64[]'
|
|
118
|
-
value = list(_.ints)
|
|
119
|
-
elif _.type == _AttributeType.STRINGS:
|
|
120
|
-
attribute_type = 'string[]'
|
|
121
|
-
value = [ item.decode('utf-8') for item in _.strings ]
|
|
122
|
-
elif _.type == _AttributeType.TENSORS:
|
|
123
|
-
attribute_type = 'tensor[]'
|
|
124
|
-
raise Exception('Unsupported tensors attribute type') # pylint: disable=broad-exception-raised
|
|
125
|
-
elif _.type == _AttributeType.GRAPHS:
|
|
126
|
-
attribute_type = 'graph[]'
|
|
127
|
-
raise Exception('Unsupported graphs attribute type') # pylint: disable=broad-exception-raised
|
|
128
|
-
elif _.type == _AttributeType.SPARSE_TENSOR:
|
|
129
|
-
attribute_type = 'tensor'
|
|
130
|
-
value = self._tensor(_.sparse_tensor)
|
|
131
|
-
else:
|
|
132
|
-
raise Exception("Unsupported attribute type '" + str(_.type) + "'.") # pylint: disable=broad-exception-raised
|
|
133
|
-
json_attribute = {}
|
|
134
|
-
json_attribute['name'] = _.name
|
|
135
|
-
if attribute_type:
|
|
136
|
-
json_attribute['type'] = attribute_type
|
|
137
|
-
json_attribute['value'] = value
|
|
138
|
-
return json_attribute
|
|
139
|
-
|
|
140
|
-
def to_json(self): # pylint: disable=missing-function-docstring
|
|
141
|
-
graph = self.graph
|
|
142
|
-
json_graph = {
|
|
143
|
-
'nodes': [],
|
|
144
|
-
'inputs': [],
|
|
145
|
-
'outputs': [],
|
|
146
|
-
'values': []
|
|
147
|
-
}
|
|
148
|
-
for value_info in graph.value_info:
|
|
149
|
-
self.value(value_info.name)
|
|
150
|
-
for initializer in graph.initializer:
|
|
151
|
-
self.value(initializer.name, None, initializer)
|
|
152
|
-
for node in graph.node:
|
|
153
|
-
op_type = node.op_type
|
|
154
|
-
json_node = {}
|
|
155
|
-
json_node_type = {}
|
|
156
|
-
json_node_type['name'] = op_type
|
|
157
|
-
type_metadata = self.metadata.type(op_type)
|
|
158
|
-
if type and 'category' in type_metadata:
|
|
159
|
-
json_node_type['category'] = type_metadata['category']
|
|
160
|
-
json_node['type'] = json_node_type
|
|
161
|
-
if node.name:
|
|
162
|
-
json_node['name'] = node.name
|
|
163
|
-
json_node['inputs'] = []
|
|
164
|
-
for value in node.input:
|
|
165
|
-
json_node['inputs'].append({
|
|
166
|
-
'name': 'X',
|
|
167
|
-
'value': [ self.value(value) ]
|
|
168
|
-
})
|
|
169
|
-
json_node['outputs'] = []
|
|
170
|
-
for value in node.output:
|
|
171
|
-
json_node['outputs'].append({
|
|
172
|
-
'name': 'X',
|
|
173
|
-
'value': [ self.value(value) ]
|
|
174
|
-
})
|
|
175
|
-
json_node['attributes'] = []
|
|
176
|
-
for _ in node.attribute:
|
|
177
|
-
json_attribute = self.attribute(_, op_type)
|
|
178
|
-
json_node['attributes'].append(json_attribute)
|
|
179
|
-
json_graph['nodes'].append(json_node)
|
|
180
|
-
for _ in self.values:
|
|
181
|
-
json_graph['values'].append(_.to_json())
|
|
182
|
-
return json_graph
|
|
183
|
-
|
|
184
|
-
class _Value: # pylint: disable=too-few-public-methods
|
|
185
|
-
def __init__(self, name, tensor_type=None, initializer=None):
|
|
186
|
-
self.name = name
|
|
187
|
-
self.type = tensor_type
|
|
188
|
-
self.initializer = initializer
|
|
189
|
-
|
|
190
|
-
def to_json(self): # pylint: disable=missing-function-docstring
|
|
191
|
-
target = {}
|
|
192
|
-
target['name'] = self.name
|
|
193
|
-
# if self.initializer:
|
|
194
|
-
# target['initializer'] = {}
|
|
195
|
-
return target
|
|
196
|
-
|
|
197
|
-
class _Metadata: # pylint: disable=too-few-public-methods
|
|
198
|
-
metadata = {}
|
|
199
|
-
|
|
200
|
-
def __init__(self):
|
|
201
|
-
metadata_file = os.path.join(os.path.dirname(__file__), 'onnx-metadata.json')
|
|
202
|
-
with open(metadata_file, 'r', encoding='utf-8') as file:
|
|
203
|
-
for item in json.load(file):
|
|
204
|
-
name = item['name']
|
|
205
|
-
self.metadata[name] = item
|
|
206
|
-
|
|
207
|
-
def type(self, name): # pylint: disable=missing-function-docstring
|
|
208
|
-
if name in self.metadata:
|
|
209
|
-
return self.metadata[name]
|
|
210
|
-
return {}
|
|
211
|
-
|
|
212
|
-
class _AttributeType(enum.IntEnum):
|
|
213
|
-
UNDEFINED = 0
|
|
214
|
-
FLOAT = 1
|
|
215
|
-
INT = 2
|
|
216
|
-
STRING = 3
|
|
217
|
-
TENSOR = 4
|
|
218
|
-
GRAPH = 5
|
|
219
|
-
FLOATS = 6
|
|
220
|
-
INTS = 7
|
|
221
|
-
STRINGS = 8
|
|
222
|
-
TENSORS = 9
|
|
223
|
-
GRAPHS = 10
|
|
224
|
-
SPARSE_TENSOR = 11
|
|
225
|
-
SPARSE_TENSORS = 12
|
|
226
|
-
TYPE_PROTO = 13
|
|
227
|
-
TYPE_PROTOS = 14
|
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
''' PyTorch backend '''
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
import os
|
|
5
|
-
|
|
6
|
-
class ModelFactory: # pylint: disable=too-few-public-methods
|
|
7
|
-
''' PyTorch backend model factory '''
|
|
8
|
-
def open(self, model): # pylint: disable=missing-function-docstring
|
|
9
|
-
metadata = {}
|
|
10
|
-
metadata_files = [
|
|
11
|
-
('pytorch-metadata.json', ''),
|
|
12
|
-
('onnx-metadata.json', 'onnx::')
|
|
13
|
-
]
|
|
14
|
-
path = os.path.dirname(__file__)
|
|
15
|
-
for entry in metadata_files:
|
|
16
|
-
file = os.path.join(path, entry[0])
|
|
17
|
-
with open(file, 'r', encoding='utf-8') as handle:
|
|
18
|
-
for item in json.load(handle):
|
|
19
|
-
name = entry[1] + item['name'].split('(', 1)[0]
|
|
20
|
-
metadata[name] = item
|
|
21
|
-
metadata = Metadata(metadata)
|
|
22
|
-
return _Model(metadata, model)
|
|
23
|
-
|
|
24
|
-
class _Model: # pylint: disable=too-few-public-methods
|
|
25
|
-
def __init__(self, metadata, model):
|
|
26
|
-
self.graph = _Graph(metadata, model)
|
|
27
|
-
|
|
28
|
-
def to_json(self):
|
|
29
|
-
''' Serialize model to JSON message '''
|
|
30
|
-
import torch # pylint: disable=import-outside-toplevel,import-error
|
|
31
|
-
json_model = {
|
|
32
|
-
'signature': 'netron:pytorch',
|
|
33
|
-
'format': 'TorchScript v' + torch.__version__,
|
|
34
|
-
'graphs': [ self.graph.to_json() ]
|
|
35
|
-
}
|
|
36
|
-
return json_model
|
|
37
|
-
|
|
38
|
-
class _Graph: # pylint: disable=too-few-public-methods
|
|
39
|
-
|
|
40
|
-
def __init__(self, metadata, model):
|
|
41
|
-
self.metadata = metadata
|
|
42
|
-
self.param = model
|
|
43
|
-
self.value = model.graph
|
|
44
|
-
self.nodes = []
|
|
45
|
-
|
|
46
|
-
def _getattr(self, node):
|
|
47
|
-
if node.kind() == 'prim::Param':
|
|
48
|
-
return (self.param, '')
|
|
49
|
-
if node.kind() == 'prim::GetAttr':
|
|
50
|
-
name = node.s('name')
|
|
51
|
-
obj, parent = self._getattr(node.input().node())
|
|
52
|
-
return (getattr(obj, name), parent + '.' + name if len(parent) > 0 else name)
|
|
53
|
-
raise NotImplementedError()
|
|
54
|
-
|
|
55
|
-
def to_json(self): # pylint: disable=missing-function-docstring,too-many-locals,too-many-statements,too-many-branches
|
|
56
|
-
import torch # pylint: disable=import-outside-toplevel,import-error
|
|
57
|
-
graph = self.value
|
|
58
|
-
json_graph = {
|
|
59
|
-
'values': [],
|
|
60
|
-
'nodes': [],
|
|
61
|
-
'inputs': [],
|
|
62
|
-
'outputs': []
|
|
63
|
-
}
|
|
64
|
-
data_type_map = dict([
|
|
65
|
-
[ torch.float16, 'float16'], # pylint: disable=no-member
|
|
66
|
-
[ torch.float32, 'float32'], # pylint: disable=no-member
|
|
67
|
-
[ torch.float64, 'float64'], # pylint: disable=no-member
|
|
68
|
-
[ torch.int32, 'int32'], # pylint: disable=no-member
|
|
69
|
-
[ torch.int64, 'int64'], # pylint: disable=no-member
|
|
70
|
-
])
|
|
71
|
-
def constant_value(node):
|
|
72
|
-
if node.hasAttribute('value'):
|
|
73
|
-
selector = node.kindOf('value')
|
|
74
|
-
return getattr(node, selector)('value')
|
|
75
|
-
return None
|
|
76
|
-
values_index = {}
|
|
77
|
-
def argument(value):
|
|
78
|
-
if not value in values_index:
|
|
79
|
-
json_value = {}
|
|
80
|
-
json_value['name'] = str(value.unique())
|
|
81
|
-
node = value.node()
|
|
82
|
-
if node.kind() == "prim::GetAttr":
|
|
83
|
-
tensor, name = self._getattr(node)
|
|
84
|
-
if tensor is not None and len(name) > 0 and \
|
|
85
|
-
isinstance(tensor, torch.Tensor):
|
|
86
|
-
json_tensor_shape = {
|
|
87
|
-
'dimensions': list(tensor.shape)
|
|
88
|
-
}
|
|
89
|
-
tensor_type = {
|
|
90
|
-
'dataType': data_type_map[tensor.dtype],
|
|
91
|
-
'shape': json_tensor_shape
|
|
92
|
-
}
|
|
93
|
-
json_value['name'] = name
|
|
94
|
-
json_value['type'] = tensor_type
|
|
95
|
-
json_value['initializer'] = { 'type': tensor_type }
|
|
96
|
-
elif node.kind() == "prim::Constant":
|
|
97
|
-
tensor = constant_value(node)
|
|
98
|
-
if tensor and isinstance(tensor, torch.Tensor):
|
|
99
|
-
json_tensor_shape = {
|
|
100
|
-
'dimensions': list(tensor.shape)
|
|
101
|
-
}
|
|
102
|
-
tensor_type = {
|
|
103
|
-
'dataType': data_type_map[tensor.dtype],
|
|
104
|
-
'shape': json_tensor_shape
|
|
105
|
-
}
|
|
106
|
-
json_value['type'] = tensor_type
|
|
107
|
-
json_value['initializer'] = { 'type': tensor_type }
|
|
108
|
-
elif value.isCompleteTensor():
|
|
109
|
-
json_tensor_shape = {
|
|
110
|
-
'dimensions': value.type().sizes()
|
|
111
|
-
}
|
|
112
|
-
json_value['type'] = {
|
|
113
|
-
'dataType': data_type_map[value.type().dtype()],
|
|
114
|
-
'shape': json_tensor_shape
|
|
115
|
-
}
|
|
116
|
-
values = json_graph['values']
|
|
117
|
-
values_index[value] = len(values)
|
|
118
|
-
values.append(json_value)
|
|
119
|
-
return values_index[value]
|
|
120
|
-
|
|
121
|
-
for value in graph.inputs():
|
|
122
|
-
if len(value.uses()) != 0 and value.type().kind() != 'ClassType':
|
|
123
|
-
json_graph['inputs'].append({
|
|
124
|
-
'name': value.debugName(),
|
|
125
|
-
'value': [ argument(value) ]
|
|
126
|
-
})
|
|
127
|
-
for value in graph.outputs():
|
|
128
|
-
json_graph['outputs'].append({
|
|
129
|
-
'name': value.debugName(),
|
|
130
|
-
'value': [ argument(value) ]
|
|
131
|
-
})
|
|
132
|
-
constants = {}
|
|
133
|
-
for node in graph.nodes():
|
|
134
|
-
if node.kind() == 'prim::Constant':
|
|
135
|
-
constants[node] = 0
|
|
136
|
-
|
|
137
|
-
lists = {}
|
|
138
|
-
for node in graph.nodes():
|
|
139
|
-
if node.kind() == 'prim::ListConstruct':
|
|
140
|
-
if all(_.node() in constants for _ in node.inputs()):
|
|
141
|
-
for _ in node.inputs():
|
|
142
|
-
constants[_.node()] += 1
|
|
143
|
-
lists[node] = 0
|
|
144
|
-
|
|
145
|
-
def create_node(node):
|
|
146
|
-
identifier = node.schema()
|
|
147
|
-
schema, category = self.metadata.type(identifier)
|
|
148
|
-
json_node = {
|
|
149
|
-
'type': {
|
|
150
|
-
'name': node.kind(),
|
|
151
|
-
'category': category
|
|
152
|
-
},
|
|
153
|
-
'inputs': [],
|
|
154
|
-
'outputs': [],
|
|
155
|
-
'attributes': []
|
|
156
|
-
}
|
|
157
|
-
json_graph['nodes'].append(json_node)
|
|
158
|
-
for name in node.attributeNames():
|
|
159
|
-
selector = node.kindOf(name)
|
|
160
|
-
value = getattr(node, selector)(name)
|
|
161
|
-
json_attribute = {
|
|
162
|
-
'name': name,
|
|
163
|
-
'value': value
|
|
164
|
-
}
|
|
165
|
-
if torch.is_tensor(value):
|
|
166
|
-
json_node['inputs'].append({
|
|
167
|
-
'name': name,
|
|
168
|
-
'value': []
|
|
169
|
-
})
|
|
170
|
-
else:
|
|
171
|
-
json_node['attributes'].append(json_attribute)
|
|
172
|
-
|
|
173
|
-
for i, value in enumerate(node.inputs()):
|
|
174
|
-
arg = schema.arguments[i] if schema and i < len(schema.arguments) else None
|
|
175
|
-
parameter_name = arg.name if arg else 'input'
|
|
176
|
-
real_type = arg.real_type if arg else None
|
|
177
|
-
input_node = value.node()
|
|
178
|
-
if input_node in constants:
|
|
179
|
-
if (real_type and real_type.kind() == 'TensorType') or \
|
|
180
|
-
value.type().kind() == 'TensorType':
|
|
181
|
-
json_node['inputs'].append({
|
|
182
|
-
'name': parameter_name,
|
|
183
|
-
'value': [ argument(value) ]
|
|
184
|
-
})
|
|
185
|
-
else:
|
|
186
|
-
json_attribute = {
|
|
187
|
-
'name': parameter_name,
|
|
188
|
-
'value': constant_value(input_node)
|
|
189
|
-
}
|
|
190
|
-
if real_type:
|
|
191
|
-
json_attribute['type'] = self._argument_type(real_type)
|
|
192
|
-
json_node['attributes'].append(json_attribute)
|
|
193
|
-
constants[input_node] = constants[input_node] + 1
|
|
194
|
-
continue
|
|
195
|
-
if input_node in lists:
|
|
196
|
-
json_attribute = {
|
|
197
|
-
'name': parameter_name,
|
|
198
|
-
'value': [ constant_value(_.node()) for _ in input_node.inputs() ]
|
|
199
|
-
}
|
|
200
|
-
json_node['attributes'].append(json_attribute)
|
|
201
|
-
lists[input_node] += 1
|
|
202
|
-
continue
|
|
203
|
-
if input_node.kind() == 'prim::TupleUnpack':
|
|
204
|
-
continue
|
|
205
|
-
if input_node.kind() == 'prim::TupleConstruct':
|
|
206
|
-
continue
|
|
207
|
-
json_node['inputs'].append({
|
|
208
|
-
'name': parameter_name,
|
|
209
|
-
'value': [ argument(value) ]
|
|
210
|
-
})
|
|
211
|
-
|
|
212
|
-
for i, value in enumerate(node.outputs()):
|
|
213
|
-
ret = schema.returns[i] if schema and i < len(schema.returns) else None
|
|
214
|
-
name = ret.name if ret else 'output'
|
|
215
|
-
json_node['outputs'].append({
|
|
216
|
-
'name': name,
|
|
217
|
-
'value': [ argument(value) ]
|
|
218
|
-
})
|
|
219
|
-
|
|
220
|
-
for node in graph.nodes():
|
|
221
|
-
if node in lists:
|
|
222
|
-
continue
|
|
223
|
-
if node in constants:
|
|
224
|
-
continue
|
|
225
|
-
if node.kind() == 'prim::GetAttr':
|
|
226
|
-
continue
|
|
227
|
-
create_node(node)
|
|
228
|
-
|
|
229
|
-
for node in graph.nodes():
|
|
230
|
-
if node.kind() == 'prim::Constant' and \
|
|
231
|
-
node in constants and constants[node] != len(node.output().uses()):
|
|
232
|
-
create_node(node)
|
|
233
|
-
if node.kind() == 'prim::ListConstruct' and \
|
|
234
|
-
node in lists and lists[node] != len(node.output().uses()):
|
|
235
|
-
create_node(node)
|
|
236
|
-
|
|
237
|
-
return json_graph
|
|
238
|
-
|
|
239
|
-
def _argument_type(self, value): # pylint: disable=too-many-branches,too-many-return-statements
|
|
240
|
-
if value.kind() == 'TensorType':
|
|
241
|
-
return 'Tensor'
|
|
242
|
-
if value.kind() == 'OptionalType':
|
|
243
|
-
element_type = self._argument_type(value.getElementType())
|
|
244
|
-
return f'{element_type}?'
|
|
245
|
-
if value.kind() == 'ListType':
|
|
246
|
-
element_type = self._argument_type(value.getElementType())
|
|
247
|
-
size = str(value.size) if hasattr(value, 'size') else ''
|
|
248
|
-
return f'{element_type}[{size}]'
|
|
249
|
-
if value.kind() == 'DictType':
|
|
250
|
-
key_type = self._argument_type(value.getKeyType())
|
|
251
|
-
value_type = self._argument_type(value.getValueType())
|
|
252
|
-
return f'Dict({key_type}, {value_type})'
|
|
253
|
-
if value.kind() == 'TupleType':
|
|
254
|
-
elements = []
|
|
255
|
-
for element in value.elements():
|
|
256
|
-
elements.append(self._argument_type(element))
|
|
257
|
-
return f'({', '.join(elements)})'
|
|
258
|
-
if value.kind() == 'IntType':
|
|
259
|
-
return 'int64'
|
|
260
|
-
if value.kind() == 'SymIntType':
|
|
261
|
-
return 'SymInt'
|
|
262
|
-
if value.kind() == 'FloatType':
|
|
263
|
-
return 'float32'
|
|
264
|
-
if value.kind() == 'BoolType':
|
|
265
|
-
return 'boolean'
|
|
266
|
-
if value.kind() == 'StringType':
|
|
267
|
-
return 'string'
|
|
268
|
-
if value.kind() == 'NumberType':
|
|
269
|
-
return 'Scalar'
|
|
270
|
-
if value.kind() == 'ScalarTypeType':
|
|
271
|
-
return 'ScalarType'
|
|
272
|
-
if value.kind() == 'LayoutType':
|
|
273
|
-
return 'Layout'
|
|
274
|
-
if value.kind() == 'MemoryFormatType':
|
|
275
|
-
return 'MemoryFormat'
|
|
276
|
-
if value.kind() == 'DeviceObjType':
|
|
277
|
-
return 'Device'
|
|
278
|
-
if value.kind() == 'GeneratorType':
|
|
279
|
-
return 'Generator'
|
|
280
|
-
if value.kind() == 'VarType':
|
|
281
|
-
return value.annotation_str
|
|
282
|
-
raise NotImplementedError()
|
|
283
|
-
|
|
284
|
-
class Metadata: # pylint: disable=too-few-public-methods,missing-class-docstring
|
|
285
|
-
|
|
286
|
-
def __init__(self, metadata):
|
|
287
|
-
self.types = metadata
|
|
288
|
-
|
|
289
|
-
def type(self, identifier): # pylint: disable=missing-function-docstring
|
|
290
|
-
if identifier == '(no schema)':
|
|
291
|
-
return (None, '')
|
|
292
|
-
key = identifier.split('(', 1)[0]
|
|
293
|
-
value = self.types.get(key)
|
|
294
|
-
category = value['category'] if value and 'category' in value else ''
|
|
295
|
-
name, overload_name = key.split('.', 1) if key.find('.') > 0 else (key, '')
|
|
296
|
-
import torch # pylint: disable=import-outside-toplevel,import-error
|
|
297
|
-
schema = torch._C._get_schema(name, overload_name) # pylint: disable=protected-access
|
|
298
|
-
return (schema, category)
|