OpenVINO™ is an open-source toolkit for optimizing and deploying AI inference
Go to file
Mateusz Tabaka 93d2bae95a
Move Mul node before Reshape in GroupConvolutionMultiplyFusion (#4031)
* Move Mul node before Reshape in GroupConvolutionMultiplyFusion

In following scenario:

                                    +-----------+
                                    |  weights  |
                                    +-----------+
                                         |
                                         v
                                    +-----------+
                                    |  Reshape  |
                       ....         +-----------+
                          \              /
                           \            /
                            v          v
                       +--------------------+
                       |  GroupConvolution  |
                       +--------------------+
                                |
                                v
                           +-----------+      +----------+
                           |  Multiply | <--- | Constant |
                           +-----------+      +----------+

if a second input (weights) to GroupConvolution is a Reshape,
we should apply Multiply node directly to weights rather than Reshape node:

                                    +-----------+
                                    |  weights  |
                                    +-----------+
                                         |
                                         v
                                    +-----------+      +----------+
                                    |  Multiply | <--- | Constant |
                                    +-----------+      +----------+
                                         |
                                         v
                                    +-----------+
                                    |  Reshape  |
                       ....         +-----------+
                          \              /
                           \            /
                            v          v
                       +--------------------+
                       |  GroupConvolution  |
                       +--------------------+
                                |
                                v

That approach has no side effects in the usual scenario when weights are constant,
but it's necessary for models with FakeQuantize since it gives possibility to perform
GroupConvolutionTransformation from LPT transformations.

* remove unnecessary new lines

* simplify code

* check if input to reshape has shape that starts with G * O

* add pattern::has_static_dims({0, 1}) to weights

* Use K = 3 in WeightsWithFakeQuantizeAndReshape tests

* Add LPT tests for groupconvolution_qdq_transformation

* fix PullReshapeThroughDequantizationTransformation tests
2021-03-19 10:39:50 +03:00
.ci Enable protobuf-lite in ONNX CI tests (#4487) 2021-03-15 14:34:02 +01:00
.github Enable OV clang format command for nGraph (#4792) 2021-03-18 06:38:10 +03:00
cmake Proper detection of Apple M1 (#4848) 2021-03-18 11:17:13 +03:00
docs Simplified IE Exceptions Implementation (#4258) 2021-03-18 16:30:16 +03:00
inference-engine Move Mul node before Reshape in GroupConvolutionMultiplyFusion (#4031) 2021-03-19 10:39:50 +03:00
licensing updated third-party-programs.txt (#4789) 2021-03-16 14:07:16 +03:00
model-optimizer Add ScatterElements value propagation (#4724) 2021-03-18 16:55:35 +03:00
ngraph Added missed headers to NormalizeL2 reference (#4832) 2021-03-19 09:10:28 +03:00
openvino Fix for broken CC in CPU plugin (#4594) 2021-03-04 12:22:21 +03:00
scripts Added gstreamer1.0-x pkg for dlstreamer (#4512) 2021-03-02 12:41:56 +03:00
tests Simplified IE Exceptions Implementation (#4258) 2021-03-18 16:30:16 +03:00
thirdparty Removed redundant code from csv collector (#4225) 2021-02-09 06:39:27 +03:00
tools [IE Tools] Fix seed for random generator in benchmark_app(s) to have reproducable data between runs of the same application (#4757) 2021-03-13 16:41:39 +03:00
.gitattributes Doc Migration (master) (#1377) 2020-07-20 17:36:08 +03:00
.gitignore publish master branch snapshot, revision 8d31237e2c3f673cbb0f0ba110fc10f5cce1d2bb 2020-05-22 02:23:12 +03:00
.gitmodules Optimizations for precision conversion operations in nGraph reference implementations (#3974) 2021-02-08 16:21:45 +03:00
CMakeLists.txt Build python wheel w/o strict dependency to _pyngraph (#4837) 2021-03-18 11:00:14 +03:00
CODEOWNERS Added code owners for scripts folder (#2130) 2020-09-08 17:23:27 +03:00
install_build_dependencies.sh [install_dependencies.sh] install latest cmake if current version is lower 3.13 (#2695) 2020-10-16 21:03:46 +03:00
Jenkinsfile [Jenkinsfile] Disable failFast & enable propagateStatus (#3503) 2020-12-10 12:05:03 +03:00
LICENSE Publishing R3 2018-10-16 13:45:03 +03:00
README.md Feature/azaytsev/gna model link fixes (#4590) 2021-03-03 19:03:40 +03:00
SECURITY.md Added SECURITY.md back (#3177) 2020-11-17 16:44:44 +03:00

OpenVINO™ Toolkit

Stable release Apache License Version 2.0 GitHub branch checks state Azure DevOps builds (branch)

This toolkit allows developers to deploy pre-trained deep learning models through a high-level C++ Inference Engine API integrated with application logic.

This open source version includes several components: namely Model Optimizer, nGraph and Inference Engine, as well as CPU, GPU, MYRIAD, multi device and heterogeneous plugins to accelerate deep learning inferencing on Intel® CPUs and Intel® Processor Graphics. It supports pre-trained models from the Open Model Zoo, along with 100+ open source and public models in popular formats such as Caffe*, TensorFlow*, MXNet* and ONNX*.

Repository components:

License

Deep Learning Deployment Toolkit is licensed under Apache License Version 2.0. By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms.

Resources:

Support

Please report questions, issues and suggestions using:


* Other names and brands may be claimed as the property of others.