ONNX to PyTorch
A library to transform ONNX model to PyTorch. This library enables use of PyTorch backend and all of its great features for manipulation of neural networks.
Installation
pip install onnx2pytorch
Usage
import onnx
from onnx2pytorch import ConvertModel
onnx_model = onnx.load(path_to_onnx_model)
pytorch_model = ConvertModel(onnx_model)
Operator coverage
ONNX_OPERATOR_CHECKLIST.md lists every ai.onnx operator the
converter implements, along with the ones that are only partially supported. Operators and
attributes that cannot be expressed in PyTorch raise rather than returning a wrong tensor.
Each operator is tested differentially against onnxruntime, falling back to onnx's
ReferenceEvaluator, at every schema revision it exists in; see
tests/onnx2pytorch/opset_matrix.py. Combinations that neither runtime can run are reported at
the end of a test run, since the converter's behaviour for those is unverified.
Currently supported and tested models from onnx_zoo:
- MobileNet
- ResNet
- ShuffleNet_V2
- BERT-Squad
- EfficientNet-Lite4
- Fast Neural Style Transfer
- Super Resolution
- YOLOv4 (Not exactly the same, nearest neighbour interpolation in pytorch differs)
- U-net (Converted from pytorch to onnx and then back)
Limitations
Known current version limitations are:
batch_size > 1is now supported by default.
BatchNorm layers use inference mode (running statistics), which is correct for ONNX models
exported for inference.- Fine tuning and training of converted models was not tested yet, only inference.
Development
Dependency installation
pip install -r requirements.txt
From onnxruntime>=1.5.0 you need to add the
following to your .bashrc or .zshrc if you are running OSx:
export KMP_DUPLICATE_LIB_OK=True
Code formatting
The Uncompromising Code Formatter: Black
black {source_file_or_directory}
Install it into pre-commit hook to always commit nicely formatted code:
pre-commit install
Testing
Test fixtures
To test the complete conversion of an onnx model download pre-trained models:
./download_fixtures.sh
Use flag --all to download more models.
Add any custom models to ./fixtures folder to test their conversion.
Debugging
Set ConvertModel(..., debug=True) to compare each converted
activation from pytorch with the activation from onnxruntime.
This helps identify where in the graph the activations start to differ.
Metadata
Release files for onnx2pytorch 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| onnx2pytorch-0.6.0.tar.gz | 86.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| onnx2pytorch-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 220.1 kB
Release files / onnx2pytorch-0.6.0.tar.gz
| Download URL | onnx2pytorch-0.6.0.tar.gz |
|---|---|
| Size | 86.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b38762a1426944e1273e808a361011358895dbe7cbd87f2d762e0f058e98afa8
|
|
BLAKE2b-256 checksum How to use checksums |
6feba9bdc5d5f74c716c687fd66db2fa1e9095385405f1134f80eb903e9b8a9c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / onnx2pytorch-0.6.0-py3-none-any.whl
| Download URL | onnx2pytorch-0.6.0-py3-none-any.whl |
|---|---|
| Size | 134.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c286874b69dbdd4383b8fbba57a7ff6a54442e537df777f7ddcbed71780c0649
|
|
BLAKE2b-256 checksum How to use checksums |
35b902db0339a94ab18f376ffc0c47afa923bed475b2ff9ddd9e109c3759464a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|