Convert a Chainer model into ONNX
Project description
ONNX-Chainer
This is an add-on package for ONNX support by Chainer.
Tested environment
- Python 3.5.5, 3.6.7, 3.7.2
- ONNX 1.4.1, 1.5.0
- opset version 7, 8, 9, 10
- Chainer stable, preview
- ONNX-Runtime 0.4.0
(You can still specify all opset versions <= 9, but please noted that opset versions <= 6 are not tested)
Installation
pip install onnx-chainer
Run Test
1. Install test modules
$ pip install onnx-chainer[test-cpu]
Or, on GPU environment
$ pip install cupy # or cupy-cudaXX is useful
$ pip install onnx-chainer[test-gpu]
2. Run tests
$ pytest -m "not gpu"
Or, on GPU environment
$ pytest
Quick Start
First, install ChainerCV to get the pre-trained models.
import numpy as np
import chainer
import chainercv.links as C
import onnx_chainer
model = C.VGG16(pretrained_model='imagenet')
# Pseudo input
x = np.zeros((1, 3, 224, 224), dtype=np.float32)
onnx_chainer.export(model, x, filename='vgg16.onnx')
Supported Functions
Currently 82 Chainer Functions are supported to export in ONNX format.
Activation
- ClippedReLU
- ELU
- HardSigmoid
- LeakyReLU
- LogSoftmax
- PReLUFunction
- ReLU
- Selu
- Sigmoid
- Softmax
- Softplus
- Tanh
Array
- Cast
- Concat
- Copy
- Depth2Space
- Dstack
- ExpandDims
- GetItem
- Hstack
- Pad 12
- Repeat
- Reshape
- ResizeImages
- Separate
- Shape 5
- Space2Depth
- SplitAxis
- Squeeze
- Stack
- Swapaxes
- Tile
- Transpose
- Vstack
- Where
Connection
- Convolution2DFunction
- ConvolutionND
- Deconvolution2DFunction
- DeconvolutionND
- EmbedIDFunction 3
- LinearFunction
Loss
- SoftmaxCrossEntropy
Math
- Absolute
- Add
- AddConstant
- ArcCos
- ArcSin
- ArcTan
- ArgMax
- ArgMin
- BroadcastTo
- Cos
- Cosh
- Clip
- Div
- DivFromConstant
- Exp
- Identity
- LinearInterpolate
- Log
- LogSumExp
- MatMul
- Max
- Maximum
- Mean
- Min
- Minimum
- Mul
- MulConstant
- Neg
- PowVarConst
- Prod
- RsqrtGPU
- Sin
- Sinh
- Sqrt
- Square
- Sub
- SubFromConstant
- Sum
- Tan
Noise
- Dropout 4
Normalization
- BatchNormalization
- FixedBatchNormalization
- LocalResponseNormalization
- NormalizeL2
Pooling
- AveragePooling2D
- AveragePoolingND
- MaxPooling2D
- MaxPoolingND
- ROIPooling2D
- Unpooling2D
Contribution
Any contribution to ONNX-Chainer is welcome!
- Python codes follow Chainer Coding Guidelines
1: mode should be either 'constant', 'reflect', or 'edge'
2: ONNX doesn't support multiple constant values for Pad operation
3: Current ONNX doesn't support ignore_label for EmbedID
4: In test mode, all dropout layers aren't included in the exported file
5: Chainer doesn't support Shape function
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file onnx-chainer-1.5.1a1.tar.gz
.
File metadata
- Download URL: onnx-chainer-1.5.1a1.tar.gz
- Upload date:
- Size: 30.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf764107f9262955e06fc2beb4129b4e5415a4140996da3be67d8fd4c22f60bc |
|
MD5 | f8fa890c0b56e82e219ddd1853b5ab23 |
|
BLAKE2b-256 | ee7945dc125e3031597319fc3ed6fa1f91adb2fb04779a6c4cd50313d3fa2659 |