Skip to content

Commit

Permalink
Create Release 1.7.0 (#817)
Browse files Browse the repository at this point in the history
Signed-off-by: Winnie Tsang <wtsang@us.ibm.com>
  • Loading branch information
winnietsang authored Nov 24, 2020
1 parent 9871ba0 commit a4beb66
Show file tree
Hide file tree
Showing 8 changed files with 223 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ cache: pip
# at the time of the ONNX-TensorFlow release.

env:
- ONNX_PIP=onnx==1.6.0 TF_PIP=tensorflow==2.0.2 TFA_PIP=tensorflow-addons==0.6.0
- ONNX_PIP=onnx==1.7.0 TF_PIP=tensorflow-cpu==2.3.1 TFA_PIP=tensorflow-addons==0.11.2
- ONNX_PIP=onnx==1.8.0 TF_PIP=tensorflow-cpu==2.3.1 TFA_PIP=tensorflow-addons==0.11.2
- ONNX_PIP=git+https://github.com/onnx/onnx.git@master TF_PIP=tensorflow-cpu TFA_PIP=tensorflow-addons

jobs:
Expand Down
2 changes: 1 addition & 1 deletion ONNX_VERSION_NUMBER
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.6.0
1.7.0
26 changes: 10 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Tensorflow Backend for ONNX
[![Build Status](https://travis-ci.org/onnx/onnx-tensorflow.svg?branch=master)](https://travis-ci.org/onnx/onnx-tensorflow)
[![Build Status](https://travis-ci.com/onnx/onnx-tensorflow.svg?branch=master)](https://travis-ci.com/github/onnx/onnx-tensorflow)

## To convert models from ONNX to Tensorflow:

### Use CLI:

[Command Line Interface Documentation](https://github.com/onnx/onnx-tensorflow/blob/master/doc/CLI.md)

From ONNX to Tensorflow: `onnx-tf convert -i /path/to/input.onnx -o /path/to/output.pb`
From ONNX to Tensorflow: `onnx-tf convert -i /path/to/input.onnx -o /path/to/output`

### Convert programmatically:

Expand All @@ -34,9 +34,14 @@ ONNX-TF requires ONNX (Open Neural Network Exchange) as an external dependency,

The specific ONNX release version that we support in the master branch of ONNX-TF can be found [here](https://github.com/onnx/onnx-tensorflow/blob/master/ONNX_VERSION_NUMBER). This information about ONNX version requirement is automatically encoded in `setup.py`, therefore users needn't worry about ONNX version requirement when installing ONNX-TF.

To install the latest version of ONNX-TF via pip, run `pip install onnx-tf`.
As of November 24, 2020, we are unable to publish release 1.7.0 to PyPi due to problem described in issue #738.\
Once the issue is resolved you should install the latest version of ONNX-TF via pip, by running `pip install onnx-tf`\
In the mean time please get release 1.7.0 by running the following commands to checkout v1.7.0 tag and install it from source via pip.\
`git clone https://github.com/onnx/onnx-tensorflow.git && cd onnx-tensorflow`\
`git checkout v1.7.0`\
`pip install -e .`

Because users often have their own preferences for which variant of Tensorflow to install (i.e., a GPU version instead of a CPU version), we do not explicitly require tensorflow in the installation script. It is therefore users' responsibility to ensure that the proper variant of Tensorflow is available to ONNX-TF. Moreover, we require Tensorflow version == 2.2.0.
Because users often have their own preferences for which variant of Tensorflow to install (i.e., a GPU version instead of a CPU version), we do not explicitly require tensorflow in the installation script. It is therefore users' responsibility to ensure that the proper variant of Tensorflow is available to ONNX-TF. Moreover, we require Tensorflow version == 2.3.1.

## Development:

Expand All @@ -48,7 +53,7 @@ Because users often have their own preferences for which variant of Tensorflow t

### Installation:
- Install ONNX master branch from source.
- Install Tensorflow >= 2.2.0 and tensorflow-addons. (Note for Tensorflow 1.x please refer the [tf-1.x branch](https://github.com/onnx/onnx-tensorflow/tree/tf-1.x))
- Install Tensorflow >= 2.3.1 and tensorflow-addons. (Note for Tensorflow 1.x please refer the [tf-1.x branch](https://github.com/onnx/onnx-tensorflow/tree/tf-1.x))
- Run `git clone https://github.com/onnx/onnx-tensorflow.git && cd onnx-tensorflow`.
- Run `pip install -e .`.

Expand Down Expand Up @@ -79,16 +84,5 @@ http://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html
To perfom unit tests, run `python -m unittest discover test`.
Testing requires significant hardware resources, but nonetheless, we highly recommend that users run through the complete test suite before deploying onnx-tf. The complete test suite typically takes between 15 and 45 minutes to complete, depending on hardware configurations.

PS. Please ensure your code is backward compatible with older version of ONNX. You can easily test it by running the following [docker container](https://hub.docker.com/r/winnietsang/onnx-tensorflow) with your code. If you don't have Docker installed yet, please follow this link to install [Docker](https://docs.docker.com/install/) on your environment.
```
sudo docker pull winnietsang/onnx-tensorflow:onnx1.7.0-tf2.2
sudo docker run -it --name=YOUR-CONTAINER-NAME winnietsang/onnx-tensorflow:onnx1.7.0-tf2.2 /bin/bash
git clone https://github.com/YOUR-USERNAME/onnx-tensorflow.git
cd onnx-tensorflow
git checkout -b YOUR-BRANCH --track remotes/origin/YOUR-BRANCH
pip3 install -e .
python3 -m unittest discover test
```

#### Test Help:
https://docs.python.org/2/library/unittest.html
2 changes: 1 addition & 1 deletion VERSION_NUMBER
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.6.0
1.7.0
1 change: 1 addition & 0 deletions Versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ ONNX-TensorFlow version|ONNX version|TensorFlow version
1.3.0|1.3.0 (opset 8)|1.13.1
1.5.0|1.5.0 (opset 10)|1.15.0
1.6.0|1.6.0 (opset 11)|2.2.0
1.7.0|1.7.0 (opset 12)|2.3.1
2 changes: 1 addition & 1 deletion doc/support_status.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ONNX-Tensorflow Support Status
|||
|-:|:-|
|ONNX-Tensorflow Version|Master ( commit id: fb3b6758903516d80ad4cc506bc4f589be8a7231 )|
|ONNX-Tensorflow Version|Master ( commit id: 9871ba020edac2d7122b38391c9f3a0a906a148d )|
|ONNX Version|Master ( commit id: 274e8b54e4c11c40a8c0a89599196f5311088b64 )|
|Tensorflow Version|v2.3.1|

Expand Down
207 changes: 207 additions & 0 deletions doc/support_status_v1_7_0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
# ONNX-Tensorflow Support Status
|||
|-:|:-|
|ONNX-Tensorflow Version|v1.7.0|
|ONNX Version|1.7.0|
|Tensorflow Version|v2.3.1|

Notes:
* Values that are new or updated from a previous opset version are in bold.
* -: not defined in corresponding ONNX opset version
* \*: the operator is deprecated
* :small_red_triangle:: not supported yet
* :small_orange_diamond:: partially supported
* the rest are all supported

|||||||||||||||
|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|
|**ONNX Operator**|**Opset 1**|**Opset 2**|**Opset 3**|**Opset 4**|**Opset 5**|**Opset 6**|**Opset 7**|**Opset 8**|**Opset 9**|**Opset 10**|**Opset 11**|**Opset 12**|**ONNX Operator**|
|Abs|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Abs|
|Acos|-|-|-|-|-|-|**7**|7|7|7|7|7|Acos|
|Acosh|-|-|-|-|-|-|-|-|**9**|9|9|9|Acosh|
|Add|**1**|1|1|1|1|**6**|**7**|7|7|7|7|7|Add|
|And|**1**|1|1|1|1|1|**7**|7|7|7|7|7|And|
|ArgMax|**1**|1|1|1|1|1|1|1|1|1|**11**|**12**|ArgMax|
|ArgMin|**1**|1|1|1|1|1|1|1|1|1|**11**|**12**|ArgMin|
|Asin|-|-|-|-|-|-|**7**|7|7|7|7|7|Asin|
|Asinh|-|-|-|-|-|-|-|-|**9**|9|9|9|Asinh|
|Atan|-|-|-|-|-|-|**7**|7|7|7|7|7|Atan|
|Atanh|-|-|-|-|-|-|-|-|**9**|9|9|9|Atanh|
|AveragePool|**1**|1|1|1|1|1|**7**|7|7|**10**|**11**|11|AveragePool|
|BatchNormalization|**1**|1|1|1|1|**6**|**7**|7|**9**|9|9|9|BatchNormalization|
|BitShift|-|-|-|-|-|-|-|-|-|-|**11**|11|BitShift|
|Cast|**1**:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|**6**:small_orange_diamond:|6:small_orange_diamond:|6:small_orange_diamond:|**9**:small_orange_diamond:|9:small_orange_diamond:|9:small_orange_diamond:|9:small_orange_diamond:|Cast|
|Ceil|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Ceil|
|Celu|-|-|-|-|-|-|-|-|-|-|-|**12**|Celu|
|Clip|**1**|1|1|1|1|**6**|6|6|6|6|**11**|**12**|Clip|
|Compress|-|-|-|-|-|-|-|-|**9**|9|**11**|11|Compress|
|Concat|**1**|1|1|**4**|4|4|4|4|4|4|**11**|11|Concat|
|ConcatFromSequence|-|-|-|-|-|-|-|-|-|-|**11**:small_orange_diamond:|11:small_orange_diamond:|ConcatFromSequence|
|Constant|**1**|1|1|1|1|1|1|1|**9**|9|**11**|**12**|Constant|
|ConstantOfShape|-|-|-|-|-|-|-|-|**9**|9|9|9|ConstantOfShape|
|Conv|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Conv|
|ConvInteger|-|-|-|-|-|-|-|-|-|**10**|10|10|ConvInteger|
|ConvTranspose|**1**:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|**11**:small_orange_diamond:|11:small_orange_diamond:|ConvTranspose|
|Cos|-|-|-|-|-|-|**7**|7|7|7|7|7|Cos|
|Cosh|-|-|-|-|-|-|-|-|**9**|9|9|9|Cosh|
|CumSum|-|-|-|-|-|-|-|-|-|-|**11**|11|CumSum|
|DepthToSpace|**1**|1|1|1|1|1|1|1|1|1|**11**|11|DepthToSpace|
|DequantizeLinear|-|-|-|-|-|-|-|-|-|**10**|10|10|DequantizeLinear|
|Det|-|-|-|-|-|-|-|-|-|-|**11**|11|Det|
|Div|**1**|1|1|1|1|**6**|**7**|7|7|7|7|7|Div|
|Dropout|**1**|1|1|1|1|**6**|**7**|7|7|**10**|10|**12**|Dropout|
|DynamicQuantizeLinear|-|-|-|-|-|-|-|-|-|-|**11**|11|DynamicQuantizeLinear|
|Einsum|-|-|-|-|-|-|-|-|-|-|-|**12**|Einsum|
|Elu|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Elu|
|Equal|**1**|1|1|1|1|1|**7**|7|7|7|**11**|11|Equal|
|Erf|-|-|-|-|-|-|-|-|**9**|9|9|9|Erf|
|Exp|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Exp|
|Expand|-|-|-|-|-|-|-|**8**|8|8|8|8|Expand|
|EyeLike|-|-|-|-|-|-|-|-|**9**|9|9|9|EyeLike|
|Flatten|**1**|1|1|1|1|1|1|1|**9**|9|**11**|11|Flatten|
|Floor|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Floor|
|GRU|**1**:small_orange_diamond:|1:small_orange_diamond:|**3**:small_orange_diamond:|3:small_orange_diamond:|3:small_orange_diamond:|3:small_orange_diamond:|**7**:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|GRU|
|Gather|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Gather|
|GatherElements|-|-|-|-|-|-|-|-|-|-|**11**|11|GatherElements|
|GatherND|-|-|-|-|-|-|-|-|-|-|**11**|**12**|GatherND|
|Gemm|**1**|1|1|1|1|**6**|**7**|7|**9**|9|**11**|11|Gemm|
|GlobalAveragePool|**1**|1|1|1|1|1|1|1|1|1|1|1|GlobalAveragePool|
|GlobalLpPool|**1**|**2**|2|2|2|2|2|2|2|2|2|2|GlobalLpPool|
|GlobalMaxPool|**1**|1|1|1|1|1|1|1|1|1|1|1|GlobalMaxPool|
|Greater|**1**|1|1|1|1|1|**7**|7|**9**|9|9|9|Greater|
|GreaterOrEqual|-|-|-|-|-|-|-|-|-|-|-|**12**|GreaterOrEqual|
|HardSigmoid|**1**|1|1|1|1|**6**|6|6|6|6|6|6|HardSigmoid|
|Hardmax|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Hardmax|
|Identity|**1**|1|1|1|1|1|1|1|1|1|1|1|Identity|
|If|**1**|1|1|1|1|1|1|1|1|1|**11**|11|If|
|InstanceNormalization|**1**|1|1|1|1|**6**|6|6|6|6|6|6|InstanceNormalization|
|IsInf|-|-|-|-|-|-|-|-|-|**10**|10|10|IsInf|
|IsNaN|-|-|-|-|-|-|-|-|**9**|9|9|9|IsNaN|
|LRN|**1**|1|1|1|1|1|1|1|1|1|1|1|LRN|
|LSTM|**1**:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|**7**:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|LSTM|
|LeakyRelu|**1**|1|1|1|1|**6**|6|6|6|6|6|6|LeakyRelu|
|Less|**1**|1|1|1|1|1|**7**|7|**9**|9|9|9|Less|
|LessOrEqual|-|-|-|-|-|-|-|-|-|-|-|**12**|LessOrEqual|
|Log|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Log|
|LogSoftmax|**1**|1|1|1|1|1|1|1|1|1|**11**|11|LogSoftmax|
|Loop|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Loop|
|LpNormalization|**1**|1|1|1|1|1|1|1|1|1|1|1|LpNormalization|
|LpPool|**1**|**2**|2|2|2|2|2|2|2|2|**11**|11|LpPool|
|MatMul|**1**|1|1|1|1|1|1|1|**9**|9|9|9|MatMul|
|MatMulInteger|-|-|-|-|-|-|-|-|-|**10**|10|10|MatMulInteger|
|Max|**1**|1|1|1|1|**6**|6|**8**|8|8|8|**12**|Max|
|MaxPool|**1**:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|**8**:small_orange_diamond:|8:small_orange_diamond:|**10**:small_orange_diamond:|**11**:small_orange_diamond:|**12**:small_orange_diamond:|MaxPool|
|MaxRoiPool|**1**:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|MaxRoiPool|
|MaxUnpool|-|-|-|-|-|-|-|-|**9**|9|**11**|11|MaxUnpool|
|Mean|**1**|1|1|1|1|**6**|6|**8**|8|8|8|8|Mean|
|MeanVarianceNormalization|-|-|-|-|-|-|-|-|**9**|9|9|9|MeanVarianceNormalization|
|Min|**1**|1|1|1|1|**6**|6|**8**|8|8|8|**12**|Min|
|Mod|-|-|-|-|-|-|-|-|-|**10**|10|10|Mod|
|Mul|**1**|1|1|1|1|**6**|**7**|7|7|7|7|7|Mul|
|Multinomial|-|-|-|-|-|-|**7**:small_red_triangle:|7:small_red_triangle:|7:small_red_triangle:|7:small_red_triangle:|7:small_red_triangle:|7:small_red_triangle:|Multinomial|
|Neg|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Neg|
|NegativeLogLikelihoodLoss|-|-|-|-|-|-|-|-|-|-|-|**12**:small_red_triangle:|NegativeLogLikelihoodLoss|
|NonMaxSuppression|-|-|-|-|-|-|-|-|-|**10**|**11**|11|NonMaxSuppression|
|NonZero|-|-|-|-|-|-|-|-|**9**|9|9|9|NonZero|
|Not|**1**|1|1|1|1|1|1|1|1|1|1|1|Not|
|OneHot|-|-|-|-|-|-|-|-|**9**|9|**11**|11|OneHot|
|Or|**1**|1|1|1|1|1|**7**|7|7|7|7|7|Or|
|PRelu|**1**|1|1|1|1|**6**|**7**|7|**9**|9|9|9|PRelu|
|Pad|**1**|**2**|2|2|2|2|2|2|2|2|**11**|11|Pad|
|Pow|**1**|1|1|1|1|1|**7**|7|7|7|7|**12**|Pow|
|QLinearConv|-|-|-|-|-|-|-|-|-|**10**|10|10|QLinearConv|
|QLinearMatMul|-|-|-|-|-|-|-|-|-|**10**|10|10|QLinearMatMul|
|QuantizeLinear|-|-|-|-|-|-|-|-|-|**10**|10|10|QuantizeLinear|
|RNN|**1**:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|1:small_orange_diamond:|**7**:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|7:small_orange_diamond:|RNN|
|RandomNormal|**1**|1|1|1|1|1|1|1|1|1|1|1|RandomNormal|
|RandomNormalLike|**1**|1|1|1|1|1|1|1|1|1|1|1|RandomNormalLike|
|RandomUniform|**1**|1|1|1|1|1|1|1|1|1|1|1|RandomUniform|
|RandomUniformLike|**1**|1|1|1|1|1|1|1|1|1|1|1|RandomUniformLike|
|Range|-|-|-|-|-|-|-|-|-|-|**11**|11|Range|
|Reciprocal|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Reciprocal|
|ReduceL1|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceL1|
|ReduceL2|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceL2|
|ReduceLogSum|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceLogSum|
|ReduceLogSumExp|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceLogSumExp|
|ReduceMax|**1**|1|1|1|1|1|1|1|1|1|**11**|**12**|ReduceMax|
|ReduceMean|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceMean|
|ReduceMin|**1**|1|1|1|1|1|1|1|1|1|**11**|**12**|ReduceMin|
|ReduceProd|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceProd|
|ReduceSum|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceSum|
|ReduceSumSquare|**1**|1|1|1|1|1|1|1|1|1|**11**|11|ReduceSumSquare|
|Relu|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Relu|
|Reshape|**1**|1|1|1|**5**|5|5|5|5|5|5|5|Reshape|
|Resize|-|-|-|-|-|-|-|-|-|**10**:small_orange_diamond:|**11**:small_orange_diamond:|11:small_orange_diamond:|Resize|
|ReverseSequence|-|-|-|-|-|-|-|-|-|**10**|10|10|ReverseSequence|
|RoiAlign|-|-|-|-|-|-|-|-|-|**10**:small_orange_diamond:|10:small_orange_diamond:|10:small_orange_diamond:|RoiAlign|
|Round|-|-|-|-|-|-|-|-|-|-|**11**|11|Round|
|Scan|-|-|-|-|-|-|-|**8**|**9**|9|**11**|11|Scan|
|Scatter|-|-|-|-|-|-|-|-|**9**|9|**11**\*|11\*|Scatter|
|ScatterElements|-|-|-|-|-|-|-|-|-|-|**11**|11|ScatterElements|
|ScatterND|-|-|-|-|-|-|-|-|-|-|**11**|11|ScatterND|
|Selu|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Selu|
|SequenceAt|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceAt|
|SequenceConstruct|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceConstruct|
|SequenceEmpty|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceEmpty|
|SequenceErase|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceErase|
|SequenceInsert|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceInsert|
|SequenceLength|-|-|-|-|-|-|-|-|-|-|**11**|11|SequenceLength|
|Shape|**1**|1|1|1|1|1|1|1|1|1|1|1|Shape|
|Shrink|-|-|-|-|-|-|-|-|**9**|9|9|9|Shrink|
|Sigmoid|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Sigmoid|
|Sign|-|-|-|-|-|-|-|-|**9**|9|9|9|Sign|
|Sin|-|-|-|-|-|-|**7**|7|7|7|7|7|Sin|
|Sinh|-|-|-|-|-|-|-|-|**9**|9|9|9|Sinh|
|Size|**1**|1|1|1|1|1|1|1|1|1|1|1|Size|
|Slice|**1**|1|1|1|1|1|1|1|1|**10**|**11**|11|Slice|
|Softmax|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Softmax|
|SoftmaxCrossEntropyLoss|-|-|-|-|-|-|-|-|-|-|-|**12**:small_red_triangle:|SoftmaxCrossEntropyLoss|
|Softplus|**1**|1|1|1|1|1|1|1|1|1|1|1|Softplus|
|Softsign|**1**|1|1|1|1|1|1|1|1|1|1|1|Softsign|
|SpaceToDepth|**1**|1|1|1|1|1|1|1|1|1|1|1|SpaceToDepth|
|Split|**1**|**2**|2|2|2|2|2|2|2|2|**11**|11|Split|
|SplitToSequence|-|-|-|-|-|-|-|-|-|-|**11**:small_orange_diamond:|11:small_orange_diamond:|SplitToSequence|
|Sqrt|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Sqrt|
|Squeeze|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Squeeze|
|StringNormalizer|-|-|-|-|-|-|-|-|-|**10**:small_red_triangle:|10:small_red_triangle:|10:small_red_triangle:|StringNormalizer|
|Sub|**1**|1|1|1|1|**6**|**7**|7|7|7|7|7|Sub|
|Sum|**1**|1|1|1|1|**6**|6|**8**|8|8|8|8|Sum|
|Tan|-|-|-|-|-|-|**7**|7|7|7|7|7|Tan|
|Tanh|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Tanh|
|TfIdfVectorizer|-|-|-|-|-|-|-|-|**9**|9|9|9|TfIdfVectorizer|
|ThresholdedRelu|-|-|-|-|-|-|-|-|-|**10**|10|10|ThresholdedRelu|
|Tile|**1**|1|1|1|1|**6**|6|6|6|6|6|6|Tile|
|TopK|**1**|1|1|1|1|1|1|1|1|**10**|**11**|11|TopK|
|Transpose|**1**|1|1|1|1|1|1|1|1|1|1|1|Transpose|
|Unique|-|-|-|-|-|-|-|-|-|-|**11**:small_red_triangle:|11:small_red_triangle:|Unique|
|Unsqueeze|**1**|1|1|1|1|1|1|1|1|1|**11**|11|Unsqueeze|
|Upsample|**1**:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|1:small_red_triangle:|**7**:small_orange_diamond:|7:small_orange_diamond:|**9**:small_orange_diamond:|**10**\*|10\*|10\*|Upsample|
|Where|-|-|-|-|-|-|-|-|**9**|9|9|9|Where|
|Xor|**1**|1|1|1|1|1|**7**|7|7|7|7|7|Xor|

ONNX-TF Supported Operators / ONNX Operators: 156 / 162

Notes:
1. Cast: Cast string to data types other than float32/float64/int32/int64 is not supported in Tensorflow
2. ConcatFromSequence: new_axis=1 not supported in Tensorflow.
3. ConvTranspose: ConvTranspose with dilations != 1, or transposed convolution for 4D or higher are not supported in Tensorflow.
4. GRU: GRU with clip or GRU with linear_before_reset, or GRU not using sigmoid for z and r, or GRU using Elu as the activation function with alpha != 1, or GRU using HardSigmoid as the activation function with alpha != 0.2 or beta != 0.5 are not supported in TensorFlow.
5. LSTM: LSTM not using sigmoid for `f`, or LSTM not using the same activation for `g` and `h` are not supported in Tensorflow.
6. MaxPool: MaxPoolWithArgmax with pad is None or incompatible mode, or MaxPoolWithArgmax with 4D or higher input, or MaxPoolWithArgmax with column major are not supported in Tensorflow.
7. RNN: RNN with clip is not supported in Tensorflow.
8. Resize: Resize required 4D input in Tensorflow. For opset 11, only the following attributes and inputs conbination are supported in Tensorflow:
1. mode=nearest, coordinate_transformation_mode=align_corners, nearest_mode=round_prefer_ceil, can use scales(*) or sizes.
2. mode=nearest, coordinate_transformation_mode=asymmetric, nearest_mode=floor, can use scales(*) or sizes.
3. mode=nearest, coordinate_transformation_mode=tf_half_pixel_for_nn, nearest_mode=floor, can use scales(*) or sizes.
4. mode=linear, coordinate_transformation_mode=align_corners, can use scales(*) or sizes.
5. mode=linear, coordinate_transformation_mode=asymmetric, can use scales(*) or sizes.
6. mode=linear, coordinate_transformation_mode=half_pixel, can use scales(*) or sizes.
7. mode=cubic, coordinate_transformation_mode=align_corners, cubic_coeff_a=-0.5, exclude_outside=1, can use scales(*) or sizes.
8. mode=cubic, coordinate_transformation_mode=asymmetric, cubic_coeff_a=-0.5, exclude_outside=1, can use scales(*) or sizes.
9. mode=cubic, coordinate_transformation_mode=half_pixel, cubic_coeff_a=-0.5, exclude_outside=1, can use scales(*) or sizes.
10. mode=nearest, coordinate_transformation_mode=tf_crop_and_resize, extrapolation_value=any_float_value, nearest_mode=round_prefer_ceil, can use scales or sizes.
11. mode=linear, coordinate_transformation_mode=tf_crop_and_resize, extrapolation_value=any_float_value, can use scales or sizes.
- Note (*): The accuracy of your model will go down, if the height and the width of the new sizes(scales * origial sizes) are not in whole numbers.
9. RoiAlign: sampling_ratio <= 0 is not fully supported.
10. SplitToSequence: Scalar as the split input not supported.
11. Upsample: Upsample required 4D input in Tensorflow.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
version=version,
description=
'Tensorflow backend for ONNX (Open Neural Network Exchange).',
install_requires=[onnx_dep, "PyYAML"],
install_requires=[onnx_dep, "PyYAML", "tensorflow_addons"],
entry_points={
"console_scripts": [
"onnx-tf=onnx_tf.cli:main",
Expand Down

0 comments on commit a4beb66

Please sign in to comment.