Skip to main content

Convert a Chainer model into ONNX

Project description

ONNX-Chainer

PyPI GitHub license Build Status codecov Documentation Status

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!


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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page