From 8b8bbfcda7ac9921ab559fb8a7a18387a03b92e6 Mon Sep 17 00:00:00 2001 From: Winnie Tsang Date: Sat, 21 Nov 2020 00:14:40 +0000 Subject: [PATCH] Create Release 1.7.0 Signed-off-by: Winnie Tsang --- .travis.yml | 2 +- ONNX_VERSION_NUMBER | 2 +- README.md | 26 ++--- VERSION_NUMBER | 2 +- Versioning.md | 1 + doc/support_status.md | 2 +- doc/support_status_v1_7_0.md | 207 +++++++++++++++++++++++++++++++++++ setup.py | 2 +- 8 files changed, 223 insertions(+), 21 deletions(-) create mode 100644 doc/support_status_v1_7_0.md diff --git a/.travis.yml b/.travis.yml index 614e41b69..21d567a65 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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: diff --git a/ONNX_VERSION_NUMBER b/ONNX_VERSION_NUMBER index dc1e644a1..bd8bf882d 100644 --- a/ONNX_VERSION_NUMBER +++ b/ONNX_VERSION_NUMBER @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/README.md b/README.md index 9fd94c9f3..5cbb318f1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # 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: @@ -7,7 +7,7 @@ [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: @@ -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: @@ -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 .`. @@ -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 diff --git a/VERSION_NUMBER b/VERSION_NUMBER index dc1e644a1..bd8bf882d 100644 --- a/VERSION_NUMBER +++ b/VERSION_NUMBER @@ -1 +1 @@ -1.6.0 +1.7.0 diff --git a/Versioning.md b/Versioning.md index 01f600f4b..03d2f540d 100644 --- a/Versioning.md +++ b/Versioning.md @@ -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 diff --git a/doc/support_status.md b/doc/support_status.md index 7fdacd584..33d6a32bd 100644 --- a/doc/support_status.md +++ b/doc/support_status.md @@ -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| diff --git a/doc/support_status_v1_7_0.md b/doc/support_status_v1_7_0.md new file mode 100644 index 000000000..31cfbee73 --- /dev/null +++ b/doc/support_status_v1_7_0.md @@ -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. diff --git a/setup.py b/setup.py index ad7408cf6..fa3e64aba 100644 --- a/setup.py +++ b/setup.py @@ -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",