diff --git a/.github/workflows/post_pr_merge.yml b/.github/workflows/post_pr_merge.yml index 69b7d9c5293..31712fecfa6 100644 --- a/.github/workflows/post_pr_merge.yml +++ b/.github/workflows/post_pr_merge.yml @@ -24,6 +24,7 @@ jobs: merge_commit_sha: ${{ github.event.pull_request.merge_commit_sha }} last_sha_in_pr: ${{ github.event.pull_request.head.sha }} coverage_artifact_name_in_pr: coverage_common + coverage_flags: COMMON secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} upload-coverage-onnx: @@ -33,5 +34,6 @@ jobs: merge_commit_sha: ${{ github.event.pull_request.merge_commit_sha }} last_sha_in_pr: ${{ github.event.pull_request.head.sha }} coverage_artifact_name_in_pr: coverage_onnx + coverage_flags: ONNX secrets: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/precommit.yml b/.github/workflows/precommit.yml index 1652fcb2eb3..a238ed76019 100644 --- a/.github/workflows/precommit.yml +++ b/.github/workflows/precommit.yml @@ -33,6 +33,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} name: coverage_common + flags: COMMON onnx: runs-on: ubuntu-20.04 steps: @@ -58,4 +59,5 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} name: coverage_onnx + flags: ONNX diff --git a/.github/workflows/upload_coverage_for_develop.yml b/.github/workflows/upload_coverage_for_develop.yml index 0bc7e7e4159..952f57ea828 100644 --- a/.github/workflows/upload_coverage_for_develop.yml +++ b/.github/workflows/upload_coverage_for_develop.yml @@ -12,6 +12,9 @@ on: coverage_artifact_name_in_pr: required: true type: string + coverage_flags: + required: true + type: string secrets: CODECOV_TOKEN: required: true @@ -37,4 +40,4 @@ jobs: # github.event.pull_request.merge_commit_sha is the fresh commit in the develop, # provided that github.event.pull_request.merged == true - ./codecov -f ./coverage.xml -t ${{ secrets.CODECOV_TOKEN }} -C ${{ inputs.merge_commit_sha }} -B develop -n "${{ inputs.coverage_artifact_name_in_pr }}" + ./codecov -f ./coverage.xml -t ${{ secrets.CODECOV_TOKEN }} -F ${{ inputs.coverage_flags }} -C ${{ inputs.merge_commit_sha }} -B develop -n "${{ inputs.coverage_artifact_name_in_pr }}" diff --git a/.gitignore b/.gitignore index 4316ef00d3d..9751a56d366 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,9 @@ ENV/ # snapshots *.tar +# pylint config is left at dev's discretion, CI uses ruff/isort/black instead +.pylintrc + # VSCode .vscode/ diff --git a/.pylintrc b/.pylintrc deleted file mode 100644 index d148a69df31..00000000000 --- a/.pylintrc +++ /dev/null @@ -1,52 +0,0 @@ -[MASTER] -disable = arguments-differ, - cell-var-from-loop, - fixme, - global-statement, - invalid-name, - logging-format-interpolation, - missing-docstring, - no-self-use, - not-callable, - too-few-public-methods, - too-many-arguments, - too-many-instance-attributes, - too-many-locals, - unbalanced-tuple-unpacking, - ungrouped-imports, - unpacking-non-sequence, - unused-argument, - wrong-import-order, - attribute-defined-outside-init, - import-outside-toplevel, - duplicate-code, - consider-using-f-string, - logging-fstring-interpolation, - cyclic-import, - useless-import-alias - -max-line-length = 120 -ignore-docstrings = yes -ignored-modules = numpy,torch,cv2,openvino,tensorflow,optimum,memory_profiler -extension-pkg-whitelist = torch,cv2 -init-hook='import sys; sys.setrecursionlimit(8 * sys.getrecursionlimit())' # to avoid https://stackoverflow.com/questions/36496192/pylint-infinite-recursion-in-astriod-package -load-plugins=pylintfileheader -file-header-path=.file-header -file-header-ignore-empty-files=yes - -[SIMILARITIES] -ignore-imports = yes - -[BASIC] -bad-functions = print -good-names = logger,fn - -[DESIGN] -max-statements=60 -max-branches=13 -max-parents=9 - -[TYPECHECK] -# List of members which are set dynamically and missed by pylint inference -# system, and so shouldn't trigger E0201 or E1101 when accessed. -generated-members=onnx.* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9382d0ba0b3..1b3cd89bcc3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,9 +34,12 @@ If your testing code is more extensive than unit tests (in terms of test executi Changes to NNCF Python code should conform to [Python Style Guide](./docs/styleguide/PyGuide.md) -Pylint is used throughout the project to ensure code cleanliness and quality. -A Pylint run is also done as part of the pre-commit scope - the pre-commit `pytest` scope will not be run if your code fails the Pylint checks. -The Pylint rules and exceptions for this repository are described in the standard [.pylintrc](./.pylintrc) format - make sure your local linter uses these. +Basic code style and static checks are enforced using a `pre-commit` Github action. +The exact checks that are run are described in the corresponding [config file](./.pre-commit-config.yaml). +The checks can be run locally using `make pre-commit`. +Most of these checks do in-place fixes at the same time they are run using `make pre-commit`. +Static analysis is done via `ruff` which does not do in-place fixes by default - run `ruff --fix` locally to autofix errors for which it is possible to do so. +Developers may use other tools locally (such as `pylint`) as long as no tool-specific control code is introduced and the pre-commit checks pass. ## Binary files diff --git a/Makefile b/Makefile index 58d2121d6d3..5b71bb3eac1 100644 --- a/Makefile +++ b/Makefile @@ -17,9 +17,6 @@ endif install-pre-commit: pip install pre-commit==3.2.2 -install-pylint: - pip install pylint==2.13.9 - pip install pylintfileheader==0.3.2 ############################################################################### # ONNX backend @@ -31,15 +28,12 @@ install-onnx-test: pip install -r tests/cross_fw/examples/requirements.txt pip install -r tests/onnx/benchmarking/requirements.txt -install-onnx-dev: install-onnx-test install-pre-commit install-pylint +install-onnx-dev: install-onnx-test install-pre-commit pip install -r examples/post_training_quantization/onnx/mobilenet_v2/requirements.txt test-onnx: pytest ${COVERAGE_ARGS} tests/onnx $(DATA_ARG) --junitxml ${JUNITXML_PATH} -pylint-onnx: - pylint --rcfile .pylintrc \ - $(shell python3 tools/collect_pylint_input_files_for_backend.py onnx) test-install-onnx: pytest tests/cross_fw/install -s \ @@ -60,7 +54,7 @@ install-openvino-test: pip install -r tests/cross_fw/install/requirements.txt pip install -r tests/cross_fw/examples/requirements.txt -install-openvino-dev: install-openvino-test install-pre-commit install-pylint +install-openvino-dev: install-openvino-test install-pre-commit pip install -r examples/experimental/openvino/bert/requirements.txt pip install -r examples/experimental/openvino/yolo_v5/requirements.txt pip install -r examples/post_training_quantization/openvino/mobilenet_v2/requirements.txt @@ -71,10 +65,6 @@ install-openvino-dev: install-openvino-test install-pre-commit install-pylint test-openvino: pytest ${COVERAGE_ARGS} tests/openvino $(DATA_ARG) --junitxml ${JUNITXML_PATH} -pylint-openvino: - pylint --rcfile .pylintrc \ - $(shell python3 tools/collect_pylint_input_files_for_backend.py openvino) - test-install-openvino: pytest tests/cross_fw/install -s \ --backend openvino \ @@ -95,18 +85,14 @@ install-tensorflow-test: pip install -r tests/cross_fw/examples/requirements.txt pip install -r examples/tensorflow/requirements.txt -install-tensorflow-dev: install-tensorflow-test install-pre-commit install-pylint +install-tensorflow-dev: install-tensorflow-test install-pre-commit pip install -r examples/post_training_quantization/tensorflow/mobilenet_v2/requirements.txt test-tensorflow: - pytest ${COVERAGE_ARGS} tests/common tests/tensorflow \ + pytest ${COVERAGE_ARGS} tests/tensorflow \ --junitxml ${JUNITXML_PATH} \ $(DATA_ARG) -pylint-tensorflow: - pylint --rcfile .pylintrc \ - $(shell python3 tools/collect_pylint_input_files_for_backend.py tensorflow) - test-install-tensorflow: pytest tests/cross_fw/install -s --backend tf --junitxml ${JUNITXML_PATH} @@ -123,12 +109,12 @@ install-torch-test: pip install -r tests/cross_fw/examples/requirements.txt pip install -r examples/torch/requirements.txt --index-url https://download.pytorch.org/whl/cu118 --extra-index-url=https://pypi.org/simple -install-torch-dev: install-torch-test install-pre-commit install-pylint +install-torch-dev: install-torch-test install-pre-commit pip install -r examples/post_training_quantization/torch/mobilenet_v2/requirements.txt pip install -r examples/post_training_quantization/torch/ssd300_vgg16/requirements.txt test-torch: - pytest ${COVERAGE_ARGS} tests/common tests/torch -m "not weekly and not nightly" --junitxml ${JUNITXML_PATH} $(DATA_ARG) + pytest ${COVERAGE_ARGS} tests/torch -m "not weekly and not nightly" --junitxml ${JUNITXML_PATH} $(DATA_ARG) test-torch-nightly: pytest ${COVERAGE_ARGS} tests/torch -m nightly --junitxml ${JUNITXML_PATH} $(DATA_ARG) @@ -136,12 +122,6 @@ test-torch-nightly: test-torch-weekly: pytest ${COVERAGE_ARGS} tests/torch -m weekly --junitxml ${JUNITXML_PATH} $(DATA_ARG) ${WEEKLY_MODELS_ARG} -COMMON_PYFILES := $(shell python3 tools/collect_pylint_input_files_for_backend.py common) -pylint-torch: - pylint --rcfile .pylintrc \ - $(COMMON_PYFILES) \ - $(shell python3 tools/collect_pylint_input_files_for_backend.py torch) - test-install-torch-cpu: pytest tests/cross_fw/install -s \ --backend torch \ @@ -167,10 +147,6 @@ install-common-test: pip install -r tests/cross_fw/install/requirements.txt pip install -r tests/cross_fw/examples/requirements.txt -pylint-common: - pylint --rcfile .pylintrc \ - $(COMMON_PYFILES) - test-common: pytest ${COVERAGE_ARGS} tests/common $(DATA_ARG) --junitxml ${JUNITXML_PATH} diff --git a/README.md b/README.md index 482ade33933..b7367e84477 100644 --- a/README.md +++ b/README.md @@ -284,6 +284,10 @@ A collection of ready-to-run Jupyter* notebooks are available to demonstrate how - [NNCF Post-Training Optimization of BLIP Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/233-blip-visual-language-processing) - [NNCF Post-Training Optimization of DeepFloyd IF Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/238-deepfloyd-if) - [NNCF Post-Training Optimization of Grammatical Error Correction Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/214-grammar-correction) +- [NNCF Post-Training Optimization of Dolly 2.0 Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/240-dolly-2-instruction-following) +- [NNCF Post-Training Optimization of Massively Multilingual Speech Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/255-mms-massively-multilingual-speech) +- [NNCF Post-Training Optimization of OneFormer Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/249-oneformer-segmentation) +- [NNCF Post-Training Optimization of InstructPix2Pix Model](https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/231-instruct-pix2pix-image-editing) - [Quantize a Segmentation Model and Show Live Inference](https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/110-ct-segmentation-quantize) - [Training to Deployment with TensorFlow and OpenVINO](https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/301-tensorflow-training-openvino) - [Migrate quantization from POT API to NNCF API](https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/111-yolov5-quantization-migration) @@ -375,7 +379,7 @@ You may also use one of the Dockerfiles in the [docker](./docker) directory to b - ONNX\* ~=1.13.1 - OpenVINO\* >=2022.3.0 -This repository is tested on Python* 3.8.10, PyTorch* 2.0.1 (NVidia CUDA\* Toolkit 11.8) and TensorFlow* 2.12.1 (NVidia CUDA\* Toolkit 11.8). +This repository is tested on Python* 3.8.10, PyTorch* 2.1.0 (NVidia CUDA\* Toolkit 11.8) and TensorFlow* 2.12.1 (NVidia CUDA\* Toolkit 11.8). ## NNCF Compressed Model Zoo diff --git a/docs/Installation.md b/docs/Installation.md index 063e2e6f7b3..17063a177f0 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -67,8 +67,9 @@ Use one of the Dockerfiles in the [docker](../docker) directory to build an imag The following table lists the recommended corresponding versions of backend packages as well as the supported versions of Python: -| NNCF | OpenVINO | PyTorch | ONNX | TensorFlow | Python | -| ------- | ---------- | -------- | -------- | ---------- | ------- | -| `2.6.0` | `2023.1.0` | `2.0.1` | `1.13.1` | `2.12.0` | `3.8` | -| `2.5.0` | `2023.0.0` | `1.13.1` | `1.13.1` | `2.11.1` | `3.8` | -| `2.4.0` | `2022.1.0` | `1.12.1` | `1.12.0` | `2.8.2` | `3.8` | +| NNCF | OpenVINO | PyTorch | ONNX | TensorFlow | Python | +|-----------|------------|----------|----------|------------|--------| +| `develop` | `2023.1.0` | `2.1` | `1.13.1` | `2.12.0` | `3.8` | +| `2.6.0` | `2023.1.0` | `2.0.1` | `1.13.1` | `2.12.0` | `3.8` | +| `2.5.0` | `2023.0.0` | `1.13.1` | `1.13.1` | `2.11.1` | `3.8` | +| `2.4.0` | `2022.1.0` | `1.12.1` | `1.12.0` | `2.8.2` | `3.8` | diff --git a/docs/api/source/conf.py b/docs/api/source/conf.py index f7a565f1581..6172cc7c3e4 100644 --- a/docs/api/source/conf.py +++ b/docs/api/source/conf.py @@ -56,7 +56,6 @@ def __init__(self): self.canonical_name_vs_fqn: Dict[str, str] = {} -# pylint: disable=too-many-branches def collect_api_entities() -> APIInfo: """ Collects the fully qualified names of symbols in NNCF package that contain a special attribute (set via @@ -73,13 +72,13 @@ def collect_api_entities() -> APIInfo: for _, modname, _ in pkgutil.walk_packages(path=nncf.__path__, prefix=nncf.__name__ + ".", onerror=lambda x: None): try: modules[modname] = importlib.import_module(modname) - except Exception as e: # pylint: disable=broad-except + except Exception as e: skipped_modules[modname] = str(e) from nncf.common.utils.api_marker import api canonical_imports_seen = set() - # pylint: disable=too-many-nested-blocks + for modname, module in modules.items(): print(f"{modname}") for obj_name, obj in inspect.getmembers(module): @@ -87,7 +86,7 @@ def collect_api_entities() -> APIInfo: if objects_module == modname: if inspect.isclass(obj) or inspect.isfunction(obj): if hasattr(obj, api.API_MARKER_ATTR): - marked_object_name = obj._nncf_api_marker # pylint: disable=protected-access + marked_object_name = obj._nncf_api_marker # Check the actual name of the originally marked object # so that the classes derived from base API classes don't # all automatically end up in API diff --git a/docs/compression_algorithms/CompressWeights.md b/docs/compression_algorithms/CompressWeights.md index 8f2335ac4f8..1861af25a16 100644 --- a/docs/compression_algorithms/CompressWeights.md +++ b/docs/compression_algorithms/CompressWeights.md @@ -6,17 +6,44 @@ The Weights Compression algorithm is aimed at compressing the weights of the models and can be used to optimize the model footprint and performance of large models where the size of weights is relatively larger than the size of activations, for example, Large Language Models (LLM). The algorithm compresses weights only for Linear and Embedding layers. +##### INT8 and NF4 modes + +By default, weights are compressed to 8-bit integer data type - "INT8" mode. +OpenVINO backend has also an experimental support for "NF4" mode - compression to [nf4](https://arxiv.org/pdf/2305.14314v1.pdf) data type. +It goes with a grouped quantization, when small group of weights (e.g. 128) in the channel dimension share quantization parameters (scale). +First embedding and last linear layers are always compressed to 8-bit integer data type in the "NF4" mode. +Percent of the rest layers compressed to NF4 can be configured by "ratio" parameter. +E.g. ratio=0.9 means 90% of layers compressed to nf4 and the rest to 8-bit integer data type. + #### User guide -- Compress weights of linear layers and embeddings to int8 +- Compress weights to 8-bit integer data type. ```python from nncf import compress_weights compressed_model = compress_weights(model) ``` +- Compress weights to nf4 data type with group size = 128, except first embedding and last linear layers - they are compressed to 8-bit integer data type. + +```python +from nncf import compress_weights +from nncf import CompressWeightsMode +compressed_model = compress_weights(model, mode=CompressWeightsMode.NF4) +``` + +- Compress weights of 90% of layers to nf4 with the group size 64, and the rest of layers to 8-bit integer data type. + +```python +from nncf import compress_weights +from nncf import CompressWeightsMode +compressed_model = compress_weights(model, mode=CompressWeightsMode.NF4, group_size=64, ratio=0.9) +``` + ##### Limitations - The algorithm is supported for OpenVINO and PyTorch models. - The compression applies in-place. - The compressed model is not trainable. +- NF4 mode, grouped quantization and mixed nf4-int8 precision selection is available for OpenVINO backend only. +- NF4 support is experimental - models quantized to nf4 should not be faster models quantized to 8-bit integer. diff --git a/docs/styleguide/PyGuide.md b/docs/styleguide/PyGuide.md index 0c7f9169766..40e70432fb7 100644 --- a/docs/styleguide/PyGuide.md +++ b/docs/styleguide/PyGuide.md @@ -6,14 +6,13 @@ - [1 Introduction](#s1-introduction) - [2 Automating Code Formatting](#s2-auto-code-formatting) - [3 Python Language Rules](#s3-python-language-rules) - - [3.1 PyLint](#s3.1-pylint) - - [3.2 3rd party packages](#s3.2-3rd-party-packages) - - [3.3 Global variables](#s3.3-global-variables) - - [3.4 Nested/Local/Inner Classes and Functions](#s3.4-nested) - - [3.5 Default Iterators and Operators](#s3.5-default-iterators-and-operators) - - [3.6 Type Annotated Code](#s3.6-type-annotated-code) - - [3.7 Files and Sockets](#s3.7-files-and-sockets) - - [3.8 Abstract Classes](#s3.8-abstract-classes) + - [3.1 3rd party packages](#s3.1-3rd-party-packages) + - [3.2 Global variables](#s3.2-global-variables) + - [3.3 Nested/Local/Inner Classes and Functions](#s3.3-nested) + - [3.4 Default Iterators and Operators](#s3.4-default-iterators-and-operators) + - [3.5 Type Annotated Code](#s3.5-type-annotated-code) + - [3.6 Files and Sockets](#s3.6-files-and-sockets) + - [3.7 Abstract Classes](#s3.7-abstract-classes) - [4 Python Style Rules](#s4-python-style-rules) - [4.1 Line length](#s4.1-line-length) - [4.2 Comments and Docstrings](#s4.2-comments-and-docstrings) @@ -102,39 +101,19 @@ arr2 = [ ## 3 Python Language Rules - - - - -### 3.1 PyLint - -Run [pylint](https://github.com/PyCQA/pylint) over your code using this [pylintrc](../../.pylintrc). - -- Every warning reported by [pylint](https://github.com/PyCQA/pylint) must be resolved in one of the following way: - - *Preferred solution*: Change the code to fix the warning. - - *Exception*: Suppress the warning if they are inappropriate so that other issues are not hidden. - To suppress warnings you can set a line-level comment - - ```python - dict = "something awful" # Bad Idea... pylint: disable=redefined-builtin - ``` - - or update [pylintrc](../../.pylintrc) if applicable for the whole project. If the reason for the suppression - is not clear from the symbolic name, add an explanation. - - - + + -### 3.2 3rd party packages +### 3.1 3rd party packages Do not add new third-party dependencies unless absolutely necessary. All things being equal, give preference to built-in packages. - - + + -### 3.3 Global variables +### 3.2 Global variables Avoid global variables. @@ -143,11 +122,11 @@ Avoid global variables. - If needed, globals should be declared at the module level and made internal to the module by prepending an `_` to the name. External access must be done through public module-level functions. - - + + -### 3.4 Nested/Local/Inner Classes and Functions +### 3.3 Nested/Local/Inner Classes and Functions No need to overuse nested local functions or classes and inner classes. @@ -191,11 +170,11 @@ No need to overuse nested local functions or classes and inner classes. return m/3 ``` - - + + -### 3.5 Default Iterators and Operators +### 3.4 Default Iterators and Operators Use default iterators and operators for types that support them, like lists, dictionaries, and files. The built-in types define iterator methods, too. Prefer @@ -219,11 +198,11 @@ for line in afile.readlines(): ... for k, v in dict.iteritems(): ... ``` - - + + -### 3.6 Type Annotated Code +### 3.5 Type Annotated Code Code should be annotated with type hints according to [PEP-484](https://www.python.org/dev/peps/pep-0484/), and type-check the code at @@ -233,11 +212,11 @@ build time with a type checking tool like [mypy](http://www.mypy-lang.org/). def func(a: int) -> List[int]: ``` - - + + -### 3.7 Files and Sockets +### 3.6 Files and Sockets Explicitly close files and sockets when done with them. @@ -247,11 +226,11 @@ with open("hello.txt") as hello_file: print(line) ``` - - + + -### 3.8 Abstract Classes +### 3.7 Abstract Classes When defining abstract classes, the following template should be used: @@ -312,7 +291,6 @@ Explicit exceptions to the 120 character limit: - URLs, pathnames, or long flags in comments. - Long string module level constants not containing whitespace that would be inconvenient to split across lines such as URLs or pathnames. - - Pylint disable comments. (e.g.: `# pylint: disable=invalid-name`) diff --git a/examples/common/sample_config.py b/examples/common/sample_config.py index dfd730614f3..bd23ffb3dc7 100644 --- a/examples/common/sample_config.py +++ b/examples/common/sample_config.py @@ -48,13 +48,11 @@ def __call__(self, parser, namespace, values, option_string=None): return self._action(parser, namespace, values, option_string) -# pylint:disable=protected-access class CustomArgumentGroup(argparse._ArgumentGroup): def _add_action(self, action): super()._add_action(ActionWrapper(action)) -# pylint:disable=protected-access class CustomActionContainer(argparse._ActionsContainer): def add_argument_group(self, *args, **kwargs): group = CustomArgumentGroup(self, *args, **kwargs) diff --git a/examples/experimental/torch/classification/bootstrap_nas.py b/examples/experimental/torch/classification/bootstrap_nas.py index 5ae16e5c25d..5e14a2339f0 100644 --- a/examples/experimental/torch/classification/bootstrap_nas.py +++ b/examples/experimental/torch/classification/bootstrap_nas.py @@ -104,7 +104,6 @@ def main(argv): start_worker(main_worker, config) -# pylint:disable=too-many-branches,too-many-statements def main_worker(current_gpu, config: SampleConfig): configure_device(current_gpu, config) config.mlflow = SafeMLFLow(config) diff --git a/examples/experimental/torch/classification/bootstrap_nas_search.py b/examples/experimental/torch/classification/bootstrap_nas_search.py index 228641ff0bf..eb4dc1151e7 100644 --- a/examples/experimental/torch/classification/bootstrap_nas_search.py +++ b/examples/experimental/torch/classification/bootstrap_nas_search.py @@ -91,7 +91,6 @@ def main(argv): start_worker(main_worker, config) -# pylint:disable=too-many-branches,too-many-statements def main_worker(current_gpu, config: SampleConfig): configure_device(current_gpu, config) config.mlflow = SafeMLFLow(config) diff --git a/examples/post_training_quantization/onnx/mobilenet_v2/main.py b/examples/post_training_quantization/onnx/mobilenet_v2/main.py index 007b537ceb6..5f9850f8cbe 100755 --- a/examples/post_training_quantization/onnx/mobilenet_v2/main.py +++ b/examples/post_training_quantization/onnx/mobilenet_v2/main.py @@ -16,7 +16,7 @@ import numpy as np import onnx -import openvino.runtime as ov +import openvino as ov import torch from fastdownload import FastDownload from fastdownload import download_url diff --git a/examples/post_training_quantization/openvino/anomaly_stfpm_quantize_with_accuracy_control/main.py b/examples/post_training_quantization/openvino/anomaly_stfpm_quantize_with_accuracy_control/main.py index daaa491e4ba..88393421801 100644 --- a/examples/post_training_quantization/openvino/anomaly_stfpm_quantize_with_accuracy_control/main.py +++ b/examples/post_training_quantization/openvino/anomaly_stfpm_quantize_with_accuracy_control/main.py @@ -19,7 +19,7 @@ from typing import Any, Dict, Iterable, List, Optional, Tuple import numpy as np -import openvino.runtime as ov +import openvino as ov import torch from anomalib.data.mvtec import MVTec from anomalib.data.utils import download @@ -165,12 +165,16 @@ def transform_fn(data_item): # Benchmark performance, calculate compression rate and validate accuracy fp32_ir_path = f"{ROOT}/stfpm_fp32.xml" -ov.serialize(ov_model, fp32_ir_path) +ov.save_model(ov_model, fp32_ir_path, compress_to_fp16=False) print(f"[1/7] Save FP32 model: {fp32_ir_path}") fp32_size = get_model_size(fp32_ir_path, verbose=True) +# To avoid an accuracy drop when saving a model due to compression of unquantized +# weights to FP16, compress_to_fp16=False should be used. This is necessary because +# nncf.quantize_with_accuracy_control(...) keeps the most impactful operations within +# the model in the original precision to achieve the specified model accuracy. int8_ir_path = f"{ROOT}/stfpm_int8.xml" -ov.serialize(ov_quantized_model, int8_ir_path) +ov.save_model(ov_quantized_model, int8_ir_path, compress_to_fp16=False) print(f"[2/7] Save INT8 model: {int8_ir_path}") int8_size = get_model_size(int8_ir_path, verbose=True) diff --git a/examples/post_training_quantization/openvino/mobilenet_v2/main.py b/examples/post_training_quantization/openvino/mobilenet_v2/main.py index 2cc6ab0329f..d6533bd61d8 100644 --- a/examples/post_training_quantization/openvino/mobilenet_v2/main.py +++ b/examples/post_training_quantization/openvino/mobilenet_v2/main.py @@ -16,7 +16,7 @@ from typing import List, Optional import numpy as np -import openvino.runtime as ov +import openvino as ov import torch from fastdownload import FastDownload from sklearn.metrics import accuracy_score @@ -137,12 +137,12 @@ def transform_fn(data_item): # Benchmark performance, calculate compression rate and validate accuracy fp32_ir_path = f"{ROOT}/mobilenet_v2_fp32.xml" -ov.serialize(ov_model, fp32_ir_path) +ov.save_model(ov_model, fp32_ir_path, compress_to_fp16=False) print(f"[1/7] Save FP32 model: {fp32_ir_path}") fp32_model_size = get_model_size(fp32_ir_path, verbose=True) int8_ir_path = f"{ROOT}/mobilenet_v2_int8.xml" -ov.serialize(ov_quantized_model, int8_ir_path) +ov.save_model(ov_quantized_model, int8_ir_path, compress_to_fp16=False) print(f"[2/7] Save INT8 model: {int8_ir_path}") int8_model_size = get_model_size(int8_ir_path, verbose=True) diff --git a/examples/post_training_quantization/openvino/yolov8/main.py b/examples/post_training_quantization/openvino/yolov8/main.py index f20730970f6..8280d9391b4 100644 --- a/examples/post_training_quantization/openvino/yolov8/main.py +++ b/examples/post_training_quantization/openvino/yolov8/main.py @@ -14,7 +14,7 @@ from typing import Any, Dict, Tuple import numpy as np -import openvino.runtime as ov +import openvino as ov import torch from tqdm import tqdm from ultralytics.cfg import get_cfg @@ -158,7 +158,7 @@ def main(): # Quantize mode in OpenVINO representation quantized_model = quantize(ov_model, data_loader, validator) quantized_model_path = Path(f"{ROOT}/{MODEL_NAME}_openvino_model/{MODEL_NAME}_quantized.xml") - ov.serialize(quantized_model, str(quantized_model_path)) + ov.save_model(quantized_model, str(quantized_model_path), compress_to_fp16=False) # Validate FP32 model fp_stats, total_images, total_objects = validate(ov_model, tqdm(data_loader), validator) diff --git a/examples/post_training_quantization/openvino/yolov8_quantize_with_accuracy_control/main.py b/examples/post_training_quantization/openvino/yolov8_quantize_with_accuracy_control/main.py index a6e17830289..f56bbed26bf 100644 --- a/examples/post_training_quantization/openvino/yolov8_quantize_with_accuracy_control/main.py +++ b/examples/post_training_quantization/openvino/yolov8_quantize_with_accuracy_control/main.py @@ -15,7 +15,7 @@ from typing import Any, Dict, Tuple import numpy as np -import openvino.runtime as ov +import openvino as ov import torch from tqdm import tqdm from ultralytics.cfg import get_cfg @@ -222,7 +222,7 @@ def main(): quantized_model = quantize_ac(ov_model, data_loader, validator) quantized_model_path = Path(f"{ROOT}/{MODEL_NAME}_openvino_model/{MODEL_NAME}_quantized.xml") - ov.serialize(quantized_model, str(quantized_model_path)) + ov.save_model(quantized_model, str(quantized_model_path), compress_to_fp16=False) # Validate FP32 model fp_stats, total_images, total_objects = validate(ov_model, tqdm(data_loader), validator) diff --git a/examples/post_training_quantization/torch/mobilenet_v2/main.py b/examples/post_training_quantization/torch/mobilenet_v2/main.py index 9297d5cf94f..35f9b35c06c 100644 --- a/examples/post_training_quantization/torch/mobilenet_v2/main.py +++ b/examples/post_training_quantization/torch/mobilenet_v2/main.py @@ -16,7 +16,7 @@ from typing import List, Optional import numpy as np -import openvino.runtime as ov +import openvino as ov import torch from fastdownload import FastDownload from openvino.tools import mo @@ -173,12 +173,12 @@ def transform_fn(data_item): ov_quantized_model = mo.convert_model(int8_onnx_path) fp32_ir_path = f"{ROOT}/mobilenet_v2_fp32.xml" -ov.serialize(ov_model, fp32_ir_path) +ov.save_model(ov_model, fp32_ir_path, compress_to_fp16=False) print(f"[1/7] Save FP32 model: {fp32_ir_path}") fp32_model_size = get_model_size(fp32_ir_path, verbose=True) int8_ir_path = f"{ROOT}/mobilenet_v2_int8.xml" -ov.serialize(ov_quantized_model, int8_ir_path) +ov.save_model(ov_quantized_model, int8_ir_path, compress_to_fp16=False) print(f"[2/7] Save INT8 model: {int8_ir_path}") int8_model_size = get_model_size(int8_ir_path, verbose=True) diff --git a/examples/post_training_quantization/torch/ssd300_vgg16/main.py b/examples/post_training_quantization/torch/ssd300_vgg16/main.py index c90ee304e2c..6c495ec03ce 100644 --- a/examples/post_training_quantization/torch/ssd300_vgg16/main.py +++ b/examples/post_training_quantization/torch/ssd300_vgg16/main.py @@ -18,7 +18,7 @@ import nncf from nncf.torch import disable_tracing -import openvino.runtime as ov +import openvino as ov import torch import torchvision from fastdownload import FastDownload @@ -163,12 +163,12 @@ def main(): ov_quantized_model = mo.convert_model(int8_onnx_path) fp32_ir_path = f"{ROOT}/ssd300_vgg16_fp32.xml" - ov.serialize(ov_model, fp32_ir_path) + ov.save_model(ov_model, fp32_ir_path, compress_to_fp16=False) print(f"[1/7] Save FP32 model: {fp32_ir_path}") fp32_model_size = get_model_size(fp32_ir_path, verbose=True) int8_ir_path = f"{ROOT}/ssd300_vgg16_int8.xml" - ov.serialize(ov_quantized_model, int8_ir_path) + ov.save_model(ov_quantized_model, int8_ir_path, compress_to_fp16=False) print(f"[2/7] Save INT8 model: {int8_ir_path}") int8_model_size = get_model_size(int8_ir_path, verbose=True) diff --git a/examples/tensorflow/classification/datasets/builder.py b/examples/tensorflow/classification/datasets/builder.py index 7da8770f583..136fd374c5c 100644 --- a/examples/tensorflow/classification/datasets/builder.py +++ b/examples/tensorflow/classification/datasets/builder.py @@ -130,7 +130,7 @@ def _preprocess(self, image: tf.Tensor, label: tf.Tensor): label = self._label_preprocessing_fn(label) label = tf.cast(label, tf.int32) if self._one_hot: - label = tf.one_hot(label, self.num_classes) # pylint: disable=E1120 + label = tf.one_hot(label, self.num_classes) label = tf.reshape(label, [self.num_classes]) return image, label diff --git a/examples/tensorflow/common/callbacks.py b/examples/tensorflow/common/callbacks.py index 2c7c36e5604..071d97b7c64 100644 --- a/examples/tensorflow/common/callbacks.py +++ b/examples/tensorflow/common/callbacks.py @@ -68,7 +68,6 @@ def __init__(self, log_dir: str, track_lr: bool = False, initial_step: int = 0, self.step = initial_step self._track_lr = track_lr - # pylint: disable=W0237 def on_train_batch_begin(self, epoch: int, logs: MutableMapping[str, Any] = None) -> None: self.step += 1 logs = logs or {} @@ -111,6 +110,6 @@ def _get_base_optimizer(self) -> tf.keras.optimizers.Optimizer: # The optimizer might be wrapped by another class, so unwrap it while hasattr(optimizer, "_optimizer"): - optimizer = optimizer._optimizer # pylint:disable=protected-access + optimizer = optimizer._optimizer return optimizer diff --git a/examples/tensorflow/common/object_detection/architecture/darknet.py b/examples/tensorflow/common/object_detection/architecture/darknet.py index 72a4083657d..792d7fd0b63 100644 --- a/examples/tensorflow/common/object_detection/architecture/darknet.py +++ b/examples/tensorflow/common/object_detection/architecture/darknet.py @@ -10,7 +10,7 @@ # limitations under the License. import tensorflow as tf -import tensorflow.keras.backend as K # pylint: disable=no-name-in-module +import tensorflow.keras.backend as K from examples.tensorflow.common.object_detection.architecture import nn_ops diff --git a/examples/tensorflow/common/object_detection/architecture/heads.py b/examples/tensorflow/common/object_detection/architecture/heads.py index 608cacb229c..71fd9a89bbe 100644 --- a/examples/tensorflow/common/object_detection/architecture/heads.py +++ b/examples/tensorflow/common/object_detection/architecture/heads.py @@ -220,7 +220,7 @@ def __init__( min_level, max_level, anchors_per_location, - num_convs=2, # pylint: disable=W0613 + num_convs=2, num_filters=256, use_separable_conv=False, activation="relu", @@ -288,7 +288,7 @@ def __init__( for level in range(self._min_level, self._max_level + 1): self._norm_activations[level] = norm_activation(name="rpn-l%d-bn" % level) - def _shared_rpn_heads(self, features, anchors_per_location, level, is_training): # pylint: disable=W0613 + def _shared_rpn_heads(self, features, anchors_per_location, level, is_training): """Shared RPN heads.""" features = self._rpn_conv(features) if self._use_batch_norm: diff --git a/examples/tensorflow/common/object_detection/losses.py b/examples/tensorflow/common/object_detection/losses.py index 2debc916fa1..ede14814f25 100644 --- a/examples/tensorflow/common/object_detection/losses.py +++ b/examples/tensorflow/common/object_detection/losses.py @@ -700,7 +700,7 @@ def __call__( use_softmax_loss=False, use_giou_loss=False, use_diou_loss=True, - ): # pylint: disable=R0915 + ): """ YOLOv3 loss function. diff --git a/examples/tensorflow/common/object_detection/utils/input_utils.py b/examples/tensorflow/common/object_detection/utils/input_utils.py index 66d37498690..79077497367 100644 --- a/examples/tensorflow/common/object_detection/utils/input_utils.py +++ b/examples/tensorflow/common/object_detection/utils/input_utils.py @@ -334,7 +334,7 @@ def _flip_boxes_left_right(boxes): row is in the form of [ymin, xmin, ymax, xmax]. :return: Flipped boxes. """ - ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) # pylint: disable=E1120, E1124 + ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) flipped_xmin = tf.subtract(1.0, xmax) flipped_xmax = tf.subtract(1.0, xmin) flipped_boxes = tf.concat([ymin, flipped_xmin, ymax, flipped_xmax], 1) @@ -411,7 +411,7 @@ def _flip_boxes_up_down(boxes): Returns: Flipped boxes. """ - ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) # pylint: disable=E1120, E1124 + ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) flipped_ymin = tf.subtract(1.0, ymax) flipped_ymax = tf.subtract(1.0, ymin) flipped_boxes = tf.concat([flipped_ymin, xmin, flipped_ymax, xmax], 1) @@ -494,7 +494,7 @@ def _rot90_boxes(boxes): Each row is in the form of [ymin, xmin, ymax, xmax]. :return: Rotated boxes. """ - ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) # pylint: disable=E1120, E1124 + ymin, xmin, ymax, xmax = tf.split(boxes, 4, axis=1) rotated_ymin = tf.subtract(1.0, xmax) rotated_ymax = tf.subtract(1.0, xmin) rotated_xmin = ymin diff --git a/examples/tensorflow/common/object_detection/utils/mask_utils.py b/examples/tensorflow/common/object_detection/utils/mask_utils.py index e36bb0af4f4..569f2156074 100644 --- a/examples/tensorflow/common/object_detection/utils/mask_utils.py +++ b/examples/tensorflow/common/object_detection/utils/mask_utils.py @@ -76,7 +76,7 @@ def expand_boxes(boxes, scale): w = np.maximum(w, 1) h = np.maximum(h, 1) - mask = cv2.resize(padded_mask, (w, h)) # pylint: disable=E1101 + mask = cv2.resize(padded_mask, (w, h)) mask = np.array(mask > 0.5, dtype=np.uint8) x_0 = min(max(ref_box[0], 0), image_width) diff --git a/examples/tensorflow/common/object_detection/utils/yolo_v4_utils.py b/examples/tensorflow/common/object_detection/utils/yolo_v4_utils.py index b527130a850..52c62db617a 100644 --- a/examples/tensorflow/common/object_detection/utils/yolo_v4_utils.py +++ b/examples/tensorflow/common/object_detection/utils/yolo_v4_utils.py @@ -183,7 +183,7 @@ def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1): # box1(4,n), return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + 1e-16) > area_thr) & (ar < ar_thr) # candidates -def merge_mosaic_bboxes(bboxes, crop_x, crop_y, image_size): # pylint: disable=R0912 +def merge_mosaic_bboxes(bboxes, crop_x, crop_y, image_size): # adjust & merge mosaic samples bboxes as following area order: # ----------- # | | | diff --git a/examples/tensorflow/common/utils.py b/examples/tensorflow/common/utils.py index 7e93d579d49..d1a8cccf379 100644 --- a/examples/tensorflow/common/utils.py +++ b/examples/tensorflow/common/utils.py @@ -150,7 +150,7 @@ def __init__(self, log_dir, name): log_dir: the model folder path name: the summary subfolder name """ - self.writer = tf.summary.create_file_writer(os.path.join(log_dir, name)) # pylint: disable=E1101 + self.writer = tf.summary.create_file_writer(os.path.join(log_dir, name)) def __call__(self, metrics, step): """Write metrics to summary with the given writer @@ -160,7 +160,7 @@ def __call__(self, metrics, step): step: integer. The training step """ - with self.writer.as_default(): # pylint: disable=E1129 + with self.writer.as_default(): for metric_name, value in metrics.items(): tf.summary.scalar(metric_name, value, step=step) self.writer.flush() diff --git a/examples/tensorflow/object_detection/postprocessing/yolo_v4_postprocessing.py b/examples/tensorflow/object_detection/postprocessing/yolo_v4_postprocessing.py index ca9a482b28b..282a75ae498 100644 --- a/examples/tensorflow/object_detection/postprocessing/yolo_v4_postprocessing.py +++ b/examples/tensorflow/object_detection/postprocessing/yolo_v4_postprocessing.py @@ -12,7 +12,7 @@ import copy import numpy as np -from scipy.special import expit # pylint: disable=E0611 +from scipy.special import expit from scipy.special import softmax diff --git a/examples/tensorflow/object_detection/preprocessing/retinanet_preprocessing.py b/examples/tensorflow/object_detection/preprocessing/retinanet_preprocessing.py index 30ffb75be0d..61f7d4b7c30 100644 --- a/examples/tensorflow/object_detection/preprocessing/retinanet_preprocessing.py +++ b/examples/tensorflow/object_detection/preprocessing/retinanet_preprocessing.py @@ -152,7 +152,7 @@ def _parse_train_data(self, data): # Flips image randomly during training. if self._aug_rand_hflip: - image, boxes = input_utils.random_horizontal_flip(image, boxes) # pylint: disable=W0632 + image, boxes = input_utils.random_horizontal_flip(image, boxes) # Converts boxes from normalized coordinates to pixel coordinates. boxes = box_utils.denormalize_boxes(boxes, image_shape) diff --git a/examples/tensorflow/segmentation/preprocessing/maskrcnn_preprocessing.py b/examples/tensorflow/segmentation/preprocessing/maskrcnn_preprocessing.py index 0e2d944e0b3..9d70a92bcf4 100644 --- a/examples/tensorflow/segmentation/preprocessing/maskrcnn_preprocessing.py +++ b/examples/tensorflow/segmentation/preprocessing/maskrcnn_preprocessing.py @@ -164,9 +164,9 @@ def _parse_train_data(self, data): # Flips image randomly during training. if self._aug_rand_hflip: if self._include_mask: - image, boxes, masks = input_utils.random_horizontal_flip(image, boxes, masks) # pylint: disable=W0632 + image, boxes, masks = input_utils.random_horizontal_flip(image, boxes, masks) else: - image, boxes = input_utils.random_horizontal_flip(image, boxes) # pylint: disable=W0632 + image, boxes = input_utils.random_horizontal_flip(image, boxes) # Converts boxes from normalized coordinates to pixel coordinates. # Now the coordinates of boxes are w.r.t. the original image. diff --git a/examples/torch/classification/main.py b/examples/torch/classification/main.py index 0b2864b5b19..5c80db6b8f5 100644 --- a/examples/torch/classification/main.py +++ b/examples/torch/classification/main.py @@ -130,9 +130,7 @@ def main(argv): if not is_staged_quantization(config): start_worker(main_worker, config) else: - from examples.torch.classification.staged_quantization_worker import ( - staged_quantization_main_worker, # pylint: disable=cyclic-import - ) + from examples.torch.classification.staged_quantization_worker import staged_quantization_main_worker start_worker(staged_quantization_main_worker, config) @@ -145,7 +143,6 @@ def inception_criterion_fn(model_outputs: Any, target: Any, criterion: _Loss) -> return loss1 + 0.4 * loss2 -# pylint:disable=too-many-branches,too-many-statements def main_worker(current_gpu, config: SampleConfig): configure_device(current_gpu, config) config.mlflow = SafeMLFLow(config) @@ -277,7 +274,7 @@ def model_eval_fn(model): if "train" in config.mode: if is_accuracy_aware_training(config): # validation function that returns the target metric value - # pylint: disable=E1123 + def validate_fn(model, epoch): top1, _, _ = validate(val_loader, model, criterion, config, epoch=epoch) return top1 diff --git a/examples/torch/classification/staged_quantization_worker.py b/examples/torch/classification/staged_quantization_worker.py index 7498d804b67..2a73b630c24 100644 --- a/examples/torch/classification/staged_quantization_worker.py +++ b/examples/torch/classification/staged_quantization_worker.py @@ -122,8 +122,6 @@ def state_dict(self): return self.__dict__ -# pylint:disable=too-many-branches -# pylint:disable=too-many-statements def staged_quantization_main_worker(current_gpu, config): configure_device(current_gpu, config) config.mlflow = SafeMLFLow(config) @@ -313,7 +311,7 @@ def train_staged( acc1 = best_acc1 if epoch % config.test_every_n_epochs == 0: # evaluate on validation set - # pylint: disable=E1123 + acc1, _, _ = validate(val_loader, model, criterion, config, epoch=epoch) compression_stage = compression_ctrl.compression_stage() diff --git a/examples/torch/common/model_loader.py b/examples/torch/common/model_loader.py index e688489f113..be8a55d5ae6 100644 --- a/examples/torch/common/model_loader.py +++ b/examples/torch/common/model_loader.py @@ -92,7 +92,7 @@ def is_url(uri): try: parsed_url = urllib.parse.urlparse(uri) return parsed_url.scheme and parsed_url.netloc - except: # pylint: disable=bare-except # noqa: E722 + except: # noqa: E722 return False diff --git a/examples/torch/common/restricted_pickle_module.py b/examples/torch/common/restricted_pickle_module.py index 4de0d0334e6..4ee052a109a 100644 --- a/examples/torch/common/restricted_pickle_module.py +++ b/examples/torch/common/restricted_pickle_module.py @@ -32,7 +32,6 @@ class Unpickler(pickle.Unpickler): safe_builtins = {"range", "complex", "set", "frozenset", "slice", "dict"} safe_collections = {"OrderedDict", "defaultdict"} - # pylint:disable=protected-access allowed_classes = { "torch": {"Tensor", "FloatStorage", "LongStorage", "IntStorage"}, "torch._utils": {"_rebuild_tensor", "_rebuild_tensor_v2", "_rebuild_parameter"}, diff --git a/examples/torch/common/utils.py b/examples/torch/common/utils.py index ffd02d573d8..8a42acd2415 100644 --- a/examples/torch/common/utils.py +++ b/examples/torch/common/utils.py @@ -24,8 +24,6 @@ import mlflow import torch from PIL import Image - -# pylint: disable=import-error from returns.maybe import Maybe from returns.maybe import Nothing from torch.utils import data @@ -207,7 +205,6 @@ def make_additional_checkpoints(checkpoint_path: str, is_best: bool, epoch: int, copyfile(checkpoint_path, str(intermediate_checkpoint)) -# pylint:disable=no-member class ForkedPdb(pdb.Pdb): """A Pdb subclass that may be used from a forked multiprocessing child diff --git a/examples/torch/object_detection/layers/box_utils.py b/examples/torch/object_detection/layers/box_utils.py index 404e417c025..d39d1242362 100644 --- a/examples/torch/object_detection/layers/box_utils.py +++ b/examples/torch/object_detection/layers/box_utils.py @@ -174,7 +174,6 @@ def log_sum_exp(x): return torch.log(torch.sum(torch.exp(x - x_max), 1, keepdim=True)) + x_max -# pylint:disable=abstract-method class NMSFunction(torch.autograd.Function): @staticmethod def forward(ctx, boxes, scores, threshold, top_k=200): diff --git a/examples/torch/object_detection/layers/functions/detection.py b/examples/torch/object_detection/layers/functions/detection.py index 2230b38b488..a774ecf0e45 100644 --- a/examples/torch/object_detection/layers/functions/detection.py +++ b/examples/torch/object_detection/layers/functions/detection.py @@ -55,7 +55,6 @@ def backward(ctx, grad_out): return grad_out -# pylint:disable=abstract-method class DetectionOutputFunction(torch.autograd.Function): """At test time, Detect is the final layer of SSD. Decode location preds, apply non-maximum suppression to location predictions based on conf diff --git a/examples/torch/object_detection/layers/functions/prior_box.py b/examples/torch/object_detection/layers/functions/prior_box.py index 6b8b6c5c550..5963cb14ac1 100644 --- a/examples/torch/object_detection/layers/functions/prior_box.py +++ b/examples/torch/object_detection/layers/functions/prior_box.py @@ -57,7 +57,6 @@ def forward(self, input_fm, img_tensor): return PriorBoxFunction.apply(input_fm, img_tensor, self) -# pylint:disable=abstract-method class PriorBoxFunction(torch.autograd.Function): """Compute priorbox coordinates in point form for each source feature map. diff --git a/examples/torch/object_detection/layers/modules/l2norm.py b/examples/torch/object_detection/layers/modules/l2norm.py index 170f493461a..e1d4ae26104 100644 --- a/examples/torch/object_detection/layers/modules/l2norm.py +++ b/examples/torch/object_detection/layers/modules/l2norm.py @@ -45,7 +45,6 @@ def forward(self, x): return L2NormFunction.apply(x, self.weight, self) -# pylint:disable=abstract-method class L2NormFunction(torch.autograd.Function): @staticmethod def forward(ctx, x, weight, l2NormParams): diff --git a/examples/torch/object_detection/layers/modules/ssd_head.py b/examples/torch/object_detection/layers/modules/ssd_head.py index 74fe99b2453..0ff575eaf38 100644 --- a/examples/torch/object_detection/layers/modules/ssd_head.py +++ b/examples/torch/object_detection/layers/modules/ssd_head.py @@ -112,7 +112,6 @@ def __init__(self, outputs, modules): super().__init__(*modules) self.outputs = [str(o) for o in outputs] - # pylint:disable=W0237 def forward(self, x): outputs = [] for name, module in self._modules.items(): diff --git a/examples/torch/object_detection/main.py b/examples/torch/object_detection/main.py index c44d58ad98f..0aa9c6e04a2 100644 --- a/examples/torch/object_detection/main.py +++ b/examples/torch/object_detection/main.py @@ -105,7 +105,6 @@ def main(argv): start_worker(main_worker, config) -# pylint:disable=too-many-branches,too-many-statements def main_worker(current_gpu, config): ################################# # Setup experiment environment @@ -236,7 +235,7 @@ def model_eval_fn(model): if "train" in config.mode and is_accuracy_aware_training(config): # validation function that returns the target metric value - # pylint: disable=E1123 + def validate_fn(model, epoch): model.eval() mAP = test_net(model, config.device, test_data_loader, distributed=config.distributed) @@ -417,7 +416,6 @@ def train_step(batch_iterator, compression_ctrl, config, criterion, net, train_d return batch_iterator, batch_loss, batch_loss_c, batch_loss_l, loss_comp -# pylint: disable=too-many-statements def train(net, compression_ctrl, train_data_loader, test_data_loader, criterion, optimizer, config, lr_scheduler): net.train() loc_loss = 0 diff --git a/examples/torch/semantic_segmentation/main.py b/examples/torch/semantic_segmentation/main.py index 15f328d630c..f8d5749b225 100644 --- a/examples/torch/semantic_segmentation/main.py +++ b/examples/torch/semantic_segmentation/main.py @@ -291,8 +291,6 @@ def get_params_to_optimize(model_without_dp, aux_lr, config): return params_to_optimize -# pylint: disable=too-many-branches -# pylint: disable=too-many-statements def train( model, model_without_dp, diff --git a/examples/torch/semantic_segmentation/metric/confusionmatrix.py b/examples/torch/semantic_segmentation/metric/confusionmatrix.py index c06cb4848a9..f0c82ef74e8 100644 --- a/examples/torch/semantic_segmentation/metric/confusionmatrix.py +++ b/examples/torch/semantic_segmentation/metric/confusionmatrix.py @@ -88,7 +88,7 @@ def add(self, predicted, target): bincount_2d = np.bincount(x.astype(np.int32), minlength=self.num_classes**2) # See Pylint issue #2721 - # pylint: disable=no-member + assert bincount_2d.size == self.num_classes**2 conf = bincount_2d.reshape((self.num_classes, self.num_classes)) diff --git a/examples/torch/semantic_segmentation/utils/data.py b/examples/torch/semantic_segmentation/utils/data.py index 8f0f5d878fc..b6dc525c504 100644 --- a/examples/torch/semantic_segmentation/utils/data.py +++ b/examples/torch/semantic_segmentation/utils/data.py @@ -101,7 +101,7 @@ def remap(image, old_values, new_values): # equal to 0 if new != 0: # See Pylint issue #2721 - # pylint: disable=unsupported-assignment-operation + tmp[image == old] = new return Image.fromarray(tmp) @@ -303,7 +303,7 @@ def label_to_color(label, class_encoding): def color_to_label(color_labels: Image, class_encoding: OrderedDict): color_labels = np.array(color_labels.convert("RGB")) - # pylint: disable=unsubscriptable-object + labels = np.zeros((color_labels.shape[0], color_labels.shape[1]), dtype=np.int64) red = color_labels[..., 0] diff --git a/examples/torch/semantic_segmentation/utils/loss_funcs.py b/examples/torch/semantic_segmentation/utils/loss_funcs.py index 188499d3fef..f25d4647e1b 100644 --- a/examples/torch/semantic_segmentation/utils/loss_funcs.py +++ b/examples/torch/semantic_segmentation/utils/loss_funcs.py @@ -68,7 +68,6 @@ def cross_entropy_icnet(inputs, target: torch.Tensor, weight: list): def do_model_specific_postprocessing(model_name, labels, model_outputs): - # pylint:disable=no-member metric_outputs = model_outputs if model_name == "unet": # UNet predicts center image crops diff --git a/nncf/__init__.py b/nncf/__init__.py index d047a37e0b4..4ace2c75548 100644 --- a/nncf/__init__.py +++ b/nncf/__init__.py @@ -33,8 +33,8 @@ _SUPPORTED_FRAMEWORKS = ["torch", "tensorflow", "onnx", "openvino"] -from importlib.util import find_spec as _find_spec # noqa: E402 # pylint:disable=wrong-import-position -from pathlib import Path as _Path # noqa: E402 # pylint:disable=wrong-import-position +from importlib.util import find_spec as _find_spec # noqa: E402 +from pathlib import Path as _Path # noqa: E402 _AVAILABLE_FRAMEWORKS = {} diff --git a/nncf/common/composite_compression.py b/nncf/common/composite_compression.py index 4c07789bf3a..b6989b4e6f0 100644 --- a/nncf/common/composite_compression.py +++ b/nncf/common/composite_compression.py @@ -324,12 +324,12 @@ def export_model( self.prepare_for_export() backend = get_backend(self.model) if backend is BackendType.TENSORFLOW: - from nncf.tensorflow.exporter import TFExporter # pylint: disable=cyclic-import + from nncf.tensorflow.exporter import TFExporter exporter = TFExporter(self.model, input_names, output_names, model_args) else: assert backend is BackendType.TORCH - from nncf.torch.exporter import PTExporter # pylint: disable=cyclic-import + from nncf.torch.exporter import PTExporter exporter = PTExporter(self.model, input_names, output_names, model_args) if save_format is not None: diff --git a/nncf/common/compression.py b/nncf/common/compression.py index 9a11803ead8..4d2460f2c3d 100644 --- a/nncf/common/compression.py +++ b/nncf/common/compression.py @@ -105,12 +105,12 @@ def export_model( self.prepare_for_export() backend = get_backend(self.model) if backend is BackendType.TENSORFLOW: - from nncf.tensorflow.exporter import TFExporter # pylint: disable=cyclic-import + from nncf.tensorflow.exporter import TFExporter exporter = TFExporter(self.model, input_names, output_names, model_args) else: assert backend is BackendType.TORCH - from nncf.torch.exporter import PTExporter # pylint: disable=cyclic-import + from nncf.torch.exporter import PTExporter exporter = PTExporter(self.model, input_names, output_names, model_args) if save_format is not None: diff --git a/nncf/common/graph/graph.py b/nncf/common/graph/graph.py index 08a1fd587bd..9e958474c72 100644 --- a/nncf/common/graph/graph.py +++ b/nncf/common/graph/graph.py @@ -177,7 +177,6 @@ def __init__(self, input_edges: List[NNCFGraphEdge], output_edges: List[NNCFGrap self.output_edges = output_edges -# pylint:disable=too-many-public-methods class NNCFGraph: """ Wrapper over a regular directed acyclic graph that represents a control flow/execution graph of a DNN @@ -574,37 +573,36 @@ def get_graph_for_structure_analysis(self, extended: bool = False) -> nx.DiGraph :param extended: whether the graph edges should have attributes: shape of the tensor and tensor primitive type. :return: An nx.DiGraph to be used for structure analysis """ - # .dot format reserves ':' character in node names - __RESERVED_DOT_CHARACTER = ":" - __CHARACTER_REPLACE_TO = "^" - out_graph = nx.DiGraph() for node_name, node in self._nx_graph.nodes.items(): - visualization_node_name = node_name.replace(__RESERVED_DOT_CHARACTER, __CHARACTER_REPLACE_TO) attrs_node = {"id": node[NNCFNode.ID_NODE_ATTR], "type": node[NNCFNode.NODE_TYPE_ATTR]} for attr in ["color", "label", "style"]: if attr in node: attrs_node[attr] = node[attr] - # If the node_name has reserved character, use visualization_node_name as node name. - # While use 'label' attribute with original node name for visualization. - if "label" not in attrs_node and __RESERVED_DOT_CHARACTER in node_name: - attrs_node["label"] = node_name - out_graph.add_node(visualization_node_name, **attrs_node) + out_graph.add_node(node_name, **attrs_node) for u, v in self._nx_graph.edges: edge = self._nx_graph.edges[u, v] attrs_edge = {} - u = u.replace(__RESERVED_DOT_CHARACTER, __CHARACTER_REPLACE_TO) - v = v.replace(__RESERVED_DOT_CHARACTER, __CHARACTER_REPLACE_TO) + label = {} + if edge[NNCFGraph.PARALLEL_INPUT_PORT_IDS_ATTR]: + label["parallel_input_port_ids"] = edge[NNCFGraph.PARALLEL_INPUT_PORT_IDS_ATTR] + if extended: if edge[NNCFGraph.DTYPE_EDGE_ATTR] is Dtype.INTEGER: attrs_edge["style"] = "dashed" else: attrs_edge["style"] = "solid" - attrs_edge["label"] = edge[NNCFGraph.ACTIVATION_SHAPE_EDGE_ATTR] + label["shape"] = edge[NNCFGraph.ACTIVATION_SHAPE_EDGE_ATTR] + + if label: + if "shape" in label and len(label) == 1: + attrs_edge["label"] = label["shape"] + else: + attrs_edge["label"] = ", ".join((f"{k}:{v}" for k, v in label.items())) out_graph.add_edge(u, v, **attrs_edge) - return out_graph + return relabel_graph_for_dot_visualization(out_graph) def _get_graph_for_visualization(self) -> nx.DiGraph: """ @@ -635,7 +633,7 @@ def _get_graph_for_visualization(self) -> nx.DiGraph: for node in out_graph.nodes.values(): node.pop("label") - return out_graph + return relabel_graph_for_dot_visualization(out_graph) def get_node_by_name(self, name: NNCFNodeName) -> NNCFNode: node_ids = self._node_name_to_node_id_map.get(name, None) @@ -761,3 +759,35 @@ def find_matching_subgraphs(self, patterns: GraphPattern, strict: bool = True) - subgraph_list.append(self.get_node_by_key(node_key)) output.append(subgraph_list) return output + + +def relabel_graph_for_dot_visualization(nx_graph: nx.Graph) -> nx.Graph: + """ + Relabels NetworkX graph nodes to exclude reserved symbols in keys. + In case replaced names match for two different nodes, integer index is added to its keys. + While nodes keys are being updated, visualized nodes names corresponds to the original nodes names. + + :param nx_graph: NetworkX graph to visualize via dot. + :return: NetworkX graph with reserved symbols in nodes keys replaced. + """ + # .dot format reserves ':' character in node names + __RESERVED_DOT_CHARACTER = ":" + __CHARACTER_REPLACE_TO = "^" + + hits = defaultdict(lambda: 0) + mapping = {} + for original_name in nx_graph.nodes(): + dot_name = original_name.replace(__RESERVED_DOT_CHARACTER, __CHARACTER_REPLACE_TO) + hits[dot_name] += 1 + if hits[dot_name] > 1: + dot_name = f"{dot_name}_{hits}" + if original_name != dot_name: + mapping[original_name] = dot_name + + relabeled_graph = nx.relabel_nodes(nx_graph, mapping) + nx.set_node_attributes( + relabeled_graph, + name="label", + values={dot_key: original_key for original_key, dot_key in mapping.items()}, + ) + return relabeled_graph diff --git a/nncf/common/graph/graph_matching.py b/nncf/common/graph/graph_matching.py index 1e8991fed99..50784176f54 100644 --- a/nncf/common/graph/graph_matching.py +++ b/nncf/common/graph/graph_matching.py @@ -15,10 +15,12 @@ from nncf.common.graph.patterns import GraphPattern +ATTRS_TO_SKIP = [GraphPattern.LABEL_ATTR, GraphPattern.PATTERN_NODE_TO_EXCLUDE] + def _are_nodes_matched(node_1, node_2) -> bool: for attr in node_2: - if attr == GraphPattern.LABEL_ATTR: + if attr in ATTRS_TO_SKIP: continue if attr == GraphPattern.METATYPE_ATTR: # GraphPattern.ANY_PATTERN_NODE_TYPE and GraphPattern.NON_PATTERN_NODE_TYPE @@ -103,7 +105,8 @@ def _is_subgraph_matching_strict(graph: nx.DiGraph, pattern: nx.DiGraph, subgrap def _copy_subgraph_excluding_non_pattern_node(subgraph: Dict[str, str], pattern_graph: GraphPattern) -> Dict[str, str]: """ - Copies a matching subgraph excluding the nodes having GraphPattern.NON_PATTERN_NODE_TYPE. + Copies a matching subgraph excluding the nodes having GraphPattern.NON_PATTERN_NODE_TYPE + or GraphPattern.PATTERN_NODE_TO_EXCLUDE. :param subgraph: Subgraph :param pattern_graph: A graph consists of patterns to match. @@ -113,8 +116,12 @@ def _copy_subgraph_excluding_non_pattern_node(subgraph: Dict[str, str], pattern_ for node_from_graph, node_from_pattern in subgraph.items(): pattern_node = pattern_graph.graph.nodes[node_from_pattern] pattern_node_types = pattern_node.get(GraphPattern.METATYPE_ATTR, []) - if GraphPattern.NON_PATTERN_NODE_TYPE not in pattern_node_types: - output[node_from_graph] = node_from_pattern + if GraphPattern.NON_PATTERN_NODE_TYPE in pattern_node_types: + continue + if pattern_node.get(GraphPattern.PATTERN_NODE_TO_EXCLUDE, False): + continue + output[node_from_graph] = node_from_pattern + return output diff --git a/nncf/common/graph/patterns/patterns.py b/nncf/common/graph/patterns/patterns.py index 0c97a9d1eec..08e4719feff 100644 --- a/nncf/common/graph/patterns/patterns.py +++ b/nncf/common/graph/patterns/patterns.py @@ -80,6 +80,7 @@ class GraphPattern: NODE_TYPE_ATTR = "metatype" ANY_PATTERN_NODE_TYPE = "ANY_PATTERN_NODE" NON_PATTERN_NODE_TYPE = "NON_PATTERN_NODE" + PATTERN_NODE_TO_EXCLUDE = "PATTERN_NODE_TO_EXCLUDE" def __init__(self): self._graph = nx.DiGraph() @@ -298,7 +299,6 @@ class HWFusedPatternNames(Enum): NORMALIZE_L2_MULTIPLY = PatternDesc("normalize_l2_multiply") SCALE_SHIFT = PatternDesc("scale_shift") SHIFT_SCALE = PatternDesc("shift_scale") - SE_BLOCK = PatternDesc("se_block") SOFTMAX_DIV = PatternDesc("softmax_div") # ACTIVATIONS @@ -396,5 +396,6 @@ class IgnoredPatternNames(Enum): model_types=[ModelType.TRANSFORMER], devices=[TargetDevice.ANY, TargetDevice.CPU, TargetDevice.GPU, TargetDevice.VPU], ) + SE_BLOCK = PatternDesc("se_block") FC_BN_HSWISH_ACTIVATION = PatternDesc("fc_bn_hswish_activation") EQUAL_LOGICALNOT = PatternDesc("equal_logicalnot") diff --git a/nncf/common/hardware/config.py b/nncf/common/hardware/config.py index 691c3db469e..371098d9390 100644 --- a/nncf/common/hardware/config.py +++ b/nncf/common/hardware/config.py @@ -85,7 +85,6 @@ def get_path_to_hw_config(hw_config_type: HWConfigType): @classmethod def from_dict(cls, dct: dict): - # pylint:disable=too-many-nested-blocks,too-many-branches hw_config = cls() hw_config.target_device = dct["target_device"] diff --git a/nncf/common/initialization/batchnorm_adaptation.py b/nncf/common/initialization/batchnorm_adaptation.py index de0b9008903..c8d6d996c46 100644 --- a/nncf/common/initialization/batchnorm_adaptation.py +++ b/nncf/common/initialization/batchnorm_adaptation.py @@ -84,16 +84,12 @@ def run(self, model: TModel) -> None: """ backend = get_backend(model) if backend is BackendType.TORCH: - from nncf.torch.batchnorm_adaptation import ( - PTBatchnormAdaptationAlgorithmImpl, # pylint: disable=cyclic-import - ) + from nncf.torch.batchnorm_adaptation import PTBatchnormAdaptationAlgorithmImpl impl_cls = PTBatchnormAdaptationAlgorithmImpl else: assert backend is BackendType.TENSORFLOW - from nncf.tensorflow.batchnorm_adaptation import ( - TFBatchnormAdaptationAlgorithmImpl, # pylint: disable=cyclic-import - ) + from nncf.tensorflow.batchnorm_adaptation import TFBatchnormAdaptationAlgorithmImpl impl_cls = TFBatchnormAdaptationAlgorithmImpl impl = impl_cls(self._data_loader, self._num_bn_adaptation_steps, self._device) diff --git a/nncf/common/insertion_point_graph.py b/nncf/common/insertion_point_graph.py index 7e71a38cdc7..c3fa6f52fe7 100644 --- a/nncf/common/insertion_point_graph.py +++ b/nncf/common/insertion_point_graph.py @@ -91,8 +91,7 @@ def __init__( If left unspecified, every node in `nncf_graph` will be allowed to have a single post-hook for its output (post-hooking separate tensors in an operation's output is not currently supported) """ - # pylint:disable=too-many-branches - # pylint:disable=too-many-statements + super().__init__() self._base_nx_graph = deepcopy(nncf_graph.get_nx_graph_copy()) if weight_modifiable_node_names is None: @@ -333,7 +332,7 @@ def get_ip_graph_with_merged_hw_optimized_operations( :param full_fusing_pattern: The GraphPatttern object representing a composition of fusing pattern variants. :return: The InsertionPointGraph with nodes fused according to pattern matching. """ - # pylint:disable=too-many-branches + merged_ip_graph = deepcopy(self) matches = find_subgraphs_matching_pattern(merged_ip_graph.get_base_nx_graph(), full_fusing_pattern) for match in matches: diff --git a/nncf/common/logging/track_progress.py b/nncf/common/logging/track_progress.py index b852c372c87..b82a95f32bf 100644 --- a/nncf/common/logging/track_progress.py +++ b/nncf/common/logging/track_progress.py @@ -50,13 +50,13 @@ def render(self, task: Task) -> Text: class TimeElapsedColumnWithStyle(TimeElapsedColumn): def render(self, task: "Task") -> Text: text = super().render(task) - return Text(text._text[0], style=INTEL_BLUE_COLOR) # pylint: disable=protected-access + return Text(text._text[0], style=INTEL_BLUE_COLOR) class TimeRemainingColumnWithStyle(TimeRemainingColumn): def render(self, task: "Task") -> Text: text = super().render(task) - return Text(text._text[0], style=INTEL_BLUE_COLOR) # pylint: disable=protected-access + return Text(text._text[0], style=INTEL_BLUE_COLOR) class track: diff --git a/nncf/common/pruning/node_selector.py b/nncf/common/pruning/node_selector.py index 08d386231e0..4fc8d286327 100644 --- a/nncf/common/pruning/node_selector.py +++ b/nncf/common/pruning/node_selector.py @@ -91,7 +91,7 @@ def create_pruning_groups(self, graph: NNCFGraph) -> Clusterization[NNCFNode]: :param graph: Graph to work with and their initialization parameters as values. :return: Clusterization of pruned nodes. """ - # pylint:disable=too-many-branches + all_nodes_to_prune = graph.get_nodes_by_types(self._prune_operations_types) # NNCFNodes here # 1. Clusters for special ops diff --git a/nncf/common/quantization/quantizer_propagation/graph.py b/nncf/common/quantization/quantizer_propagation/graph.py index 47963285937..0adadc627b9 100644 --- a/nncf/common/quantization/quantizer_propagation/graph.py +++ b/nncf/common/quantization/quantizer_propagation/graph.py @@ -8,7 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines + from collections import deque from copy import copy from copy import deepcopy @@ -20,6 +20,7 @@ from nncf import nncf_logger from nncf.common.graph import NNCFNode from nncf.common.graph import NNCFNodeName +from nncf.common.graph.graph import relabel_graph_for_dot_visualization from nncf.common.graph.operator_metatypes import INPUT_NOOP_METATYPES from nncf.common.graph.operator_metatypes import OUTPUT_NOOP_METATYPES from nncf.common.graph.operator_metatypes import NoopMetatype @@ -49,7 +50,7 @@ class QuantizerPropagationStateGraph(nx.DiGraph): - # pylint:disable=too-many-public-methods,too-many-return-statements + """ This class is based upon InsertionPointGraph and represents a"chessboard" for PropagatingQuantizer items. It tracks the current state of @@ -60,6 +61,7 @@ class QuantizerPropagationStateGraph(nx.DiGraph): the same graph node/edge. This class is mainly operated upon by the QuantizerPropagationSolver objects. """ + PROPAGATING_QUANTIZER_NODE_ATTR = "propagating_quantizer" AFFECTING_PROPAGATING_QUANTIZERS_ATTR = "affecting_propagating_quantizers" QUANTIZATION_TRAIT_NODE_ATTR = "quantization_trait" @@ -265,7 +267,6 @@ def is_insertion_point(qpsg_node_type: QuantizerPropagationStateGraphNodeType) - QuantizerPropagationStateGraphNodeType.POST_HOOK, ] - # pylint:disable=too-many-branches def merge_quantizer_into_path(self, prop_quantizer: PropagatingQuantizer, path: PropagationPath): curr_node = self.nodes[prop_quantizer.current_location_node_key] curr_node[QuantizerPropagationStateGraph.PROPAGATING_QUANTIZER_NODE_ATTR] = None @@ -348,7 +349,6 @@ def _get_major_unified_scale_type(type_list: List[Optional[UnifiedScaleType]]) - major_unified_scale_type = UnifiedScaleType.UNIFY_ONLY_PER_TENSOR return major_unified_scale_type - # pylint:disable=too-many-statements def merge_quantizers_for_branching_node( self, quantizers_to_merge: List[PropagatingQuantizer], @@ -997,7 +997,7 @@ def get_visualized_graph(self): label="Unified group {}".format(gid), ) - return out_graph + return relabel_graph_for_dot_visualization(out_graph) def traverse_graph( self, diff --git a/nncf/common/quantization/quantizer_propagation/solver.py b/nncf/common/quantization/quantizer_propagation/solver.py index 2a9f8e31efa..cfd856e3d62 100644 --- a/nncf/common/quantization/quantizer_propagation/solver.py +++ b/nncf/common/quantization/quantizer_propagation/solver.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines + from collections import Counter from collections import OrderedDict from collections import deque @@ -397,9 +397,7 @@ def __init__( self._hw_config: HWConfig = hw_config self._visualizer = None if is_debug(): - from nncf.common.quantization.quantizer_propagation.visualizer import ( - QuantizerPropagationVisualizer, # pylint: disable=cyclic-import - ) + from nncf.common.quantization.quantizer_propagation.visualizer import QuantizerPropagationVisualizer self._visualizer = QuantizerPropagationVisualizer(DEBUG_LOG_DIR + "/quant_prop") self._propagation_strategy = ( @@ -465,7 +463,6 @@ def _filter_by_weight_ignored_target_scopes( nncf_logger.debug(f"Ignored adding weight quantizer for: {node_name}") return weight_quantizable_node_names_vs_qconfigs - # pylint:disable=too-many-branches def run_on_ip_graph(self, ip_graph: InsertionPointGraph) -> QuantizationProposal: """ The main function to be used on an InsertionPointGraph to produce @@ -607,7 +604,6 @@ def _handle_quantizer_merge( quant_prop_graph: QuantizerPropagationStateGraph, branching_node_key: str, ): - # pylint:disable=too-many-branches waiting_pqs_list = list(waiting_pqs) merged_pqs = [] unmerged_pqs = [] @@ -679,8 +675,6 @@ def propagation_step( :return: The new state of `quant_prop_graph` with `curr_prop_quantizer` propagated one step further. """ - # pylint:disable=too-many-branches - # pylint:disable=too-many-statements curr_node_key = curr_prop_quantizer.current_location_node_key curr_node = quant_prop_graph.nodes[curr_node_key] curr_node_type = curr_node[QuantizerPropagationStateGraph.NODE_TYPE_NODE_ATTR] @@ -1000,7 +994,7 @@ def coalesce_insertion_points( corresponding TargetPoints. :return: A list of TargetPoint groups; each group is a list of TargetPoint's. """ - # pylint:disable=too-many-branches + if linked_scopes_groups_list is None: return [ [ @@ -1090,7 +1084,6 @@ def _filter_qconfigs_according_to_scope( def _setup_initial_quantizers_for_operator_node( self, operator_node_key: str, quant_prop_graph: QuantizerPropagationStateGraph ): - # pylint:disable=too-many-branches node = quant_prop_graph.nodes[operator_node_key] # preds are in sorted order for reproducibility @@ -1200,7 +1193,6 @@ def _setup_initial_quantizers_for_operator_node( additional_pq.last_accepting_location_node_key = additional_pq_ip_key self._active_propagating_quantizers_queue.appendleft(additional_pq) - # pylint:disable=too-many-return-statements def check_branching_transition( self, quant_prop_graph: QuantizerPropagationStateGraph, @@ -1315,7 +1307,7 @@ def check_transition_via_path( cloned before transition, which impacts the logic of the function. :return: The status of the transition determining how it should proceed. """ - # pylint:disable=too-many-branches + for from_node_key, to_node_key in path: from_node = quant_prop_graph.nodes[from_node_key] @@ -1392,7 +1384,6 @@ def get_merged_qconfigs_for_downward_branching_case( of the merged quantizer, if any, and the second element corresponds to configurations of the quantizers that would have to remain on the branches (if any). """ - # pylint:disable=too-many-branches if self._propagation_strategy == PropagationStrategy.DO_NOT_MERGE_BRANCH_FQS: # Do not merge at all diff --git a/nncf/common/utils/debug.py b/nncf/common/utils/debug.py index 887e677805e..25670390414 100644 --- a/nncf/common/utils/debug.py +++ b/nncf/common/utils/debug.py @@ -28,7 +28,7 @@ def set_debug_log_dir(dir_: str): @contextmanager def nncf_debug(): - from nncf.common.logging.logger import set_log_level # pylint: disable=cyclic-import + from nncf.common.logging.logger import set_log_level set_log_level(logging.DEBUG) yield diff --git a/nncf/common/utils/logger/__init__.py b/nncf/common/utils/logger/__init__.py index d074af82b7d..026057532d4 100644 --- a/nncf/common/utils/logger/__init__.py +++ b/nncf/common/utils/logger/__init__.py @@ -10,8 +10,6 @@ # limitations under the License. from nncf.common.deprecation import warning_deprecated -# pylint:disable=wrong-import-position - warning_deprecated( "Importing from nncf.common.utils.logger is deprecated. " "Import `from nncf` directly instead, i.e.: \n" @@ -19,7 +17,7 @@ "`from nncf import nncf_logger` instead of `from nncf.common.utils.logger import logger as nncf_logger`" ) -# pylint:disable=unused-import + from nncf.common.logging.logger import disable_logging as disable_logging # noqa: E402 from nncf.common.logging.logger import nncf_logger as logger # noqa: E402, F401 from nncf.common.logging.logger import set_log_level as set_log_level # noqa: E402 diff --git a/nncf/common/utils/os.py b/nncf/common/utils/os.py index fb6f146304b..23821432d34 100644 --- a/nncf/common/utils/os.py +++ b/nncf/common/utils/os.py @@ -15,7 +15,6 @@ import psutil -# pylint: disable=W1514 @contextmanager def safe_open(file: Path, *args, **kwargs): """ @@ -52,7 +51,7 @@ def get_available_cpu_count(logical: bool = True) -> int: try: num_cpu = psutil.cpu_count(logical=logical) return num_cpu if num_cpu is not None else 1 - except Exception: # pylint: disable=broad-except + except Exception: return 1 @@ -62,5 +61,5 @@ def get_available_memory_amount() -> int: """ try: return psutil.virtual_memory()[1] - except Exception: # pylint: disable=broad-except + except Exception: return 0 diff --git a/nncf/common/utils/patcher.py b/nncf/common/utils/patcher.py index 097f466762a..726e0110ff7 100644 --- a/nncf/common/utils/patcher.py +++ b/nncf/common/utils/patcher.py @@ -116,7 +116,7 @@ def import_obj(self, obj_cls): # noqa: C901 else: if "_partialmethod" in obj_cls.__dict__: while "_partialmethod" in obj_cls.__dict__: - obj_cls = obj_cls._partialmethod.keywords["__fn"] # pylint: disable=protected-access + obj_cls = obj_cls._partialmethod.keywords["__fn"] while isinstance(obj_cls, (partial, partialmethod)): obj_cls = obj_cls.keywords["__fn"] diff --git a/nncf/config/config.py b/nncf/config/config.py index cf1cff31358..fc6ecc50e89 100644 --- a/nncf/config/config.py +++ b/nncf/config/config.py @@ -97,7 +97,7 @@ def get_redefinable_global_param_value_for_algo(self, param_name: str, algo_name the resolution of the redefinable parameter should occur. :return: The value of the parameter that should be applied for the algo specified by `algo_name`. """ - from nncf.config.extractors import extract_algo_specific_config # pylint: disable=cyclic-import + from nncf.config.extractors import extract_algo_specific_config algo_config = extract_algo_specific_config(self, algo_name) param = self.get(param_name) diff --git a/nncf/config/extractors.py b/nncf/config/extractors.py index 2bee6557083..75d6c146de4 100644 --- a/nncf/config/extractors.py +++ b/nncf/config/extractors.py @@ -48,7 +48,7 @@ def extract_algo_specific_config(config: NNCFConfig, algo_name_to_match: str) -> assert isinstance(compression_section, dict) algo_list = [compression_section] - from nncf.common.compression import NO_COMPRESSION_ALGORITHM_NAME # pylint: disable=cyclic-import + from nncf.common.compression import NO_COMPRESSION_ALGORITHM_NAME if algo_name_to_match == NO_COMPRESSION_ALGORITHM_NAME: if len(algo_list) > 0: @@ -194,7 +194,7 @@ class NNCFAlgorithmNames: SPARSITY = ["rb_sparsity", "magnitude_sparsity", "const_sparsity"] def validate_accuracy_aware_schema(config: NNCFConfig, params: Dict[str, object]): - from nncf.common.accuracy_aware_training import AccuracyAwareTrainingMode # pylint: disable=cyclic-import + from nncf.common.accuracy_aware_training import AccuracyAwareTrainingMode if params["mode"] == AccuracyAwareTrainingMode.EARLY_EXIT: return diff --git a/nncf/experimental/tensor/functions.py b/nncf/experimental/tensor/functions.py index a71ac209012..c434de3b1bf 100644 --- a/nncf/experimental/tensor/functions.py +++ b/nncf/experimental/tensor/functions.py @@ -73,33 +73,37 @@ def flatten(a: Tensor) -> Tensor: @functools.singledispatch @_tensor_guard -def max(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: # pylint: disable=redefined-builtin +def max(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: Optional[bool] = False) -> Tensor: """ Return the maximum of an array or maximum along an axis. :param a: The input tensor. :param axis: Axis or axes along which to operate. By default, flattened input is used. + :param keepdim: If this is set to True, the axes which are reduced are left in the result as dimensions with size + one. With this option, the result will broadcast correctly against the input array. False, by default. :return: Maximum of a. """ - return Tensor(max(a.data, axis)) + return Tensor(max(a.data, axis, keepdims)) @functools.singledispatch @_tensor_guard -def min(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: # pylint: disable=redefined-builtin +def min(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: Optional[bool] = False) -> Tensor: """ Return the minimum of an array or minimum along an axis. :param a: The input tensor. :param axis: Axis or axes along which to operate. By default, flattened input is used. + :param keepdim: If this is set to True, the axes which are reduced are left in the result as dimensions with size + one. With this option, the result will broadcast correctly against the input array. False, by default. :return: Minimum of a. """ - return Tensor(min(a.data, axis)) + return Tensor(min(a.data, axis, keepdims)) @functools.singledispatch @_tensor_guard -def abs(a: Tensor) -> Tensor: # pylint: disable=redefined-builtin +def abs(a: Tensor) -> Tensor: """ Calculate the absolute value element-wise. @@ -150,7 +154,7 @@ def reshape(a: Tensor, shape: Tuple[int, ...]) -> Tensor: @functools.singledispatch @_tensor_guard -def all(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: # pylint: disable=redefined-builtin +def all(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: """ Test whether all tensor elements along a given axis evaluate to True. @@ -191,7 +195,7 @@ def allclose( @functools.singledispatch @_tensor_guard -def any(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: # pylint: disable=redefined-builtin +def any(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: """ Test whether any tensor elements along a given axis evaluate to True. @@ -384,7 +388,7 @@ def mean(a: Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims @functools.singledispatch @_tensor_guard -def round(a: Tensor, decimals=0) -> Tensor: # pylint: disable=redefined-builtin +def round(a: Tensor, decimals=0) -> Tensor: """ Evenly round to the given number of decimals. @@ -437,7 +441,6 @@ def _dispatch_list(fn: "functools._SingleDispatchCallable", tensor_list: List[Te def _initialize_backends(): - # pylint: disable=unused-import import nncf.experimental.tensor.numpy_functions try: diff --git a/nncf/experimental/tensor/numpy_functions.py b/nncf/experimental/tensor/numpy_functions.py index b4c515b1da1..7899c2807e4 100644 --- a/nncf/experimental/tensor/numpy_functions.py +++ b/nncf/experimental/tensor/numpy_functions.py @@ -61,15 +61,17 @@ def _(a: Union[np.ndarray, np.generic]) -> np.ndarray: @_register_numpy_types(fns.max) -def _(a: Union[np.ndarray, np.generic], axis: Optional[Union[int, Tuple[int, ...]]] = None) -> np.ndarray: - return np.max(a, axis=axis) +def _( + a: Union[np.ndarray, np.generic], axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: bool = False +) -> np.ndarray: + return np.max(a, axis=axis, keepdims=keepdims) @_register_numpy_types(fns.min) def _( - a: Union[np.ndarray, np.generic], axis: Optional[Union[int, Tuple[int, ...]]] = None + a: Union[np.ndarray, np.generic], axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: bool = False ) -> Union[np.ndarray, np.generic]: - return np.min(a, axis=axis) + return np.min(a, axis=axis, keepdims=keepdims) @_register_numpy_types(fns.abs) @@ -188,7 +190,7 @@ def _(a: Union[np.ndarray, np.generic], decimals: int = 0) -> np.ndarray: return np.round(a, decimals=decimals) -@_register_numpy_types(fns._binary_op_nowarn) # pylint: disable=protected-access +@_register_numpy_types(fns._binary_op_nowarn) def _( a: Union[np.ndarray, np.generic], b: Union[np.ndarray, np.generic, float], operator_fn: Callable ) -> Union[np.ndarray, np.generic]: @@ -197,7 +199,7 @@ def _( return operator_fn(a, b) -@_register_numpy_types(fns._binary_reverse_op_nowarn) # pylint: disable=protected-access +@_register_numpy_types(fns._binary_reverse_op_nowarn) def _( a: Union[np.ndarray, np.generic], b: Union[np.ndarray, np.generic, float], operator_fn: Callable ) -> Union[np.ndarray, np.generic]: diff --git a/nncf/experimental/tensor/tensor.py b/nncf/experimental/tensor/tensor.py index 76fd05c4ff1..7ec2646ecbc 100644 --- a/nncf/experimental/tensor/tensor.py +++ b/nncf/experimental/tensor/tensor.py @@ -128,11 +128,11 @@ def squeeze(self, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: def flatten(self) -> Tensor: return _call_function("flatten", self) - def max(self, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: - return _call_function("max", self, axis) + def max(self, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: Optional[bool] = False) -> Tensor: + return _call_function("max", self, axis, keepdims) - def min(self, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> Tensor: - return _call_function("min", self, axis) + def min(self, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdims: Optional[bool] = False) -> Tensor: + return _call_function("min", self, axis, keepdims) def abs(self) -> Tensor: return _call_function("abs", self) diff --git a/nncf/experimental/tensor/torch_functions.py b/nncf/experimental/tensor/torch_functions.py index 273d5419781..fb13f3caa2d 100644 --- a/nncf/experimental/tensor/torch_functions.py +++ b/nncf/experimental/tensor/torch_functions.py @@ -53,19 +53,23 @@ def _(a: torch.Tensor) -> torch.Tensor: @fns.max.register(torch.Tensor) -def _(a: torch.Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> torch.Tensor: +def _( + a: torch.Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdim: Optional[bool] = False +) -> torch.Tensor: # Analog of numpy.max is torch.amax if axis is None: return torch.amax(a) - return torch.amax(a, dim=axis) + return torch.amax(a, dim=axis, keepdim=keepdim) @fns.min.register(torch.Tensor) -def _(a: torch.Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None) -> torch.Tensor: +def _( + a: torch.Tensor, axis: Optional[Union[int, Tuple[int, ...]]] = None, keepdim: Optional[bool] = False +) -> torch.Tensor: # Analog of numpy.min is torch.amin if axis is None: return torch.amin(a) - return torch.amin(a, dim=axis) + return torch.amin(a, dim=axis, keepdim=keepdim) @fns.abs.register(torch.Tensor) @@ -188,11 +192,11 @@ def _(a: torch.Tensor, decimals=0) -> torch.Tensor: return torch.round(a, decimals=decimals) -@fns._binary_op_nowarn.register(torch.Tensor) # pylint: disable=protected-access +@fns._binary_op_nowarn.register(torch.Tensor) def _(a: torch.Tensor, b: Union[torch.Tensor, float], operator_fn: Callable) -> torch.Tensor: return operator_fn(a, b) -@fns._binary_reverse_op_nowarn.register(torch.Tensor) # pylint: disable=protected-access +@fns._binary_reverse_op_nowarn.register(torch.Tensor) def _(a: torch.Tensor, b: Union[torch.Tensor, float], operator_fn: Callable) -> torch.Tensor: return operator_fn(b, a) diff --git a/nncf/experimental/tensorflow/graph/converter.py b/nncf/experimental/tensorflow/graph/converter.py index d288a0b5f40..31319fbf0e6 100644 --- a/nncf/experimental/tensorflow/graph/converter.py +++ b/nncf/experimental/tensorflow/graph/converter.py @@ -81,7 +81,7 @@ def build(self, graph_optimizers: List[str]): ) # Step 3: Convert the GraphDef to a tf.Graph - with tf.Graph().as_default() as graph: # pylint:disable=not-context-manager + with tf.Graph().as_default() as graph: tf.graph_util.import_graph_def(graph_def, name="") return graph, input_tensors, output_tensors diff --git a/nncf/experimental/tensorflow/patch_tf.py b/nncf/experimental/tensorflow/patch_tf.py index 0ebfa305dbe..c6f77d69072 100644 --- a/nncf/experimental/tensorflow/patch_tf.py +++ b/nncf/experimental/tensorflow/patch_tf.py @@ -248,7 +248,7 @@ def wrapper(*args, **kwargs): (obj,) = args # self eager_context = context.context() old_name = eager_context.scope_name - name = obj._name # pylint: disable=protected-access + name = obj._name if not name: scope_name = "" @@ -263,7 +263,7 @@ def wrapper(*args, **kwargs): def _restore_name_scope(*_): eager_context.scope_name = old_name - obj._exit_fns.append(_restore_name_scope) # pylint: disable=protected-access + obj._exit_fns.append(_restore_name_scope) else: scope_name = func(*args, **kwargs) return scope_name diff --git a/nncf/experimental/torch/nas/bootstrapNAS/elasticity/elastic_width.py b/nncf/experimental/torch/nas/bootstrapNAS/elasticity/elastic_width.py index fd918a54cc7..a3523a51cf6 100644 --- a/nncf/experimental/torch/nas/bootstrapNAS/elasticity/elastic_width.py +++ b/nncf/experimental/torch/nas/bootstrapNAS/elasticity/elastic_width.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=too-many-lines,too-many-nested-blocks,too-many-branches import random from collections import OrderedDict diff --git a/nncf/experimental/torch/nas/bootstrapNAS/elasticity/multi_elasticity_handler.py b/nncf/experimental/torch/nas/bootstrapNAS/elasticity/multi_elasticity_handler.py index 4beca169579..76ae525d275 100644 --- a/nncf/experimental/torch/nas/bootstrapNAS/elasticity/multi_elasticity_handler.py +++ b/nncf/experimental/torch/nas/bootstrapNAS/elasticity/multi_elasticity_handler.py @@ -46,7 +46,6 @@ class MEHandlerStateNames: STATES_OF_HANDLERS = "states_of_handlers" -# pylint: disable=too-many-public-methods class MultiElasticityHandler(ElasticityHandler): """ An interface for handling multiple elasticity in the network. The elasticity defines variable values in properties diff --git a/nncf/experimental/torch/quantization/quantize_model.py b/nncf/experimental/torch/quantization/quantize_model.py index c97ab9c9675..714cc5ed702 100644 --- a/nncf/experimental/torch/quantization/quantize_model.py +++ b/nncf/experimental/torch/quantization/quantize_model.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, Optional, Tuple, Union import torch @@ -87,7 +87,7 @@ def send_to_device(tensor): def quantize_impl( model: torch.nn.Module, calibration_dataset: Dataset, - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, fast_bias_correction: bool, diff --git a/nncf/experimental/torch/search_building_blocks/search_graph.py b/nncf/experimental/torch/search_building_blocks/search_graph.py index a2820130f87..99a146dd890 100644 --- a/nncf/experimental/torch/search_building_blocks/search_graph.py +++ b/nncf/experimental/torch/search_building_blocks/search_graph.py @@ -116,7 +116,6 @@ def __init__(self, nx_merged_graph: nx.DiGraph): self._nx_graph = nx_merged_graph old_merged_graph_nodes = deepcopy(self._nx_graph._node) for node_key in old_merged_graph_nodes: - # pylint: disable=protected-access next_nodes = self._nx_graph._succ[node_key] if len(list(next_nodes)) > 1: self._insert_dummy_node(node_key) @@ -183,7 +182,6 @@ def get_next_edges(self, node_key: str) -> Dict[str, Any]: return self._nx_graph.succ[node_key] def _insert_dummy_node(self, node_key: str): - # pylint: disable=protected-access next_nodes = deepcopy(self._nx_graph._succ[node_key]) dummy_node_attr = {SearchGraph.IS_DUMMY_NODE_ATTR: True} node_key_attr = deepcopy(self._nx_graph._node[node_key]) @@ -256,7 +254,7 @@ def get_merged_original_graph_with_pattern(orig_graph: nx.DiGraph, hw_fused_ops: merged_graph = orig_graph if not hw_fused_ops: return merged_graph - # pylint: disable=protected-access + pattern_fusing_graph = PatternsManager.get_full_hw_pattern_graph(backend=BackendType.TORCH, device=TargetDevice.ANY) matches = find_subgraphs_matching_pattern(orig_graph, pattern_fusing_graph) nx.set_node_attributes(merged_graph, False, SearchGraph.IS_DUMMY_NODE_ATTR) @@ -282,7 +280,7 @@ def get_merged_original_graph_with_pattern(orig_graph: nx.DiGraph, hw_fused_ops: for node_key in match: attrs = orig_graph.nodes[node_key] merged_node_key += str(attrs["id"]) + " " + attrs[SearchGraph.TYPE_NODE_ATTR] + " " - # pylint: disable=protected-access + merged_nodes.append(orig_graph.nodes[node_key]) merged_graph.remove_node(node_key) type_list.append(attrs[SearchGraph.TYPE_NODE_ATTR]) @@ -301,7 +299,6 @@ def get_merged_original_graph_with_pattern(orig_graph: nx.DiGraph, hw_fused_ops: return merged_graph -# pylint:disable=too-many-branches def check_graph_has_no_hanging_edges_after_block_removal( graph: SearchGraph, first_skipped_node: SearchGraphNode, end_node: SearchGraphNode ) -> bool: @@ -375,7 +372,6 @@ def check_graph_has_no_duplicate_edges_after_block_removal( # \ / D # D forbidden - # pylint: disable=protected-access if first_skipped_node.is_dummy: next_end_node = sgraph.get_next_nodes(end_node.node_key) if len(next_end_node) != 0: diff --git a/nncf/experimental/torch/sparsity/movement/layers.py b/nncf/experimental/torch/sparsity/movement/layers.py index e1d2e52813b..62e09d06c4b 100644 --- a/nncf/experimental/torch/sparsity/movement/layers.py +++ b/nncf/experimental/torch/sparsity/movement/layers.py @@ -331,7 +331,6 @@ class MaskCalculationHook: """ def __init__(self, module: nn.Module): - # pylint: disable=protected-access self.hook = module._register_state_dict_hook(self.hook_fn) def hook_fn(self, module, state_dict: Dict, prefix: str, local_metadata): diff --git a/nncf/onnx/quantization/ignored_patterns.py b/nncf/onnx/quantization/ignored_patterns.py index 2daf69f7898..fad3841f34a 100644 --- a/nncf/onnx/quantization/ignored_patterns.py +++ b/nncf/onnx/quantization/ignored_patterns.py @@ -13,6 +13,7 @@ from nncf.common.utils.registry import Registry from nncf.onnx.graph.metatypes import onnx_metatypes as om from nncf.onnx.graph.metatypes.groups import MATMUL_METATYPES +from nncf.onnx.hardware.fused_patterns import atomic_activations_operations ONNX_IGNORED_PATTERNS = Registry("IGNORED_PATTERNS") @@ -88,3 +89,70 @@ def create_multihead_attention_output() -> GraphPattern: _add_softmax_matmul(pattern) _add_softmax_reshape_matmul(pattern) return pattern + + +@ONNX_IGNORED_PATTERNS.register(IgnoredPatternNames.SE_BLOCK) +def create_se_block() -> GraphPattern: + # NON_PATTERN_NODE-------- + # (PATTERN_NODE_TO_EXCLUDE) | + # | | + # REDUCE_MEAN | + # | | + # CONVOLUTION | + # | | + # ACTIVATION | + # | | + # CONVOLUTION | + # | | + # SIGMOID||HARDSIGMOID | + # | | + # | | + # MUL--------------- + # (PATTERN_NODE_TO_EXCLUDE) + pattern = GraphPattern() + non_pattern_node = pattern.add_node(label="NON_PATTERN_NODE", type=GraphPattern.NON_PATTERN_NODE_TYPE) + reduce_mean_node = pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "REDUCE_MEAN", + GraphPattern.METATYPE_ATTR: om.ONNXReduceMeanMetatype, + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + ) + conv_node_1 = pattern.add_node( + **{GraphPattern.LABEL_ATTR: "CONVOLUTION", GraphPattern.METATYPE_ATTR: om.ONNXConvolutionMetatype} + ) + + pattern.add_edge(non_pattern_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, conv_node_1) + pattern.join_patterns(atomic_activations_operations()) + + rest_pattern = GraphPattern() + conv_node_2 = rest_pattern.add_node( + **{GraphPattern.LABEL_ATTR: "CONVOLUTION", GraphPattern.METATYPE_ATTR: om.ONNXConvolutionMetatype} + ) + + sigmoid_node = rest_pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "SIGMOID", + GraphPattern.METATYPE_ATTR: [om.ONNXSigmoidMetatype, om.ONNXHardSigmoidMetatype], + } + ) + multiply_node = rest_pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "LAST_MULTIPLY", + GraphPattern.METATYPE_ATTR: om.ONNXMulLayerMetatype, + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + ) + rest_pattern.add_edge(conv_node_2, sigmoid_node) + rest_pattern.add_edge(sigmoid_node, multiply_node) + pattern.join_patterns(rest_pattern) + # Connect all NON_PATTERN_NODE with all MULTIPLY + for component in pattern.get_weakly_connected_subgraphs(): + for node_id, attrs in component.nodes(data=True): + if attrs[GraphPattern.LABEL_ATTR] == "NON_PATTERN_NODE": + non_pattern_node = node_id + if attrs[GraphPattern.LABEL_ATTR] == "LAST_MULTIPLY": + multiply_node = node_id + pattern.add_edge(non_pattern_node, multiply_node) + return pattern diff --git a/nncf/onnx/quantization/quantize_model.py b/nncf/onnx/quantization/quantize_model.py index a88a9213f36..7be23384964 100644 --- a/nncf/onnx/quantization/quantize_model.py +++ b/nncf/onnx/quantization/quantize_model.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Optional +from typing import Optional, Union import onnx @@ -31,7 +31,7 @@ def quantize_impl( model: onnx.ModelProto, calibration_dataset: Dataset, - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, fast_bias_correction: bool, diff --git a/nncf/onnx/statistics/collectors.py b/nncf/onnx/statistics/collectors.py index 2ce98915edc..8950694e04a 100644 --- a/nncf/onnx/statistics/collectors.py +++ b/nncf/onnx/statistics/collectors.py @@ -26,7 +26,6 @@ from nncf.onnx.tensor import ONNXNNCFTensor -# pylint: disable=too-many-public-methods class ONNXNNCFCollectorTensorProcessor(NNCFCollectorTensorProcessor): """ A realization of the processing methods for ONNXNNCFTensors. diff --git a/nncf/openvino/graph/metatypes/groups.py b/nncf/openvino/graph/metatypes/groups.py index e616fdf5dd7..ad75e9f63c7 100644 --- a/nncf/openvino/graph/metatypes/groups.py +++ b/nncf/openvino/graph/metatypes/groups.py @@ -117,6 +117,7 @@ ov_metatypes.OVEluMetatype, ov_metatypes.OVPReluMetatype, ov_metatypes.OVSigmoidMetatype, + ov_metatypes.OVHSigmoidMetatype, ov_metatypes.OVHardSigmoidMetatype, ov_metatypes.OVSwishMetatype, ov_metatypes.OVHSwishMetatype, diff --git a/nncf/openvino/graph/metatypes/openvino_metatypes.py b/nncf/openvino/graph/metatypes/openvino_metatypes.py index 07cd0aed29e..4da63cda226 100644 --- a/nncf/openvino/graph/metatypes/openvino_metatypes.py +++ b/nncf/openvino/graph/metatypes/openvino_metatypes.py @@ -145,6 +145,12 @@ class OVSigmoidMetatype(OVOpMetatype): op_names = ["Sigmoid"] +@OV_OPERATOR_METATYPES.register() +class OVHSigmoidMetatype(OVOpMetatype): + name = "HSigmoidOp" + op_names = ["HSigmoid"] + + @OV_OPERATOR_METATYPES.register() class OVHardSigmoidMetatype(OVOpMetatype): name = "HardSigmoidOp" diff --git a/nncf/openvino/graph/model_transformer.py b/nncf/openvino/graph/model_transformer.py index 16cad27bb65..9813fbdc684 100644 --- a/nncf/openvino/graph/model_transformer.py +++ b/nncf/openvino/graph/model_transformer.py @@ -15,7 +15,7 @@ import numpy as np import openvino.runtime as ov -from openvino._pyopenvino import DescriptorTensor # pylint: disable=no-name-in-module +from openvino._pyopenvino import DescriptorTensor from openvino.runtime import opset9 as opset from nncf.common.graph.model_transformer import ModelTransformer diff --git a/nncf/openvino/graph/model_utils.py b/nncf/openvino/graph/model_utils.py index ec00ee00c72..1abf79ee14d 100644 --- a/nncf/openvino/graph/model_utils.py +++ b/nncf/openvino/graph/model_utils.py @@ -16,42 +16,9 @@ from nncf.common.graph.graph import NNCFGraph from nncf.common.graph.transformations.layout import TransformationLayout from nncf.openvino.graph.metatypes.groups import FAKE_QUANTIZE_OPERATIONS -from nncf.openvino.graph.metatypes.openvino_metatypes import OVConvolutionBackpropDataMetatype -from nncf.openvino.graph.metatypes.openvino_metatypes import OVConvolutionMetatype -from nncf.openvino.graph.metatypes.openvino_metatypes import OVDepthwiseConvolutionMetatype -from nncf.openvino.graph.metatypes.openvino_metatypes import OVGroupConvolutionBackpropDataMetatype -from nncf.openvino.graph.metatypes.openvino_metatypes import OVGroupConvolutionMetatype -from nncf.openvino.graph.node_utils import create_bias_tensor -from nncf.openvino.graph.node_utils import is_node_with_bias from nncf.openvino.graph.transformations.command_creation import OVCommandCreator -def insert_null_biases(model: ov.Model, graph: NNCFGraph) -> ov.Model: - """ - This method finds and inserts zero biases for the layers that should have it. - - :param model: ov.Model instance. - :param graph: Model graph. - :return: Updated ov.Model instance with zero biases - """ - types_to_insert_bias = [ - OVConvolutionMetatype, - OVGroupConvolutionMetatype, - OVDepthwiseConvolutionMetatype, - OVConvolutionBackpropDataMetatype, - OVGroupConvolutionBackpropDataMetatype, - ] - nodes_without_biases = graph.get_nodes_by_metatypes(types_to_insert_bias) - nodes_without_biases = [node for node in nodes_without_biases if not is_node_with_bias(node, graph)] - transformation_layout = TransformationLayout() - model_transformer = ModelTransformerFactory.create(model) - for node_without_bias in nodes_without_biases: - const_value = create_bias_tensor(node_without_bias, graph, 0) - bias_insertion_command = OVCommandCreator.create_command_to_insert_bias(node_without_bias, const_value) - transformation_layout.register(bias_insertion_command) - return model_transformer.transform(transformation_layout) - - def remove_fq_from_inputs(model: ov.Model, graph: NNCFGraph) -> ov.Model: """ This method removes the activation Fake Quantize nodes from the model. diff --git a/nncf/openvino/graph/nncf_graph_builder.py b/nncf/openvino/graph/nncf_graph_builder.py index 1a5374c65e7..e4d0fac1da2 100644 --- a/nncf/openvino/graph/nncf_graph_builder.py +++ b/nncf/openvino/graph/nncf_graph_builder.py @@ -125,7 +125,6 @@ def _add_nncf_node(node: ov.Node, graph: NNCFGraph) -> None: metatype = get_node_metatype(node) graph.add_nncf_node(node_name=node.get_friendly_name(), node_type=node_type, node_metatype=metatype) - # pylint: disable=too-many-branches @staticmethod def create_nncf_graph(model: ov.Model) -> NNCFGraph: """ diff --git a/nncf/openvino/hardware/fused_patterns.py b/nncf/openvino/hardware/fused_patterns.py index 6e1596e47e0..df11b83aa4e 100644 --- a/nncf/openvino/hardware/fused_patterns.py +++ b/nncf/openvino/hardware/fused_patterns.py @@ -147,48 +147,6 @@ def create_shift_scale() -> GraphPattern: return pattern -@OPENVINO_HW_FUSED_PATTERNS.register(HWFusedPatternNames.SE_BLOCK) -def create_se_block() -> GraphPattern: - pattern = GraphPattern() - any_node = pattern.add_node( - **{GraphPattern.LABEL_ATTR: "ANY", GraphPattern.METATYPE_ATTR: GraphPattern.NON_PATTERN_NODE_TYPE} - ) - reduce_mean_node = pattern.add_node( - **{GraphPattern.LABEL_ATTR: "REDUCE_MEAN", GraphPattern.METATYPE_ATTR: om.OVReduceMeanMetatype} - ) - linear_node_1 = pattern.add_node( - **{GraphPattern.METATYPE_ATTR: LINEAR_OPERATIONS, GraphPattern.LABEL_ATTR: "LINEAR"} - ) - add_node_1 = pattern.add_node(**{GraphPattern.LABEL_ATTR: "ADD_BIAS", GraphPattern.METATYPE_ATTR: om.OVAddMetatype}) - activation_node_1 = pattern.add_node( - **{ - GraphPattern.LABEL_ATTR: "RELU, PRELU, SWISH", - GraphPattern.METATYPE_ATTR: [om.OVReluMetatype, om.OVPReluMetatype, om.OVSwishMetatype], - } - ) - linear_node_2 = pattern.add_node( - **{GraphPattern.METATYPE_ATTR: LINEAR_OPERATIONS, GraphPattern.LABEL_ATTR: "LINEAR"} - ) - add_node_2 = pattern.add_node(**{GraphPattern.LABEL_ATTR: "ADD_BIAS", GraphPattern.METATYPE_ATTR: om.OVAddMetatype}) - activation_node_2 = pattern.add_node( - **{GraphPattern.LABEL_ATTR: "SIGMOID", GraphPattern.METATYPE_ATTR: om.OVSigmoidMetatype} - ) - multiply_node = pattern.add_node( - **{GraphPattern.LABEL_ATTR: "MULTIPLY", GraphPattern.METATYPE_ATTR: om.OVMultiplyMetatype} - ) - - pattern.add_edge(any_node, reduce_mean_node) - pattern.add_edge(reduce_mean_node, linear_node_1) - pattern.add_edge(linear_node_1, add_node_1) - pattern.add_edge(add_node_1, activation_node_1) - pattern.add_edge(activation_node_1, linear_node_2) - pattern.add_edge(linear_node_2, add_node_2) - pattern.add_edge(add_node_2, activation_node_2) - pattern.add_edge(activation_node_2, multiply_node) - pattern.add_edge(any_node, multiply_node) - return pattern - - @OPENVINO_HW_FUSED_PATTERNS.register(HWFusedPatternNames.SOFTMAX_DIV) def create_softmax_div() -> GraphPattern: pattern = GraphPattern() diff --git a/nncf/openvino/pot/engine.py b/nncf/openvino/pot/engine.py index 60aeae612ab..f9a8b7fc66d 100644 --- a/nncf/openvino/pot/engine.py +++ b/nncf/openvino/pot/engine.py @@ -64,7 +64,6 @@ def __iter__(self): for idx, x in enumerate(self._iterable): yield (idx, x) - # pylint: disable=protected-access def __len__(self) -> int: if self._length is None: data_source = None diff --git a/nncf/openvino/pot/quantization/accuracy_aware.py b/nncf/openvino/pot/quantization/accuracy_aware.py index 09ffceff0ee..0e2529740c6 100644 --- a/nncf/openvino/pot/quantization/accuracy_aware.py +++ b/nncf/openvino/pot/quantization/accuracy_aware.py @@ -14,9 +14,9 @@ import numpy as np from openvino.tools import pot - # TODO(andrey-churkin): Should be removed after OpenVINO release. -# pylint: disable=E1101 + + class NMSEBasedAccuracyAware(pot.AccuracyAwareCommon): """ NMSE based implementation of the Accuracy Aware algorithm from the POT. diff --git a/nncf/openvino/pot/quantization/quantize_model.py b/nncf/openvino/pot/quantization/quantize_model.py index 5bb985bff9e..ef98eb88b5c 100644 --- a/nncf/openvino/pot/quantization/quantize_model.py +++ b/nncf/openvino/pot/quantization/quantize_model.py @@ -12,7 +12,7 @@ import logging import tempfile from pathlib import Path -from typing import Any, Callable, Dict, Iterable, Optional +from typing import Any, Callable, Dict, Iterable, Optional, Union import openvino.runtime as ov from openvino._offline_transformations import compress_quantize_weights_transformation @@ -192,22 +192,22 @@ def _create_quantization_group_config( def _create_quantization_config( - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, fast_bias_correction: bool, - model_type: Optional[ModelType], - ignored_scope: Optional[IgnoredScope], - advanced_parameters: Optional[AdvancedQuantizationParameters], + model_type: Union[ModelType, None], + ignored_scope: Union[IgnoredScope, None], + advanced_parameters: Union[AdvancedQuantizationParameters, None], ) -> Dict[str, Any]: """ Creates a quantization configuration. - :param preset: A preset that controls the quantization mode - (symmetric and asymmetric). It can take the following values: + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: - `performance`: Symmetric quantization of weights and activations. - - `mixed`: Symmetric quantization of weights and asymmetric - quantization of activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + - `None`: `mixed` preset is used for `transformer` model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device. @@ -224,6 +224,9 @@ def _create_quantization_config( fine-tuning the quantization algorithm. :return: A POT quantization configuration as dict. """ + if preset is None: + preset = QuantizationPreset.MIXED if model_type == ModelType.TRANSFORMER else QuantizationPreset.PERFORMANCE + config = { "target_device": target_device.value, "preset": preset.value, @@ -320,7 +323,7 @@ def _create_engine_config( def quantize_impl( model: ov.Model, calibration_dataset: Dataset, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -423,7 +426,7 @@ def quantize_with_accuracy_control_impl( validation_fn: Callable[[ov.CompiledModel, Iterable[Any]], float], max_drop: float = 0.01, drop_type: DropType = DropType.ABSOLUTE, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -462,7 +465,7 @@ def quantize_with_accuracy_control_impl( ) # Check whether it is possible to calculate the metric for one data item. - # pylint: disable=W0703 + use_original_metric = True try: ie = ov.Core() diff --git a/nncf/openvino/quantization/ignored_patterns.py b/nncf/openvino/quantization/ignored_patterns.py index b61d11e933e..6868c6ee7c3 100644 --- a/nncf/openvino/quantization/ignored_patterns.py +++ b/nncf/openvino/quantization/ignored_patterns.py @@ -12,6 +12,7 @@ from nncf.common.graph.patterns.patterns import IgnoredPatternNames from nncf.common.utils.registry import Registry from nncf.openvino.graph.metatypes import openvino_metatypes as om +from nncf.openvino.graph.metatypes.groups import LINEAR_OPERATIONS OPENVINO_IGNORED_PATTERNS = Registry("IGNORED_PATTERNS") @@ -108,3 +109,56 @@ def create_equal_logicalnot() -> GraphPattern: pattern.add_edge(equal_node, logical_not_node) return pattern + + +@OPENVINO_IGNORED_PATTERNS.register(IgnoredPatternNames.SE_BLOCK) +def create_se_block() -> GraphPattern: + pattern = GraphPattern() + any_node = pattern.add_node( + **{GraphPattern.LABEL_ATTR: "ANY", GraphPattern.METATYPE_ATTR: GraphPattern.NON_PATTERN_NODE_TYPE} + ) + reduce_mean_node = pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "REDUCE_MEAN", + GraphPattern.METATYPE_ATTR: om.OVReduceMeanMetatype, + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + ) + linear_node_1 = pattern.add_node( + **{GraphPattern.METATYPE_ATTR: LINEAR_OPERATIONS, GraphPattern.LABEL_ATTR: "LINEAR"} + ) + add_node_1 = pattern.add_node(**{GraphPattern.LABEL_ATTR: "ADD_BIAS", GraphPattern.METATYPE_ATTR: om.OVAddMetatype}) + activation_node_1 = pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "RELU, PRELU, SWISH", + GraphPattern.METATYPE_ATTR: [om.OVReluMetatype, om.OVPReluMetatype, om.OVSwishMetatype], + } + ) + linear_node_2 = pattern.add_node( + **{GraphPattern.METATYPE_ATTR: LINEAR_OPERATIONS, GraphPattern.LABEL_ATTR: "LINEAR"} + ) + add_node_2 = pattern.add_node(**{GraphPattern.LABEL_ATTR: "ADD_BIAS", GraphPattern.METATYPE_ATTR: om.OVAddMetatype}) + activation_node_2 = pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "SIGMOID", + GraphPattern.METATYPE_ATTR: [om.OVSigmoidMetatype, om.OVHSigmoidMetatype], + } + ) + multiply_node = pattern.add_node( + **{ + GraphPattern.LABEL_ATTR: "MULTIPLY", + GraphPattern.METATYPE_ATTR: om.OVMultiplyMetatype, + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + ) + + pattern.add_edge(any_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, linear_node_1) + pattern.add_edge(linear_node_1, add_node_1) + pattern.add_edge(add_node_1, activation_node_1) + pattern.add_edge(activation_node_1, linear_node_2) + pattern.add_edge(linear_node_2, add_node_2) + pattern.add_edge(add_node_2, activation_node_2) + pattern.add_edge(activation_node_2, multiply_node) + pattern.add_edge(any_node, multiply_node) + return pattern diff --git a/nncf/openvino/quantization/quantize_model.py b/nncf/openvino/quantization/quantize_model.py index cbc4e03a842..2a45bd9b8f3 100644 --- a/nncf/openvino/quantization/quantize_model.py +++ b/nncf/openvino/quantization/quantize_model.py @@ -96,7 +96,7 @@ def dump_parameters(model: ov.Model, parameters: Dict, path: Optional[List] = No def native_quantize_if_op_impl( model: ov.Model, calibration_dataset: Dataset, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -138,7 +138,7 @@ def native_quantize_if_op_impl( dump_parameters( quantized_model, { - "preset": preset.value, + "preset": preset, "target_device": target_device.value, "subset_size": subset_size, "fast_bias_correction": fast_bias_correction, @@ -154,7 +154,7 @@ def native_quantize_if_op_impl( def native_quantize_impl( model: ov.Model, calibration_dataset: Dataset, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -184,7 +184,7 @@ def native_quantize_impl( dump_parameters( quantized_model, { - "preset": preset.value, + "preset": preset, "target_device": target_device.value, "subset_size": subset_size, "fast_bias_correction": fast_bias_correction, @@ -206,7 +206,7 @@ def native_quantize_with_accuracy_control_impl( validation_fn: Callable[[Any, Iterable[Any]], Tuple[float, Union[None, List[float], List[List[TTensor]]]]], max_drop: float = 0.01, drop_type: DropType = DropType.ABSOLUTE, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -321,7 +321,7 @@ def native_quantize_with_accuracy_control_impl( dump_parameters( quantized_model, { - "preset": preset.value, + "preset": preset, "target_device": target_device.value, "subset_size": subset_size, "fast_bias_correction": fast_bias_correction, @@ -339,7 +339,7 @@ def native_quantize_with_accuracy_control_impl( def quantize_impl( model: ov.Model, calibration_dataset: Dataset, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -396,7 +396,7 @@ def quantize_with_accuracy_control_impl( validation_fn: Callable[[Any, Iterable[Any]], float], max_drop: float = 0.01, drop_type: DropType = DropType.ABSOLUTE, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, diff --git a/nncf/openvino/statistics/collectors.py b/nncf/openvino/statistics/collectors.py index 4672541d86b..dd586fb4523 100644 --- a/nncf/openvino/statistics/collectors.py +++ b/nncf/openvino/statistics/collectors.py @@ -43,7 +43,6 @@ from nncf.quantization.advanced_parameters import StatisticsType -# pylint: disable=too-many-public-methods class OVNNCFCollectorTensorProcessor(NNCFCollectorTensorProcessor): """ A realization of the processing methods for OVNNCFTensors. diff --git a/nncf/quantization/algorithms/accuracy_control/evaluator.py b/nncf/quantization/algorithms/accuracy_control/evaluator.py index 71f59153b98..cb1e3173e6c 100644 --- a/nncf/quantization/algorithms/accuracy_control/evaluator.py +++ b/nncf/quantization/algorithms/accuracy_control/evaluator.py @@ -212,7 +212,7 @@ def determine_mode( metric_mode = None data_item = dataset.get_data([0]) - # pylint: disable=W0703 + try: metric_value, values_for_each_item = validation_fn(model_for_inference, data_item) except Exception: @@ -231,7 +231,6 @@ def determine_mode( convert_to_float_possible = True if values_for_each_item is not None: - # pylint: disable=W0703 try: _ = float(values_for_each_item[0]) except Exception: diff --git a/nncf/quantization/algorithms/algorithm.py b/nncf/quantization/algorithms/algorithm.py index 432f8024491..b2bca79a31e 100644 --- a/nncf/quantization/algorithms/algorithm.py +++ b/nncf/quantization/algorithms/algorithm.py @@ -11,7 +11,7 @@ from abc import ABC from abc import abstractmethod -from typing import Dict, Optional, TypeVar +from typing import List, Optional, TypeVar from nncf import Dataset from nncf.common.graph.graph import NNCFGraph @@ -28,11 +28,11 @@ class Algorithm(ABC): @property @abstractmethod - def available_backends(self) -> Dict[str, BackendType]: + def available_backends(self) -> List[BackendType]: """ - Returns dictionary of the available backends for the algorithm. + Returns list of the available backends for the algorithm. - :return: Dict of backends supported by the algorithm. + :return: List of backends supported by the algorithm. """ @abstractmethod diff --git a/nncf/quantization/algorithms/bias_correction/algorithm.py b/nncf/quantization/algorithms/bias_correction/algorithm.py index 614dc241349..e0de55f2917 100644 --- a/nncf/quantization/algorithms/bias_correction/algorithm.py +++ b/nncf/quantization/algorithms/bias_correction/algorithm.py @@ -32,7 +32,6 @@ from nncf.common.utils.backend import copy_model from nncf.common.utils.backend import get_backend from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.bias_correction.backend import ALGO_BACKENDS TModel = TypeVar("TModel") @@ -104,8 +103,8 @@ def __init__( raise RuntimeError("BiasCorrection algorithm does not support apply_for_all_nodes=True yet") @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.ONNX, BackendType.OPENVINO] def _set_backend_entity(self, model: TModel) -> None: """ @@ -135,7 +134,6 @@ def apply( dataset: Optional[Dataset] = None, ) -> TModel: self._set_backend_entity(model) - model = self._backend_entity.insert_null_biases(model, graph) main_transformations_layout = TransformationLayout() main_model_transformer = ModelTransformerFactory.create(model) @@ -489,8 +487,6 @@ def output_filter_func(point): def get_statistic_points(self, model: TModel, graph: NNCFGraph) -> StatisticPointsContainer: self._set_backend_entity(model) model_copy = self._backend_entity.remove_fq_from_inputs(copy_model(model), graph) - graph_copy = NNCFGraphFactory.create(model_copy) - model_copy = self._backend_entity.insert_null_biases(model_copy, graph_copy) nncf_graph = NNCFGraphFactory.create(model_copy) statistic_container = StatisticPointsContainer() diff --git a/nncf/quantization/algorithms/bias_correction/backend.py b/nncf/quantization/algorithms/bias_correction/backend.py index ea490f5fae1..d94845501b1 100644 --- a/nncf/quantization/algorithms/bias_correction/backend.py +++ b/nncf/quantization/algorithms/bias_correction/backend.py @@ -22,14 +22,11 @@ from nncf.common.graph.transformations.commands import TransformationCommand from nncf.common.tensor import NNCFTensor from nncf.common.tensor_statistics.collectors import TensorStatisticCollectorBase -from nncf.common.utils.registry import Registry TModel = TypeVar("TModel") OutputType = TypeVar("OutputType") -ALGO_BACKENDS = Registry("algo_backends") -# pylint:disable=too-many-public-methods class BiasCorrectionAlgoBackend(ABC): @property @abstractmethod @@ -205,14 +202,3 @@ def remove_fq_from_inputs(model: TModel, nncf_graph: NNCFGraph) -> TModel: :param nncf_graph: NNCFGraph instance. :return: TModel without activation Fake Quantize nodes (or Quantize-Dequantize pairs). """ - - @staticmethod - @abstractmethod - def insert_null_biases(model: TModel, nncf_graph: NNCFGraph) -> TModel: - """ - This method finds and inserts zero biases for the layers that should have it. - - :param model: TModel instance. - :param nncf_graph: NNCFGraph instance. - :return: TModel instance with zero biases - """ diff --git a/nncf/quantization/algorithms/bias_correction/onnx_backend.py b/nncf/quantization/algorithms/bias_correction/onnx_backend.py index d7f34936bfd..064fab676ab 100644 --- a/nncf/quantization/algorithms/bias_correction/onnx_backend.py +++ b/nncf/quantization/algorithms/bias_correction/onnx_backend.py @@ -17,7 +17,6 @@ from nncf.common.graph import NNCFGraph from nncf.common.graph import NNCFNode from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.onnx.graph.model_utils import remove_fq_from_inputs from nncf.onnx.graph.node_utils import get_bias_value from nncf.onnx.graph.node_utils import is_any_weight_quantized @@ -33,12 +32,9 @@ from nncf.onnx.statistics.collectors import ONNXNNCFCollectorTensorProcessor from nncf.onnx.statistics.collectors import ONNXRawStatisticCollector from nncf.onnx.tensor import ONNXNNCFTensor -from nncf.quantization.algorithms.bias_correction.backend import ALGO_BACKENDS from nncf.quantization.algorithms.bias_correction.backend import BiasCorrectionAlgoBackend -# pylint:disable=too-many-public-methods -@ALGO_BACKENDS.register(BackendType.ONNX) class ONNXBiasCorrectionAlgoBackend(BiasCorrectionAlgoBackend): @property def tensor_processor(self) -> ONNXNNCFCollectorTensorProcessor: @@ -120,7 +116,3 @@ def is_node_with_bias(node: NNCFNode, nncf_graph: NNCFGraph) -> bool: @staticmethod def remove_fq_from_inputs(model: onnx.ModelProto, nncf_graph: NNCFGraph) -> onnx.ModelProto: return remove_fq_from_inputs(model, nncf_graph) - - @staticmethod - def insert_null_biases(model: onnx.ModelProto, nncf_graph: NNCFGraph) -> onnx.ModelProto: - return model diff --git a/nncf/quantization/algorithms/bias_correction/openvino_backend.py b/nncf/quantization/algorithms/bias_correction/openvino_backend.py index 7af72dec173..03f6189dd3c 100644 --- a/nncf/quantization/algorithms/bias_correction/openvino_backend.py +++ b/nncf/quantization/algorithms/bias_correction/openvino_backend.py @@ -17,10 +17,8 @@ from nncf.common.graph import NNCFGraph from nncf.common.graph import NNCFNode from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.openvino.graph.metatypes.groups import FAKE_QUANTIZE_OPERATIONS -from nncf.openvino.graph.model_utils import insert_null_biases from nncf.openvino.graph.model_utils import remove_fq_from_inputs from nncf.openvino.graph.node_utils import get_bias_value from nncf.openvino.graph.node_utils import is_node_with_bias @@ -33,12 +31,9 @@ from nncf.openvino.statistics.collectors import get_mean_statistic_collector from nncf.openvino.statistics.collectors import get_raw_stat_collector from nncf.openvino.tensor import OVNNCFTensor -from nncf.quantization.algorithms.bias_correction.backend import ALGO_BACKENDS from nncf.quantization.algorithms.bias_correction.backend import BiasCorrectionAlgoBackend -# pylint:disable=too-many-public-methods -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVBiasCorrectionAlgoBackend(BiasCorrectionAlgoBackend): @property def tensor_processor(self) -> OVNNCFCollectorTensorProcessor: @@ -135,7 +130,3 @@ def is_node_with_bias(node: NNCFNode, nncf_graph: NNCFGraph) -> bool: @staticmethod def remove_fq_from_inputs(model: ov.Model, nncf_graph: NNCFGraph) -> ov.Model: return remove_fq_from_inputs(model, nncf_graph) - - @staticmethod - def insert_null_biases(model: ov.Model, nncf_graph: NNCFGraph) -> ov.Model: - return insert_null_biases(model, nncf_graph) diff --git a/nncf/quantization/algorithms/channel_alignment/algorithm.py b/nncf/quantization/algorithms/channel_alignment/algorithm.py index f163ec3468c..20ff497e258 100644 --- a/nncf/quantization/algorithms/channel_alignment/algorithm.py +++ b/nncf/quantization/algorithms/channel_alignment/algorithm.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List, Optional, Tuple, TypeVar +from typing import List, Optional, Tuple, TypeVar import numpy as np @@ -28,7 +28,6 @@ from nncf.common.utils.backend import BackendType from nncf.common.utils.backend import get_backend from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.channel_alignment.backend import ALGO_BACKENDS from nncf.quantization.algorithms.channel_alignment.backend import ChannelAlignmentAlgoBackend from nncf.quantization.algorithms.channel_alignment.backend import LayoutDescriptor @@ -75,8 +74,8 @@ def __init__( self._algorithm_key = f"CA_{hash(self)}" @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.OPENVINO] def _set_backend_entity(self, model: TModel) -> None: """ diff --git a/nncf/quantization/algorithms/channel_alignment/backend.py b/nncf/quantization/algorithms/channel_alignment/backend.py index f78f2db08a6..c41a779f0bf 100644 --- a/nncf/quantization/algorithms/channel_alignment/backend.py +++ b/nncf/quantization/algorithms/channel_alignment/backend.py @@ -21,10 +21,8 @@ from nncf.common.graph.transformations.commands import TargetPoint from nncf.common.graph.transformations.commands import TargetType from nncf.common.tensor_statistics.collectors import TensorStatisticCollectorBase -from nncf.common.utils.registry import Registry TModel = TypeVar("TModel") -ALGO_BACKENDS = Registry("algo_backends") @dataclass diff --git a/nncf/quantization/algorithms/channel_alignment/openvino_backend.py b/nncf/quantization/algorithms/channel_alignment/openvino_backend.py index 1a3667be9c5..77716d51969 100644 --- a/nncf/quantization/algorithms/channel_alignment/openvino_backend.py +++ b/nncf/quantization/algorithms/channel_alignment/openvino_backend.py @@ -19,7 +19,6 @@ from nncf.common.graph.layer_attributes import ConvolutionLayerAttributes from nncf.common.graph.transformations.commands import TargetType from nncf.common.tensor_statistics.collectors import TensorStatisticCollectorBase -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import MedianAggregator from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.openvino.graph.layer_attributes import OVLayerAttributes @@ -37,12 +36,10 @@ from nncf.openvino.statistics.collectors import OVNNCFCollectorTensorProcessor from nncf.openvino.statistics.collectors import OVQuantileReducer from nncf.openvino.statistics.statistics import OVMinMaxTensorStatistic -from nncf.quantization.algorithms.channel_alignment.backend import ALGO_BACKENDS from nncf.quantization.algorithms.channel_alignment.backend import ChannelAlignmentAlgoBackend from nncf.quantization.algorithms.channel_alignment.backend import LayoutDescriptor -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVChannelAlignmentAlgoBackend(ChannelAlignmentAlgoBackend): @staticmethod def target_point(target_type: TargetType, target_node_name: str, port_id: int) -> OVTargetPoint: diff --git a/nncf/quantization/algorithms/fast_bias_correction/algorithm.py b/nncf/quantization/algorithms/fast_bias_correction/algorithm.py index 919f56848c8..821f7475d81 100644 --- a/nncf/quantization/algorithms/fast_bias_correction/algorithm.py +++ b/nncf/quantization/algorithms/fast_bias_correction/algorithm.py @@ -30,7 +30,6 @@ from nncf.experimental.tensor import Tensor from nncf.experimental.tensor import functions as fns from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.fast_bias_correction.backend import ALGO_BACKENDS TModel = TypeVar("TModel") TTensor = TypeVar("TTensor") @@ -92,8 +91,8 @@ def __init__( raise RuntimeError("FastBiasCorrection algorithm does not support apply_for_all_nodes=True yet") @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.ONNX, BackendType.OPENVINO, BackendType.TORCH] def _set_backend_entity(self, model: TModel) -> None: """ diff --git a/nncf/quantization/algorithms/fast_bias_correction/backend.py b/nncf/quantization/algorithms/fast_bias_correction/backend.py index a9d2ef0ab74..057c012f868 100644 --- a/nncf/quantization/algorithms/fast_bias_correction/backend.py +++ b/nncf/quantization/algorithms/fast_bias_correction/backend.py @@ -21,13 +21,11 @@ from nncf.common.graph.transformations.commands import TargetType from nncf.common.graph.transformations.commands import TransformationCommand from nncf.common.tensor_statistics.collectors import TensorStatisticCollectorBase -from nncf.common.utils.registry import Registry from nncf.experimental.tensor import Tensor TModel = TypeVar("TModel") TTensor = TypeVar("TTensor") OutputType = TypeVar("OutputType") -ALGO_BACKENDS = Registry("algo_backends") class FastBiasCorrectionAlgoBackend(ABC): diff --git a/nncf/quantization/algorithms/fast_bias_correction/onnx_backend.py b/nncf/quantization/algorithms/fast_bias_correction/onnx_backend.py index d0646f6aeb2..1ae51fcbfe7 100644 --- a/nncf/quantization/algorithms/fast_bias_correction/onnx_backend.py +++ b/nncf/quantization/algorithms/fast_bias_correction/onnx_backend.py @@ -17,7 +17,6 @@ from nncf.common.graph import NNCFGraph from nncf.common.graph import NNCFNode from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.experimental.tensor import Tensor from nncf.onnx.graph.node_utils import get_bias_value from nncf.onnx.graph.node_utils import is_any_weight_quantized @@ -28,11 +27,9 @@ from nncf.onnx.graph.transformations.commands import ONNXNullBiasInsertionCommand from nncf.onnx.graph.transformations.commands import ONNXTargetPoint from nncf.onnx.statistics.collectors import ONNXMeanStatisticCollector -from nncf.quantization.algorithms.fast_bias_correction.backend import ALGO_BACKENDS from nncf.quantization.algorithms.fast_bias_correction.backend import FastBiasCorrectionAlgoBackend -@ALGO_BACKENDS.register(BackendType.ONNX) class ONNXFastBiasCorrectionAlgoBackend(FastBiasCorrectionAlgoBackend): @property def types_to_insert_bias(self): diff --git a/nncf/quantization/algorithms/fast_bias_correction/openvino_backend.py b/nncf/quantization/algorithms/fast_bias_correction/openvino_backend.py index d2744da5864..ba8d18d1733 100644 --- a/nncf/quantization/algorithms/fast_bias_correction/openvino_backend.py +++ b/nncf/quantization/algorithms/fast_bias_correction/openvino_backend.py @@ -17,7 +17,6 @@ from nncf.common.graph import NNCFGraph from nncf.common.graph import NNCFNode from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.experimental.tensor import Tensor from nncf.openvino.graph.metatypes.groups import FAKE_QUANTIZE_OPERATIONS @@ -28,11 +27,9 @@ from nncf.openvino.graph.transformations.commands import OVModelExtractionCommand from nncf.openvino.graph.transformations.commands import OVTargetPoint from nncf.openvino.statistics.collectors import get_mean_statistic_collector -from nncf.quantization.algorithms.fast_bias_correction.backend import ALGO_BACKENDS from nncf.quantization.algorithms.fast_bias_correction.backend import FastBiasCorrectionAlgoBackend -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVFastBiasCorrectionAlgoBackend(FastBiasCorrectionAlgoBackend): @staticmethod def target_point(target_type: TargetType, target_node_name: str, port_id: int) -> OVTargetPoint: diff --git a/nncf/quantization/algorithms/fast_bias_correction/torch_backend.py b/nncf/quantization/algorithms/fast_bias_correction/torch_backend.py index 193be8994d9..fea39ff068a 100644 --- a/nncf/quantization/algorithms/fast_bias_correction/torch_backend.py +++ b/nncf/quantization/algorithms/fast_bias_correction/torch_backend.py @@ -18,10 +18,8 @@ from nncf.common.graph import NNCFNode from nncf.common.graph.definitions import NNCFGraphNodeType from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.experimental.tensor import Tensor -from nncf.quantization.algorithms.fast_bias_correction.backend import ALGO_BACKENDS from nncf.quantization.algorithms.fast_bias_correction.backend import FastBiasCorrectionAlgoBackend from nncf.torch.graph.transformations.command_creation import create_bias_correction_command from nncf.torch.graph.transformations.commands import PTBiasCorrectionCommand @@ -35,7 +33,6 @@ from nncf.torch.tensor_statistics.collectors import get_mean_statistic_collector -@ALGO_BACKENDS.register(BackendType.TORCH) class PTFastBiasCorrectionAlgoBackend(FastBiasCorrectionAlgoBackend): TARGET_TYPE_TO_PT_INS_TYPE_MAP = { TargetType.PRE_LAYER_OPERATION: TargetType.OPERATOR_PRE_HOOK, diff --git a/nncf/quantization/algorithms/hyperparameter_tuner/param_grid.py b/nncf/quantization/algorithms/hyperparameter_tuner/param_grid.py index 4874fc80b42..cd621295f2f 100644 --- a/nncf/quantization/algorithms/hyperparameter_tuner/param_grid.py +++ b/nncf/quantization/algorithms/hyperparameter_tuner/param_grid.py @@ -13,6 +13,7 @@ from typing import Any, Dict, List from nncf.common.quantization.structs import QuantizationPreset +from nncf.common.utils.backend import BackendType from nncf.quantization.algorithms.bias_correction.algorithm import BiasCorrection from nncf.quantization.algorithms.channel_alignment.algorithm import ChannelAlignment from nncf.quantization.algorithms.fast_bias_correction.algorithm import FastBiasCorrection @@ -89,7 +90,7 @@ def _get_bias_correction_param_grid() -> ParamGrid: return {"fast_bias_correction": [True, False]} -def get_quantization_param_grids(pipeline: Pipeline) -> List[ParamGrid]: +def get_quantization_param_grids(pipeline: Pipeline, backend: BackendType) -> List[ParamGrid]: """ Returns params grid for post-training quantization algorithm. """ @@ -105,7 +106,10 @@ def get_quantization_param_grids(pipeline: Pipeline) -> List[ParamGrid]: for step in pipeline.pipeline_steps: param_grid = {} for algorithm in step: + if backend not in algorithm.available_backends: + continue param_grid.update(algorithm_cls_to_param_grid[algorithm.__class__]) - param_grids.append(param_grid) + if param_grid: + param_grids.append(param_grid) return param_grids diff --git a/nncf/quantization/algorithms/min_max/algorithm.py b/nncf/quantization/algorithms/min_max/algorithm.py index 1b199409683..3a9cbdfe473 100644 --- a/nncf/quantization/algorithms/min_max/algorithm.py +++ b/nncf/quantization/algorithms/min_max/algorithm.py @@ -51,7 +51,6 @@ from nncf.quantization.advanced_parameters import QuantizationParameters from nncf.quantization.advanced_parameters import changes_asdict from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.min_max.backend import ALGO_BACKENDS from nncf.quantization.fake_quantize import calculate_quantizer_parameters from nncf.quantization.fake_quantize import get_quantizer_narrow_range from nncf.quantization.passes import transform_to_inference_graph @@ -97,7 +96,7 @@ class MinMaxQuantization(Algorithm): def __init__( self, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, model_type: Optional[ModelType] = None, @@ -112,8 +111,12 @@ def __init__( backend_params: Optional[Dict[str, Any]] = None, ): """ - :param preset: A preset that controls the quantization mode, - defaults to QuantizationPreset.PERFORMANCE. + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: + - `performance`: Symmetric quantization of weights and activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device, defaults to TargetDevice.ANY. @@ -158,6 +161,13 @@ def __init__( QuantizerGroup.ACTIVATIONS: activations_range_estimator_params, } + # preset definition + if preset is None: + if model_type == ModelType.TRANSFORMER: + preset = QuantizationPreset.MIXED + else: + preset = QuantizationPreset.PERFORMANCE + # Calculates global quantizer constraints self._global_quantizer_constraints = {} for quantizer_group in QuantizerGroup: @@ -177,8 +187,8 @@ def _reset_cache(self): self._unified_scale_groups = [] @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.ONNX, BackendType.OPENVINO, BackendType.TORCH] def _get_quantizer_constraints( self, group: QuantizerGroup, preset: QuantizationPreset, quantization_params: Optional[QuantizationParameters] @@ -505,7 +515,10 @@ def _get_quantization_target_points( hw_patterns = PatternsManager.get_full_hw_pattern_graph(backend=backend, device=device, model_type=model_type) inference_nncf_graph = transform_to_inference_graph( - deepcopy(nncf_graph), self._backend_entity.shapeof_metatypes, self._backend_entity.read_variable_metatypes + deepcopy(nncf_graph), + self._backend_entity.shapeof_metatypes, + self._backend_entity.dropout_metatypes, + self._backend_entity.read_variable_metatypes, ) quantizer_setup = self._get_quantizer_setup(nncf_graph, inference_nncf_graph, hw_patterns, ignored_patterns) diff --git a/nncf/quantization/algorithms/min_max/backend.py b/nncf/quantization/algorithms/min_max/backend.py index 254a1c949cf..2c105309c8e 100644 --- a/nncf/quantization/algorithms/min_max/backend.py +++ b/nncf/quantization/algorithms/min_max/backend.py @@ -23,17 +23,14 @@ from nncf.common.quantization.structs import QuantizerConfig from nncf.common.tensor_statistics.collectors import TensorStatisticCollectorBase from nncf.common.tensor_statistics.statistics import MinMaxTensorStatistic -from nncf.common.utils.registry import Registry from nncf.parameters import ModelType from nncf.parameters import TargetDevice from nncf.quantization.fake_quantize import FakeQuantizeParameters from nncf.quantization.range_estimator import RangeEstimatorParameters TModel = TypeVar("TModel") -ALGO_BACKENDS = Registry("algo_backends") -# pylint:disable=too-many-public-methods class MinMaxAlgoBackend(ABC): @property @abstractmethod @@ -51,23 +48,23 @@ def post_processing_metatypes(self) -> List[OperatorMetatype]: @property @abstractmethod - def shapeof_metatypes(self) -> List[OperatorMetatype]: + def conv_metatypes(self) -> List[OperatorMetatype]: """ - Property for the backend-specific ShapeOf metatypes. + Property for the backend-specific Convolution metatypes. """ @property @abstractmethod - def conv_metatypes(self) -> List[OperatorMetatype]: + def shapeof_metatypes(self) -> List[OperatorMetatype]: """ - Property for the backend-specific Convolution metatypes. + Property for the backend-specific ShapeOf metatypes. """ @property @abstractmethod - def overflow_fix_metatypes(self) -> List[OperatorMetatype]: + def dropout_metatypes(self) -> List[OperatorMetatype]: """ - Property for the backend-specific metatypes for which overflow_fix is applicable. + Property for the backend-specific Dropout metatypes. """ @property @@ -77,6 +74,13 @@ def read_variable_metatypes(self) -> List[OperatorMetatype]: Property for the backend-specific metatypes that also can be interpreted as inputs (ReadValue). """ + @property + @abstractmethod + def overflow_fix_metatypes(self) -> List[OperatorMetatype]: + """ + Property for the backend-specific metatypes for which overflow_fix is applicable. + """ + @property @abstractmethod def add_metatypes(self) -> List[OperatorMetatype]: diff --git a/nncf/quantization/algorithms/min_max/onnx_backend.py b/nncf/quantization/algorithms/min_max/onnx_backend.py index d3c1e25d0ae..615a0a49141 100644 --- a/nncf/quantization/algorithms/min_max/onnx_backend.py +++ b/nncf/quantization/algorithms/min_max/onnx_backend.py @@ -20,7 +20,6 @@ from nncf.common.hardware.config import HWConfig from nncf.common.quantization.structs import QuantizationMode from nncf.common.quantization.structs import QuantizerConfig -from nncf.common.utils.backend import BackendType from nncf.onnx.graph.metatypes import onnx_metatypes as om from nncf.onnx.graph.metatypes.groups import MATMUL_METATYPES from nncf.onnx.graph.node_utils import get_input_edges_mapping @@ -39,14 +38,11 @@ from nncf.parameters import TargetDevice from nncf.quantization.advanced_parameters import AggregatorType from nncf.quantization.advanced_parameters import StatisticsType -from nncf.quantization.algorithms.min_max.backend import ALGO_BACKENDS from nncf.quantization.algorithms.min_max.backend import MinMaxAlgoBackend from nncf.quantization.fake_quantize import FakeQuantizeParameters from nncf.quantization.range_estimator import RangeEstimatorParameters -# pylint:disable=too-many-public-methods -@ALGO_BACKENDS.register(BackendType.ONNX) class ONNXMinMaxAlgoBackend(MinMaxAlgoBackend): @property def mat_mul_metatypes(self) -> List[OperatorMetatype]: @@ -56,10 +52,6 @@ def mat_mul_metatypes(self) -> List[OperatorMetatype]: def post_processing_metatypes(self) -> List[OperatorMetatype]: return [om.ONNXTopKMetatype, om.ONNXNonMaxSuppressionMetatype] - @property - def shapeof_metatypes(self) -> List[OperatorMetatype]: - return [om.ONNXShapeMetatype] - @property def conv_metatypes(self) -> List[OperatorMetatype]: return [om.ONNXConvolutionMetatype] @@ -68,10 +60,6 @@ def conv_metatypes(self) -> List[OperatorMetatype]: def overflow_fix_metatypes(self) -> List[OperatorMetatype]: return [om.ONNXConvolutionMetatype, om.ONNXConvolutionTransposeMetatype, *MATMUL_METATYPES] - @property - def read_variable_metatypes(self) -> List[OperatorMetatype]: - return [] - @property def add_metatypes(self) -> List[OperatorMetatype]: return [om.ONNXAddLayerMetatype] @@ -80,6 +68,18 @@ def add_metatypes(self) -> List[OperatorMetatype]: def group_conv_metatypes(self) -> List[OperatorMetatype]: return self.conv_metatypes + @property + def shapeof_metatypes(self) -> List[OperatorMetatype]: + return [om.ONNXShapeMetatype] + + @property + def dropout_metatypes(self) -> List[OperatorMetatype]: + return [] + + @property + def read_variable_metatypes(self) -> List[OperatorMetatype]: + return [] + @property def scales_unification_map(self) -> Dict[OperatorMetatype, OperatorMetatype]: return {om.ONNXConcatMetatype: self.overflow_fix_metatypes} @@ -183,6 +183,8 @@ def get_ignored_metatypes(model_type: ModelType, device: TargetDevice) -> List[O om.ONNXPowMetatype, om.ONNXSqueezeMetatype, om.ONNXSubMetatype, + om.ONNXAveragePoolMetatype, + om.ONNXGlobalAveragePoolMetatype, om.ONNXReduceMeanMetatype, om.ONNXReduceL2Metatype, om.ONNXReduceSumMetatype, diff --git a/nncf/quantization/algorithms/min_max/openvino_backend.py b/nncf/quantization/algorithms/min_max/openvino_backend.py index 4edba0c0a37..dd817cbbb82 100644 --- a/nncf/quantization/algorithms/min_max/openvino_backend.py +++ b/nncf/quantization/algorithms/min_max/openvino_backend.py @@ -21,7 +21,6 @@ from nncf.common.quantization.structs import QuantizationMode from nncf.common.quantization.structs import QuantizerConfig from nncf.common.tensor_statistics.collectors import ReductionAxes -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import AGGREGATORS_MAP from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.openvino.graph.layer_attributes import OVLayerAttributes @@ -40,13 +39,10 @@ from nncf.parameters import TargetDevice from nncf.quantization.advanced_parameters import RangeEstimatorParameters from nncf.quantization.advanced_parameters import StatisticsType -from nncf.quantization.algorithms.min_max.backend import ALGO_BACKENDS from nncf.quantization.algorithms.min_max.backend import MinMaxAlgoBackend from nncf.quantization.fake_quantize import FakeQuantizeParameters -# pylint:disable=too-many-public-methods -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVMinMaxAlgoBackend(MinMaxAlgoBackend): @property def mat_mul_metatypes(self) -> List[OperatorMetatype]: @@ -56,10 +52,6 @@ def mat_mul_metatypes(self) -> List[OperatorMetatype]: def post_processing_metatypes(self) -> List[OperatorMetatype]: return [om.OVTopKMetatype, om.OVNonMaxSuppressionMetatype] - @property - def shapeof_metatypes(self) -> List[OperatorMetatype]: - return [om.OVShapeOfMetatype] - @property def conv_metatypes(self) -> List[OperatorMetatype]: return [om.OVConvolutionMetatype] @@ -74,10 +66,6 @@ def overflow_fix_metatypes(self) -> List[OperatorMetatype]: om.OVMatMulMetatype, ] - @property - def read_variable_metatypes(self) -> List[OperatorMetatype]: - return [om.OVReadValueMetatype] - @property def add_metatypes(self) -> List[OperatorMetatype]: return [om.OVAddMetatype] @@ -86,6 +74,18 @@ def add_metatypes(self) -> List[OperatorMetatype]: def group_conv_metatypes(self) -> List[OperatorMetatype]: return [om.OVGroupConvolutionMetatype] + @property + def shapeof_metatypes(self) -> List[OperatorMetatype]: + return [om.OVShapeOfMetatype] + + @property + def dropout_metatypes(self) -> List[OperatorMetatype]: + return [] + + @property + def read_variable_metatypes(self) -> List[OperatorMetatype]: + return [om.OVReadValueMetatype] + @property def scales_unification_map(self) -> Dict[OperatorMetatype, OperatorMetatype]: return {om.OVConcatMetatype: self.overflow_fix_metatypes} @@ -213,6 +213,7 @@ def get_ignored_metatypes(model_type: ModelType, device: TargetDevice) -> List[O om.OVPowerMetatype, om.OVSqueezeMetatype, om.OVSubtractMetatype, + om.OVAvgPoolMetatype, om.OVReduceMeanMetatype, om.OVReduceL2Metatype, om.OVSumMetatype, diff --git a/nncf/quantization/algorithms/min_max/torch_backend.py b/nncf/quantization/algorithms/min_max/torch_backend.py index e4a765a2d59..671a1c21652 100644 --- a/nncf/quantization/algorithms/min_max/torch_backend.py +++ b/nncf/quantization/algorithms/min_max/torch_backend.py @@ -23,13 +23,11 @@ from nncf.common.hardware.config import HWConfig from nncf.common.quantization.structs import QuantizationMode from nncf.common.quantization.structs import QuantizerConfig -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import AGGREGATORS_MAP from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.parameters import ModelType from nncf.parameters import TargetDevice from nncf.quantization.advanced_parameters import StatisticsType -from nncf.quantization.algorithms.min_max.backend import ALGO_BACKENDS from nncf.quantization.algorithms.min_max.backend import MinMaxAlgoBackend from nncf.quantization.fake_quantize import FakeQuantizeParameters from nncf.quantization.range_estimator import RangeEstimatorParameters @@ -49,8 +47,6 @@ from nncf.torch.tensor_statistics.statistics import PTMinMaxTensorStatistic -# pylint:disable=too-many-public-methods -@ALGO_BACKENDS.register(BackendType.TORCH) class PTMinMaxAlgoBackend(MinMaxAlgoBackend): TARGET_TYPE_TO_PT_INS_TYPE_MAP = { TargetType.PRE_LAYER_OPERATION: TargetType.OPERATOR_PRE_HOOK, @@ -69,6 +65,14 @@ def post_processing_metatypes(self) -> List[OperatorMetatype]: def shapeof_metatypes(self) -> List[OperatorMetatype]: return [] + @property + def dropout_metatypes(self) -> List[OperatorMetatype]: + return [om.PTDropoutMetatype] + + @property + def read_variable_metatypes(self) -> List[OperatorMetatype]: + return [] + @property def conv_metatypes(self) -> List[OperatorMetatype]: return [om.PTModuleConv1dMetatype, om.PTModuleConv2dMetatype, om.PTModuleConv3dMetatype] @@ -85,10 +89,6 @@ def overflow_fix_metatypes(self) -> List[OperatorMetatype]: om.PTModuleConvTranspose3dMetatype, ] - @property - def read_variable_metatypes(self) -> List[OperatorMetatype]: - return [] - @property def add_metatypes(self) -> List[OperatorMetatype]: return [om.PTAddMetatype] @@ -301,12 +301,18 @@ def get_ignored_metatypes(model_type: ModelType, device: TargetDevice) -> List[O om.PTAddMetatype, om.PTPowerMetatype, om.PTSubMetatype, + om.PTAvgPool2dMetatype, + om.PTAvgPool3dMetatype, om.PTMeanMetatype, om.PTSumMetatype, om.PTReduceL2, om.PTDivMetatype, om.PTMaxMetatype, om.PTSqueezeMetatype, + om.PTLayerNormMetatype, + om.PTModuleLayerNormMetatype, + om.PTGroupNormMetatype, + om.PTModuleGroupNormMetatype, ] if device != TargetDevice.CPU_SPR: types.append(om.PTMulMetatype) diff --git a/nncf/quantization/algorithms/pipeline.py b/nncf/quantization/algorithms/pipeline.py index 951bd436e2b..2c02e3753c6 100644 --- a/nncf/quantization/algorithms/pipeline.py +++ b/nncf/quantization/algorithms/pipeline.py @@ -14,7 +14,10 @@ from nncf.common.factory import NNCFGraphFactory from nncf.common.factory import StatisticsAggregatorFactory from nncf.common.graph.graph import NNCFGraph +from nncf.common.logging import nncf_logger from nncf.common.tensor_statistics.statistic_point import StatisticPointsContainer +from nncf.common.utils.backend import BackendType +from nncf.common.utils.backend import get_backend from nncf.data.dataset import Dataset from nncf.quantization.algorithms.algorithm import Algorithm @@ -108,7 +111,8 @@ def run_step( current_model = model current_graph = graph - pipeline_step = self.pipeline_steps[step_index] + pipeline_steps = self._remove_unsupported_algorithms(get_backend(model)) + pipeline_step = pipeline_steps[step_index] for algorithm in pipeline_step[:-1]: current_model = algorithm.apply(current_model, current_graph, step_statistics) current_graph = NNCFGraphFactory.create(current_model) @@ -138,13 +142,14 @@ def run_from_step( :return: The updated model after executing the pipeline from the specified pipeline step to the end. """ + pipeline_steps = self._remove_unsupported_algorithms(get_backend(model)) if step_index_to_statistics is None: step_index_to_statistics = {} # The `step_model` and `step_graph` entities are required to execute `step_index`-th pipeline step step_model = model step_graph = graph - for step_index in range(start_step_index, len(self.pipeline_steps)): + for step_index in range(start_step_index, len(pipeline_steps)): # Create graph required to run current pipeline step if step_graph is None: step_graph = NNCFGraphFactory.create(step_model) @@ -174,9 +179,26 @@ def get_statistic_points_for_step( :return: Statistics that should be collected to execute `step_index`-th pipeline step. """ container = StatisticPointsContainer() - for algorithm in self.pipeline_steps[step_index]: + pipeline_steps = self._remove_unsupported_algorithms(get_backend(model)) + pipeline_step = pipeline_steps[step_index] + for algorithm in pipeline_step: for statistic_points in algorithm.get_statistic_points(model, graph).values(): for statistic_point in statistic_points: container.add_statistic_point(statistic_point) return container + + def _remove_unsupported_algorithms(self, backend: BackendType) -> List[PipelineStep]: + pipeline_steps = [] + for pipeline_step in self._pipeline_steps: + step = [] + for algorithm in pipeline_step: + if backend not in algorithm.available_backends: + nncf_logger.debug(f"{backend.name} does not support {algorithm.__class__.__name__} algorithm yet.") + continue + step.append(algorithm) + + if step: + pipeline_steps.append(step) + + return pipeline_steps diff --git a/nncf/quantization/algorithms/post_training/algorithm.py b/nncf/quantization/algorithms/post_training/algorithm.py index 5c9a0e7777e..4db613c1bb7 100644 --- a/nncf/quantization/algorithms/post_training/algorithm.py +++ b/nncf/quantization/algorithms/post_training/algorithm.py @@ -9,7 +9,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Callable, Dict, Optional, TypeVar +import itertools +from typing import Callable, List, Optional, TypeVar from nncf import Dataset from nncf.common.graph.graph import NNCFGraph @@ -37,7 +38,7 @@ class PostTrainingQuantization(Algorithm): def __init__( self, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -46,11 +47,12 @@ def __init__( advanced_parameters: Optional[AdvancedQuantizationParameters] = None, ): """ - :param preset: A preset that controls the quantization mode - (symmetric and asymmetric). It can take the following values: + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: - `performance`: Symmetric quantization of weights and activations. - - `mixed`: Symmetric quantization of weights and asymmetric - quantization of activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device. @@ -71,8 +73,11 @@ def __init__( ) @property - def available_backends(self) -> Dict[str, BackendType]: - return + def available_backends(self) -> List[BackendType]: + backends = set(BackendType) + for algorithm in itertools.chain.from_iterable(self._pipeline.pipeline_steps): + backends = backends.intersection(algorithm.available_backends) + return list(backends) def get_statistic_points(self, model: TModel, graph: NNCFGraph) -> StatisticPointsContainer: return self._pipeline.get_statistic_points_for_step(0, model, graph) diff --git a/nncf/quantization/algorithms/post_training/pipeline.py b/nncf/quantization/algorithms/post_training/pipeline.py index 7b522a39724..7d46828023b 100644 --- a/nncf/quantization/algorithms/post_training/pipeline.py +++ b/nncf/quantization/algorithms/post_training/pipeline.py @@ -30,7 +30,7 @@ def create_ptq_pipeline( - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -47,11 +47,12 @@ def create_ptq_pipeline( 3) MinMaxQuantization 4) FastBiasCorrection or BiasCorrection - :param preset: A preset that controls the quantization mode - (symmetric and asymmetric). It can take the following values: + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: - `performance`: Symmetric quantization of weights and activations. - - `mixed`: Symmetric quantization of weights and asymmetric - quantization of activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device. diff --git a/nncf/quantization/algorithms/smooth_quant/algorithm.py b/nncf/quantization/algorithms/smooth_quant/algorithm.py index 780a462d280..8add3315384 100644 --- a/nncf/quantization/algorithms/smooth_quant/algorithm.py +++ b/nncf/quantization/algorithms/smooth_quant/algorithm.py @@ -37,7 +37,6 @@ from nncf.common.utils.backend import BackendType from nncf.common.utils.backend import get_backend from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.smooth_quant.backend import ALGO_BACKENDS TModel = TypeVar("TModel") TTensor = TypeVar("TTensor") @@ -75,8 +74,8 @@ def __init__(self, subset_size: int = 300, inplace_statistics: bool = True, alph self._cached_multiply_names = Counter() @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.OPENVINO] def _set_backend_entity(self, model: TModel) -> None: """ diff --git a/nncf/quantization/algorithms/smooth_quant/backend.py b/nncf/quantization/algorithms/smooth_quant/backend.py index e0ccfc955df..9df70d788b5 100644 --- a/nncf/quantization/algorithms/smooth_quant/backend.py +++ b/nncf/quantization/algorithms/smooth_quant/backend.py @@ -19,12 +19,10 @@ from nncf.common.graph.transformations.commands import TargetPoint from nncf.common.graph.transformations.commands import TargetType from nncf.common.graph.transformations.commands import TransformationCommand -from nncf.common.utils.registry import Registry from nncf.experimental.common.tensor_statistics.collectors import TensorCollector TModel = TypeVar("TModel") TTensor = TypeVar("TTensor") -ALGO_BACKENDS = Registry("algo_backends") class SmoothQuantAlgoBackend(ABC): diff --git a/nncf/quantization/algorithms/smooth_quant/openvino_backend.py b/nncf/quantization/algorithms/smooth_quant/openvino_backend.py index 12005168428..2fe24398c52 100644 --- a/nncf/quantization/algorithms/smooth_quant/openvino_backend.py +++ b/nncf/quantization/algorithms/smooth_quant/openvino_backend.py @@ -18,7 +18,6 @@ from nncf.common.graph import NNCFNode from nncf.common.graph.operator_metatypes import OperatorMetatype from nncf.common.graph.transformations.commands import TargetType -from nncf.common.utils.backend import BackendType from nncf.experimental.common.tensor_statistics.collectors import MaxAggregator from nncf.experimental.common.tensor_statistics.collectors import TensorCollector from nncf.openvino.graph.metatypes.openvino_metatypes import OVMatMulMetatype @@ -30,11 +29,9 @@ from nncf.openvino.graph.transformations.commands import OVWeightUpdateCommand from nncf.openvino.statistics.collectors import OVAbsMaxReducer from nncf.openvino.statistics.collectors import OVNNCFCollectorTensorProcessor -from nncf.quantization.algorithms.smooth_quant.backend import ALGO_BACKENDS from nncf.quantization.algorithms.smooth_quant.backend import SmoothQuantAlgoBackend -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVSmoothQuantAlgoBackend(SmoothQuantAlgoBackend): @property def weighted_metatypes(self) -> List[OperatorMetatype]: diff --git a/nncf/quantization/algorithms/weight_compression/algorithm.py b/nncf/quantization/algorithms/weight_compression/algorithm.py index 1c12cb78791..72693ab59c2 100644 --- a/nncf/quantization/algorithms/weight_compression/algorithm.py +++ b/nncf/quantization/algorithms/weight_compression/algorithm.py @@ -19,7 +19,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List, Optional, TypeVar +from typing import List, Optional, TypeVar from nncf import Dataset from nncf.common.graph.graph import NNCFGraph @@ -30,7 +30,6 @@ from nncf.common.utils.backend import get_backend from nncf.parameters import CompressWeightsMode from nncf.quantization.algorithms.algorithm import Algorithm -from nncf.quantization.algorithms.weight_compression.backend import ALGO_BACKENDS from nncf.scopes import IgnoredScope from nncf.scopes import get_ignored_node_names_from_ignored_scope @@ -75,8 +74,8 @@ def __init__( self._algorithm_key = f"CW_{hash(self)}" @property - def available_backends(self) -> Dict[str, BackendType]: - return ALGO_BACKENDS.registry_dict + def available_backends(self) -> List[BackendType]: + return [BackendType.OPENVINO] def _set_backend_entity(self, model: TModel) -> None: """ diff --git a/nncf/quantization/algorithms/weight_compression/backend.py b/nncf/quantization/algorithms/weight_compression/backend.py index ca07ed299ac..5bc64a2eac0 100644 --- a/nncf/quantization/algorithms/weight_compression/backend.py +++ b/nncf/quantization/algorithms/weight_compression/backend.py @@ -15,12 +15,10 @@ from nncf.common.graph import NNCFNode from nncf.common.graph.operator_metatypes import OperatorMetatype -from nncf.common.utils.registry import Registry from nncf.parameters import CompressWeightsMode from nncf.scopes import IgnoredScope TModel = TypeVar("TModel") -ALGO_BACKENDS = Registry("algo_backends") class WeightCompressionAlgoBackend(ABC): diff --git a/nncf/quantization/algorithms/weight_compression/openvino_backend.py b/nncf/quantization/algorithms/weight_compression/openvino_backend.py index fcbd67fd6ae..18090ca86c2 100644 --- a/nncf/quantization/algorithms/weight_compression/openvino_backend.py +++ b/nncf/quantization/algorithms/weight_compression/openvino_backend.py @@ -19,7 +19,6 @@ from nncf.common.graph import NNCFNode from nncf.common.graph.operator_metatypes import OperatorMetatype from nncf.common.logging import nncf_logger -from nncf.common.utils.backend import BackendType from nncf.common.utils.helpers import create_table from nncf.openvino.graph.metatypes.openvino_metatypes import OVEmbeddingMetatype from nncf.openvino.graph.metatypes.openvino_metatypes import OVMatMulMetatype @@ -27,13 +26,11 @@ from nncf.openvino.graph.node_utils import get_const_value from nncf.openvino.graph.node_utils import get_weight_channel_axes from nncf.parameters import CompressWeightsMode -from nncf.quantization.algorithms.weight_compression.backend import ALGO_BACKENDS from nncf.quantization.algorithms.weight_compression.backend import WeightCompressionAlgoBackend from nncf.quantization.fake_quantize import calculate_scale_zero_point from nncf.scopes import IgnoredScope -@ALGO_BACKENDS.register(BackendType.OPENVINO) class OVWeightCompressionAlgoBackend(WeightCompressionAlgoBackend): @property def weighted_metatypes(self) -> List[OperatorMetatype]: diff --git a/nncf/quantization/passes.py b/nncf/quantization/passes.py index e6af74c8271..b3eb27c18c7 100644 --- a/nncf/quantization/passes.py +++ b/nncf/quantization/passes.py @@ -14,8 +14,6 @@ from nncf.common.graph.graph import NNCFGraph from nncf.common.graph.operator_metatypes import OperatorMetatype -from nncf.common.utils.backend import BackendType -from nncf.common.utils.backend import get_backend TModel = TypeVar("TModel") @@ -23,20 +21,23 @@ def transform_to_inference_graph( nncf_graph: NNCFGraph, shapeof_metatypes: List[OperatorMetatype], + dropout_metatypes: List[OperatorMetatype], read_variable_metatypes: Optional[List[OperatorMetatype]] = None, ) -> NNCFGraph: """ - This method contains pipeline of the passes that uses to provide inference graph without constant flows. + This method contains inplace pipeline of the passes that uses to provide inference graph without constant flows. :param nncf_graph: NNCFGraph instance for the transformation. :param shapeof_metatypes: List of backend-specific ShapeOf metatypes. + :param dropout_metatypes: List of backend-specific Dropout metatypes. :param read_variable_metatypes: List of backend-specific metatypes that also can be interpreted as inputs (ReadValue). :return: NNCFGraph in the inference style. """ - inference_nncf_graph = remove_shapeof_subgraphs(nncf_graph, shapeof_metatypes, read_variable_metatypes) - inference_nncf_graph = filter_constant_nodes(nncf_graph, read_variable_metatypes) - return inference_nncf_graph + remove_shapeof_subgraphs(nncf_graph, shapeof_metatypes, read_variable_metatypes) + remove_nodes_and_reconnect_graph(nncf_graph, dropout_metatypes) + filter_constant_nodes(nncf_graph, read_variable_metatypes) + return nncf_graph def remove_shapeof_subgraphs( @@ -45,7 +46,7 @@ def remove_shapeof_subgraphs( read_variable_metatypes: Optional[List[OperatorMetatype]] = None, ) -> NNCFGraph: """ - Removes the ShapeOf subgraphs from the provided NNCFGraph instance. + Removes the ShapeOf subgraphs from the provided NNCFGraph instance inplace. :param nncf_graph: NNCFGraph instance for the transformation. :param shapeof_metatypes: List of backend-specific ShapeOf metatypes. @@ -88,11 +89,61 @@ def remove_shapeof_subgraphs( return nncf_graph +def remove_nodes_and_reconnect_graph( + nncf_graph: NNCFGraph, + metatypes: List[OperatorMetatype], +) -> NNCFGraph: + """ + Removes nodes with metatypes specified by `metatypes` parameter from + the provided NNCFGraph instance and connects previous node of a matched node + with next nodes of a matched node inplace for each matched node. + Matched nodes should have only one input node and only one output port. + + :param nncf_graph: NNCFGraph instance for the transformation. + :param metatypes: List of backend-specific metatypes. + :return: Resulting NNCFGraph. + """ + if not metatypes: + return nncf_graph + + nodes_to_drop = [] + for node in nncf_graph.get_nodes_by_metatypes(metatypes): + if node.metatype in metatypes: + nodes_to_drop.append(node) + + prev_nodes = nncf_graph.get_previous_nodes(node) + input_edges = nncf_graph.get_input_edges(node) + assert len(prev_nodes) == len(input_edges) == 1 + prev_node = prev_nodes[0] + input_edge = input_edges[0] + assert not input_edge.parallel_input_port_ids + + # nncf_graph.get_next_edges is not used to preserve + # parallel_input_port_ids + for output_node in nncf_graph.get_next_nodes(node): + output_edge = nncf_graph.get_edge(node, output_node) + # Connects previous node with all next nodes + # to keep NNCFGraph connected. + assert input_edge.dtype == output_edge.dtype + assert input_edge.tensor_shape == output_edge.tensor_shape + nncf_graph.add_edge_between_nncf_nodes( + from_node_id=prev_node.node_id, + to_node_id=output_edge.to_node.node_id, + tensor_shape=input_edge.tensor_shape, + input_port_id=output_edge.input_port_id, + output_port_id=input_edge.output_port_id, + dtype=input_edge.dtype, + parallel_input_port_ids=output_edge.parallel_input_port_ids, + ) + nncf_graph.remove_nodes_from(nodes_to_drop) + return nncf_graph + + def filter_constant_nodes( nncf_graph: NNCFGraph, read_variable_metatypes: Optional[List[OperatorMetatype]] = None ) -> NNCFGraph: """ - Removes all Constant nodes from NNCFGraph, making it inference graph. + Removes all Constant nodes from NNCFGraph inplace, making it inference graph. The traversing starts from the input nodes and nodes with weights. :param nncf_graph: NNCFGraph instance for the transformation. @@ -120,19 +171,3 @@ def filter_constant_nodes( constant_nodes = [node for node in nncf_graph.get_all_nodes() if node not in visited_nodes] nncf_graph.remove_nodes_from(constant_nodes) return nncf_graph - - -def insert_null_biases_pass(model: TModel, graph: NNCFGraph) -> TModel: - """ - This pass finds and inserts zero biases to the given model for the layers that should have it. - - :param model: Model instance. - :param graph: NNCFGraph instance. - :return: Updated Model instance with zero biases - """ - model_backend = get_backend(model) - if model_backend == BackendType.OPENVINO: - from nncf.openvino.graph.model_utils import insert_null_biases - - return insert_null_biases(model, graph) - return model diff --git a/nncf/quantization/quantize_model.py b/nncf/quantization/quantize_model.py index 2c64328f6cb..a1bc87caf9b 100644 --- a/nncf/quantization/quantize_model.py +++ b/nncf/quantization/quantize_model.py @@ -38,7 +38,7 @@ def quantize( model: TModel, calibration_dataset: Dataset, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -54,11 +54,12 @@ def quantize( :param calibration_dataset: A representative dataset for the calibration process. :type calibration_dataset: nncf.Dataset - :param preset: A preset that controls the quantization mode - (symmetric and asymmetric). It can take the following values: + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: - `performance`: Symmetric quantization of weights and activations. - - `mixed`: Symmetric quantization of weights and asymmetric - quantization of activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :type preset: nncf.QuantizationPreset :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance @@ -152,7 +153,7 @@ def quantize_with_accuracy_control( validation_fn: Callable[[Any, Iterable[Any]], float], max_drop: float = 0.01, drop_type: DropType = DropType.ABSOLUTE, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -179,7 +180,12 @@ def quantize_with_accuracy_control( :param max_drop: The maximum accuracy drop that should be achieved after the quantization. :param drop_type: The accuracy drop type, which determines how the maximum accuracy drop between the original model and the compressed model is calculated. - :param preset: A preset that controls the quantization mode. + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: + - `performance`: Symmetric quantization of weights and activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :type preset: nncf.QuantizationPreset :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance @@ -288,7 +294,7 @@ def quantize_with_tune_hyperparams( initial_metric_results: MetricResults, quantized_metric_results: MetricResults, tuner_subset_size: int = 300, - preset: QuantizationPreset = QuantizationPreset.PERFORMANCE, + preset: Optional[QuantizationPreset] = None, target_device: TargetDevice = TargetDevice.ANY, subset_size: int = 300, fast_bias_correction: bool = True, @@ -306,7 +312,12 @@ def quantize_with_tune_hyperparams( :param initial_metric_results: Initial metric results. :param quantized_metric_results: Quantized metric results. :param tuner_subset_size: Tuner subset size. - :param preset: A preset that controls the quantization mode. + :param preset: A preset controls the quantization mode (symmetric and asymmetric). + It can take the following values: + - `performance`: Symmetric quantization of weights and activations. + - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + Default value is None. In this case, `mixed` preset is used for `transformer` + model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device. diff --git a/nncf/telemetry/wrapper.py b/nncf/telemetry/wrapper.py index e6a4040a677..fe3421cad0a 100644 --- a/nncf/telemetry/wrapper.py +++ b/nncf/telemetry/wrapper.py @@ -81,7 +81,7 @@ def skip_if_raised(func: Callable[..., None]) -> Callable[..., None]: def wrapped(*args, **kwargs): try: func(*args, **kwargs) - # pylint:disable=broad-except + except Exception as e: nncf_logger.debug(f"Skipped calling {func} - internally triggered exception {e}") @@ -100,7 +100,7 @@ def __init__(self): backend="ga4", enable_opt_in_dialog=False, ) - # pylint:disable=broad-except + except Exception as e: nncf_logger.debug(f"Failed to instantiate telemetry object: exception {e}") diff --git a/nncf/tensorflow/__init__.py b/nncf/tensorflow/__init__.py index e98802e35a9..5c746a67aeb 100644 --- a/nncf/tensorflow/__init__.py +++ b/nncf/tensorflow/__init__.py @@ -11,7 +11,7 @@ """ Base subpackage for NNCF TensorFlow functionality. """ -# pylint:skip-file + import tensorflow from packaging import version diff --git a/nncf/tensorflow/accuracy_aware_training/keras_model_utils.py b/nncf/tensorflow/accuracy_aware_training/keras_model_utils.py index 25763c77e7a..2e485f0ef92 100644 --- a/nncf/tensorflow/accuracy_aware_training/keras_model_utils.py +++ b/nncf/tensorflow/accuracy_aware_training/keras_model_utils.py @@ -38,11 +38,9 @@ def accuracy_aware_fit( if result_dict_to_val_metric_fn is None: result_dict_to_val_metric_fn = lambda metric: metric - # pylint:disable=line-too-long with cls_instance.distribute_strategy.scope(), tf_internals.keras_engine.training_utils.RespectCompiledTrainableState( # noqa: E501 cls_instance ): - # pylint: disable=protected-access data_handler = tf_internals.keras_engine.data_adapter.DataHandler( x=train_dataset, y=None, diff --git a/nncf/tensorflow/accuracy_aware_training/runner.py b/nncf/tensorflow/accuracy_aware_training/runner.py index ac3444e058b..7e39165271e 100644 --- a/nncf/tensorflow/accuracy_aware_training/runner.py +++ b/nncf/tensorflow/accuracy_aware_training/runner.py @@ -13,7 +13,7 @@ import tensorflow as tf import tensorflow_addons as tfa -from tensorflow.keras.optimizers import schedules # pylint:disable=no-name-in-module +from tensorflow.keras.optimizers import schedules from nncf.common.accuracy_aware_training.runner import BaseAccuracyAwareTrainingRunner from nncf.common.accuracy_aware_training.runner import BaseAdaptiveCompressionLevelTrainingRunner diff --git a/nncf/tensorflow/callbacks/statistics_callback.py b/nncf/tensorflow/callbacks/statistics_callback.py index cfbbecb30a1..446e997f528 100644 --- a/nncf/tensorflow/callbacks/statistics_callback.py +++ b/nncf/tensorflow/callbacks/statistics_callback.py @@ -45,11 +45,11 @@ def __init__( if log_tensorboard: if log_dir is None: raise ValueError("log_dir must be specified if log_tensorboard is true.") - # pylint: disable=no-member + self._file_writer = tf.summary.create_file_writer(log_dir + "/compression") def _dump_to_tensorboard(self, logs: dict, step: int): - with self._file_writer.as_default(): # pylint: disable=E1129 + with self._file_writer.as_default(): for name, value in logs.items(): tf.summary.scalar(name, value, step=step) diff --git a/nncf/tensorflow/graph/converter.py b/nncf/tensorflow/graph/converter.py index 9b9a6a3607a..3708b1c83e7 100644 --- a/nncf/tensorflow/graph/converter.py +++ b/nncf/tensorflow/graph/converter.py @@ -598,7 +598,6 @@ def convert(self) -> NNCFGraph: ) node_name_vs_nncf_node_ids[node_name] = nncf_node.node_id - # pylint:disable=protected-access if layer in self._model._output_layers: output_idx = self._model._output_layers.index(layer) output_node_id_vs_model_output_idx[nncf_node.node_id] = output_idx diff --git a/nncf/tensorflow/graph/model_transformer.py b/nncf/tensorflow/graph/model_transformer.py index e0ef7647d2d..210835f4446 100644 --- a/nncf/tensorflow/graph/model_transformer.py +++ b/nncf/tensorflow/graph/model_transformer.py @@ -156,7 +156,6 @@ def _insert(self, target_point: Union[TargetPoint, TFMultiLayerPoint], insertion else: raise TypeError("Insertion transform does not support {} target point type".format(target_point.type)) - # pylint:disable=too-many-branches def _shared_insert_layers(self, target_points: List[TargetPoint], layers_to_insert: List[Callable]): functional_model = is_functional_model(self._model) if functional_model: diff --git a/nncf/tensorflow/helpers/model_creation.py b/nncf/tensorflow/helpers/model_creation.py index e8d842a1685..653142347df 100644 --- a/nncf/tensorflow/helpers/model_creation.py +++ b/nncf/tensorflow/helpers/model_creation.py @@ -86,7 +86,7 @@ def create_compressed_model( "`tensorflow_hub.KerasLayer` layer yet." ) - from nncf.experimental.tensorflow.nncf_network import NNCFNetwork # pylint: disable=cyclic-import + from nncf.experimental.tensorflow.nncf_network import NNCFNetwork input_signature = get_input_signature(config) model = NNCFNetwork(model, input_signature) diff --git a/nncf/tensorflow/pruning/tensor_processor.py b/nncf/tensorflow/pruning/tensor_processor.py index f472a5c2b11..7e00722cfdd 100644 --- a/nncf/tensorflow/pruning/tensor_processor.py +++ b/nncf/tensorflow/pruning/tensor_processor.py @@ -25,7 +25,6 @@ class TFNNCFPruningTensorProcessor(NNCFPruningBaseTensorProcessor): @classmethod def concatenate(cls, tensors: List[NNCFTensor], axis: int) -> NNCFTensor: - # pylint: disable=E1120,E1123 ret_tensor = tf.concat([t.tensor for t in tensors], axis=axis) return TFNNCFTensor(ret_tensor) @@ -51,7 +50,6 @@ def elementwise_mask_propagation(cls, input_masks: List[NNCFTensor]) -> NNCFTens @classmethod def split(cls, tensor: NNCFTensor, output_shapes: List[int]) -> List[NNCFTensor]: - # pylint: disable=E1120 chunks = len(output_shapes) ret_tensors = tf.split(tensor.tensor, chunks) return [TFNNCFTensor(ret_tensor) for ret_tensor in ret_tensors] diff --git a/nncf/tensorflow/quantization/quantize_model.py b/nncf/tensorflow/quantization/quantize_model.py index 4d726d88651..ca72fb301a4 100644 --- a/nncf/tensorflow/quantization/quantize_model.py +++ b/nncf/tensorflow/quantization/quantize_model.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Any, Dict, Optional +from typing import Any, Dict, Optional, Union import tensorflow as tf @@ -53,7 +53,7 @@ def batch_size(self) -> int: if isinstance(batch_size, tf.Tensor): batch_size = batch_size.numpy() batch_size = int(batch_size) - except: # pylint: disable=W0702 # noqa: E722 + except: # noqa: E722 batch_size = 1 return batch_size @@ -133,7 +133,7 @@ def _create_nncf_config( def quantize_impl( model: tf.Module, calibration_dataset: Dataset, - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, fast_bias_correction: bool, @@ -157,6 +157,9 @@ def quantize_impl( if target_device == TargetDevice.CPU_SPR: raise RuntimeError("target_device == CPU_SPR is not supported.") + if preset is None: + preset = QuantizationPreset.PERFORMANCE + nncf_config = _create_nncf_config(preset, target_device, subset_size, ignored_scope, advanced_parameters) calibration_data_loader = CalibrationDataLoader(calibration_dataset) diff --git a/nncf/tensorflow/tensor_statistics/collectors.py b/nncf/tensorflow/tensor_statistics/collectors.py index a8c3da70a8b..feb78047b4b 100644 --- a/nncf/tensorflow/tensor_statistics/collectors.py +++ b/nncf/tensorflow/tensor_statistics/collectors.py @@ -92,7 +92,7 @@ def stack(x: Union[List[tf.Tensor], Deque[tf.Tensor]], axis: int = 0) -> NNCFTen @staticmethod def unstack(x: NNCFTensor, axis: int = 0) -> List[NNCFTensor]: tensor = x.tensor - if list(tensor.shape) == []: # pylint: disable=C1803 + if list(tensor.shape) == []: tensor = tf.expand_dims(tensor, 0) tensor_list = tf.unstack(tensor, axis=axis) return [TFNNCFTensor(t) for t in tensor_list] diff --git a/nncf/tensorflow/tf_internals.py b/nncf/tensorflow/tf_internals.py index 94b6ca13534..b326556af6b 100644 --- a/nncf/tensorflow/tf_internals.py +++ b/nncf/tensorflow/tf_internals.py @@ -9,9 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=unused-import -# pylint: disable=import-error -# pylint: disable=no-name-in-module from keras import backend as backend from keras import layers as layers diff --git a/nncf/tensorflow/utils/state.py b/nncf/tensorflow/utils/state.py index bd0413171ca..9c439ca69e6 100644 --- a/nncf/tensorflow/utils/state.py +++ b/nncf/tensorflow/utils/state.py @@ -16,9 +16,9 @@ from nncf.common.compression import BaseCompressionAlgorithmController - # TODO(achurkin): remove pylint ignore after 120296 ticked is fixed -# pylint: disable=abstract-method + + class TFCompressionState(tf.train.experimental.PythonState): """ A wrapper for `BaseCompressionAlgorithmController` that allows saving diff --git a/nncf/torch/__init__.py b/nncf/torch/__init__.py index f62e8e33fe8..8910cdc95a5 100644 --- a/nncf/torch/__init__.py +++ b/nncf/torch/__init__.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. # isort: off -# pylint: skip-file + """ Base subpackage for NNCF PyTorch functionality. """ diff --git a/nncf/torch/algo_selector.py b/nncf/torch/algo_selector.py index 3f5dab59e64..dc513843bd6 100644 --- a/nncf/torch/algo_selector.py +++ b/nncf/torch/algo_selector.py @@ -56,7 +56,6 @@ def _handle_frozen_layers(self, target_model: NNCFNetwork): pass -# pylint:disable=abstract-method class NoCompressionAlgorithmController(PTCompressionAlgorithmController): def __init__(self, target_model): super().__init__(target_model) diff --git a/nncf/torch/automl/environment/quantization_env.py b/nncf/torch/automl/environment/quantization_env.py index 59de15e524a..017378d7a23 100644 --- a/nncf/torch/automl/environment/quantization_env.py +++ b/nncf/torch/automl/environment/quantization_env.py @@ -126,7 +126,6 @@ def __init__( class QuantizationEnv: - # pylint:disable=too-many-branches,too-many-statements def __init__( self, model: NNCFNetwork, diff --git a/nncf/torch/binarization/algo.py b/nncf/torch/binarization/algo.py index 998c4d6ecf1..6db1e61bdc3 100644 --- a/nncf/torch/binarization/algo.py +++ b/nncf/torch/binarization/algo.py @@ -119,7 +119,7 @@ def __init__(self, target_model: NNCFNetwork, config: NNCFConfig): scheduler_cls = QUANTIZATION_SCHEDULERS.get("staged") algo_config = extract_algo_specific_config(config, "binarization") self._scheduler = scheduler_cls(self, algo_config.get("params", {})) - from nncf.torch.utils import is_main_process # pylint: disable=cyclic-import + from nncf.torch.utils import is_main_process if is_main_process(): self._compute_and_display_flops_binarization_rate() diff --git a/nncf/torch/binarization/binarize_functions.py b/nncf/torch/binarization/binarize_functions.py index 2225ffee78e..664ed94bd27 100644 --- a/nncf/torch/binarization/binarize_functions.py +++ b/nncf/torch/binarization/binarize_functions.py @@ -12,7 +12,7 @@ from typing import Any import torch -from torch.onnx.symbolic_helper import _is_constant # pylint:disable=protected-access +from torch.onnx.symbolic_helper import _is_constant from nncf.common.logging import nncf_logger from nncf.torch.binarization.extensions import BinarizedFunctionsCUDA @@ -36,7 +36,6 @@ def _unsqueeze_helper(g, input_, axes_i): return g.op("Unsqueeze", input_, axes_i=axes_i[0]) -# pylint:disable=abstract-method class XNORBinarizeFn(torch.autograd.Function): """Binarizes x into `scale` * { +1; -1}, where +1 or -1 are chosen based on whether the x element value is >0 or <0. `scale` is determined as mean of absolute @@ -68,7 +67,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_outputs[0] -# pylint:disable=abstract-method class DOREFABinarizeFn(torch.autograd.Function): """Binarizes x into `scale` * { +1; -1}, where +1 or -1 are chosen based on whether the x element value is >0 or <0. `scale` is determined as mean of absolute @@ -101,7 +99,8 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: # Activation binarization function -# pylint:disable=abstract-method + + class ActivationBinarizationScaleThresholdFn(torch.autograd.Function): @staticmethod def symbolic(g, x, scale, threshold): diff --git a/nncf/torch/binarization/extensions.py b/nncf/torch/binarization/extensions.py index be71fd99ec3..6e518429968 100644 --- a/nncf/torch/binarization/extensions.py +++ b/nncf/torch/binarization/extensions.py @@ -63,7 +63,7 @@ def load(cls): ) except ExtensionLoaderTimeoutException as e: raise e - except Exception as e: # pylint:disable=broad-except + except Exception as e: nncf_logger.warning( f"Could not compile CPU binarization extensions. " f"Falling back on torch native operations - " diff --git a/nncf/torch/checkpoint_loading.py b/nncf/torch/checkpoint_loading.py index 7931b200094..62e95c1bbd4 100644 --- a/nncf/torch/checkpoint_loading.py +++ b/nncf/torch/checkpoint_loading.py @@ -45,7 +45,7 @@ def load_state( model_state_dict = model.state_dict() - from nncf.torch.utils import maybe_convert_legacy_names_in_model_state # pylint: disable=cyclic-import + from nncf.torch.utils import maybe_convert_legacy_names_in_model_state maybe_convert_legacy_names_in_model_state(state_dict_to_load) key_matcher = KeyMatcher(is_resume, state_dict_to_load, model_state_dict, keys_to_ignore) diff --git a/nncf/torch/dynamic_graph/context.py b/nncf/torch/dynamic_graph/context.py index 9d9e1a645c3..d57e042af1e 100644 --- a/nncf/torch/dynamic_graph/context.py +++ b/nncf/torch/dynamic_graph/context.py @@ -86,7 +86,6 @@ def __deepcopy__(self, memo): return CopySafeThreadingVars() -# pylint: disable=too-many-public-methods class TracingContext: def __init__(self): self.graph = DynamicGraph() @@ -473,7 +472,7 @@ def disable_tracing(method): :param method: A method to patch. """ - def no_nncf_trace_wrapper(self, fn, *args, **kwargs): # pylint: disable=unused-argument + def no_nncf_trace_wrapper(self, fn, *args, **kwargs): with no_nncf_trace(): return fn(*args, **kwargs) diff --git a/nncf/torch/dynamic_graph/graph.py b/nncf/torch/dynamic_graph/graph.py index bdfdf647820..5aef6f4b6c1 100644 --- a/nncf/torch/dynamic_graph/graph.py +++ b/nncf/torch/dynamic_graph/graph.py @@ -524,7 +524,7 @@ def __init__(self, node_id_to_key_dict, nx_graph): # TODO: optimize by matching exact module type @staticmethod def _within_iteration(scope: Scope): - from nncf.torch.layers import ITERATION_MODULES # pylint: disable=cyclic-import + from nncf.torch.layers import ITERATION_MODULES for scope_element in scope.scope_elements: if scope_element.calling_module_class_name in ITERATION_MODULES.registry_dict: @@ -645,8 +645,8 @@ def add_node( op_address, tensor_metas, input_comparators_per_scope, inputs, node_parameters ) - from nncf.common.graph.definitions import MODEL_INPUT_OP_NAME # pylint: disable=cyclic-import - from nncf.common.graph.definitions import MODEL_OUTPUT_OP_NAME # pylint: disable=cyclic-import + from nncf.common.graph.definitions import MODEL_INPUT_OP_NAME + from nncf.common.graph.definitions import MODEL_OUTPUT_OP_NAME if node.op_exec_context.operator_name == MODEL_INPUT_OP_NAME: self._input_nncf_nodes.append(node) diff --git a/nncf/torch/dynamic_graph/graph_tracer.py b/nncf/torch/dynamic_graph/graph_tracer.py index 3da1bf41f3d..aa93f34788a 100644 --- a/nncf/torch/dynamic_graph/graph_tracer.py +++ b/nncf/torch/dynamic_graph/graph_tracer.py @@ -102,7 +102,7 @@ def trace_graph( context_to_use = TracingContext() context_to_use.enable_trace_dynamic_graph() - from nncf.torch.utils import training_mode_switcher # pylint: disable=cyclic-import + from nncf.torch.utils import training_mode_switcher with context_to_use as _ctx: _ctx.base_module_thread_local_replica = model @@ -126,13 +126,9 @@ def create_dummy_forward_fn( with_output_tracing=False, ): def default_dummy_forward_fn(model): - from nncf.torch.dynamic_graph.io_handling import replicate_same_tensors # pylint: disable=cyclic-import - from nncf.torch.dynamic_graph.io_handling import ( - wrap_nncf_model_inputs_with_objwalk, # pylint: disable=cyclic-import - ) - from nncf.torch.dynamic_graph.io_handling import ( - wrap_nncf_model_outputs_with_objwalk, # pylint: disable=cyclic-import - ) + from nncf.torch.dynamic_graph.io_handling import replicate_same_tensors + from nncf.torch.dynamic_graph.io_handling import wrap_nncf_model_inputs_with_objwalk + from nncf.torch.dynamic_graph.io_handling import wrap_nncf_model_outputs_with_objwalk device = get_model_device(model) args_list = [create_mock_tensor(info, device) for info in input_infos if info.keyword is None] diff --git a/nncf/torch/dynamic_graph/op_input_processing.py b/nncf/torch/dynamic_graph/op_input_processing.py index 135002368e1..f4b7a96a067 100644 --- a/nncf/torch/dynamic_graph/op_input_processing.py +++ b/nncf/torch/dynamic_graph/op_input_processing.py @@ -30,7 +30,6 @@ def __init__(self, op_args, op_kwargs): op_args_index_entries = NestedObjectIndex(self.op_args, previous_level_setter=partial(setattr, self, "op_args")) op_kwargs_index_entries = NestedObjectIndex(self.op_kwargs) - # pylint:disable=unnecessary-comprehension self._index = { idx: entry for idx, entry in enumerate( diff --git a/nncf/torch/dynamic_graph/patch_pytorch.py b/nncf/torch/dynamic_graph/patch_pytorch.py index f17901a6989..cf4e24ff9a0 100644 --- a/nncf/torch/dynamic_graph/patch_pytorch.py +++ b/nncf/torch/dynamic_graph/patch_pytorch.py @@ -42,7 +42,6 @@ def get_namespace_to_patch(namespace_target: NamespaceTarget) -> object: def get_namespace_to_extract_functions_from(namespace_target: NamespaceTarget) -> object: - # pylint: disable=protected-access if namespace_target == NamespaceTarget.TORCH_NN_FUNCTIONAL: return torch.nn.functional if namespace_target == NamespaceTarget.TORCH_TENSOR: @@ -50,7 +49,6 @@ def get_namespace_to_extract_functions_from(namespace_target: NamespaceTarget) - if namespace_target == NamespaceTarget.TORCH: return torch._C._VariableFunctions raise RuntimeError("{} namespace wasn't found in {}".format(namespace_target, NamespaceTarget)) - # pylint: enable=protected-access class FunctionsToPatchWithoutTracing: @@ -194,7 +192,7 @@ def torch_jit_script_wrapper(*args, **kwargs): def rcb_wrapper(name): value = rcb(name) if hasattr(value, "_original_op"): - value = value._original_op # pylint: disable=protected-access + value = value._original_op return value kwargs["_rcb"] = rcb_wrapper @@ -211,7 +209,6 @@ def torch_jit_trace_make_module_wrapper(*args, **kwargs): def torch_jit_script_if_tracing(fn): - # pylint: disable=protected-access @functools.wraps(fn) def wrapper(*args, **kwargs): if not is_tracing(): @@ -244,7 +241,7 @@ def __init__(self, name: str, namespace, op): def patch_torch_jit(): # This import statement is required, otherwise we get a # "RuntimeError: undefined value torch" inside the real torch.jit.script - # pylint:disable=unused-import,redefined-outer-name,reimported,protected-access + import torch global _ORIG_JIT_SCRIPT diff --git a/nncf/torch/dynamic_graph/scope.py b/nncf/torch/dynamic_graph/scope.py index fa9770ad7ac..abc5c3da040 100644 --- a/nncf/torch/dynamic_graph/scope.py +++ b/nncf/torch/dynamic_graph/scope.py @@ -97,7 +97,7 @@ def from_str(string: str) -> "Scope": def get_iteration_scopes(self) -> List[str]: results = [] - from nncf.torch.layers import ITERATION_MODULES # pylint: disable=cyclic-import + from nncf.torch.layers import ITERATION_MODULES for scope_element in self.scope_elements: if scope_element.calling_module_class_name in ITERATION_MODULES.registry_dict: diff --git a/nncf/torch/dynamic_graph/scope_access.py b/nncf/torch/dynamic_graph/scope_access.py index 9837e1b9444..f84d9e6b0fb 100644 --- a/nncf/torch/dynamic_graph/scope_access.py +++ b/nncf/torch/dynamic_graph/scope_access.py @@ -23,7 +23,7 @@ def get_module_by_scope(model: torch.nn.Module, scope: Scope) -> Optional[torch. # The module used is being created in-place every time and never stored in the model, # happens for nn.Softmax in BERT implementations. return None - # pylint: disable=protected-access + next_module = curr_module._modules.get(scope_element.calling_field_name) if next_module is None: raise RuntimeError( diff --git a/nncf/torch/dynamic_graph/trace_tensor.py b/nncf/torch/dynamic_graph/trace_tensor.py index a776185aa44..18b9c750168 100644 --- a/nncf/torch/dynamic_graph/trace_tensor.py +++ b/nncf/torch/dynamic_graph/trace_tensor.py @@ -60,7 +60,7 @@ class TracedTensor(torch.Tensor): def from_torch_tensor(tensor, tensor_meta: TensorMeta): tensor.tensor_meta = tensor_meta tensor.__class__ = TracedTensor - # pylint:disable=protected-access + tensor._nncf_expired = False return tensor @@ -85,14 +85,14 @@ def as_subclass(self, cls: "TracedTensor") -> "TracedTensor": # NOTE: This disables the __torch_function__ API altogether when using NNCF. # TODO: make NNCF utilize the __torch_function__ API instead. - # pylint:disable=protected-access + if hasattr(torch._C, "_disabled_torch_function_impl"): __torch_function__ = torch._C._disabled_torch_function_impl def is_iterable(item): non_iterable_types = (str, bytes, bytearray, torch.Tensor, np.ndarray) - # pylint:disable=isinstance-second-argument-not-valid-type + return isinstance(item, Iterable) and not isinstance(item, non_iterable_types) diff --git a/nncf/torch/dynamic_graph/wrappers.py b/nncf/torch/dynamic_graph/wrappers.py index 33a1122020c..ee0a74355bb 100644 --- a/nncf/torch/dynamic_graph/wrappers.py +++ b/nncf/torch/dynamic_graph/wrappers.py @@ -81,7 +81,7 @@ def wrapped(*args, **kwargs): if operator_info.skip_trace: result = operator(*args, **kwargs) elif ctx.is_forwarding: - from nncf.torch.dynamic_graph.trace_functions import forward_trace_only # pylint: disable=cyclic-import + from nncf.torch.dynamic_graph.trace_functions import forward_trace_only result = forward_trace_only(operator, *args, **kwargs) else: @@ -112,14 +112,13 @@ def wrapped(*args, **kwargs): ctx.in_operator = False return result - # pylint: disable=protected-access wrapped._original_op = operator wrapped._operator_namespace = operator_info.operator_namespace return wrapped def wrap_module_call(module_call): - from nncf.torch.dynamic_graph.patch_pytorch import ORIGINAL_OPERATORS # pylint: disable=cyclic-import + from nncf.torch.dynamic_graph.patch_pytorch import ORIGINAL_OPERATORS NAMES_ORIGINAL_OPERATORS = [op.name for op in ORIGINAL_OPERATORS] @@ -199,7 +198,7 @@ def _collect_module_attrs_and_ignored_algorithms( ) -> Tuple[BaseLayerAttributes, List[str]]: layer_attrs = None ignored_algos = [] - from nncf.torch.graph.operator_metatypes import OP_NAMES_WITH_WEIGHTS # pylint:disable=cyclic-import + from nncf.torch.graph.operator_metatypes import OP_NAMES_WITH_WEIGHTS if op_name in OP_NAMES_WITH_WEIGHTS: curr_module = ctx.get_current_module() diff --git a/nncf/torch/exporter.py b/nncf/torch/exporter.py index 624457aed70..8f4d531d8f1 100644 --- a/nncf/torch/exporter.py +++ b/nncf/torch/exporter.py @@ -143,7 +143,7 @@ def _export_to_onnx(self, save_path: str, opset_version: int) -> None: input_names = self._input_names else: input_names = generate_input_names_list(len(input_tensor_list)) - # pylint:disable=unexpected-keyword-arg + with torch.no_grad(): # Should call this, otherwise the operations executed during export will end up in the graph. model.nncf.disable_dynamic_graph_building() diff --git a/nncf/torch/extensions/__init__.py b/nncf/torch/extensions/__init__.py index e4eab098dfc..c0549f5cf8b 100644 --- a/nncf/torch/extensions/__init__.py +++ b/nncf/torch/extensions/__init__.py @@ -101,7 +101,6 @@ def get(self, fn_name: str) -> Callable: async_result = pool.apply_async(self._loader.load) self._loaded_namespace = async_result.get(timeout=timeout) except MPTimeoutError as error: - # pylint: disable=line-too-long msg = textwrap.dedent( f"""\ The extension load function failed to execute within {timeout} seconds. diff --git a/nncf/torch/functions.py b/nncf/torch/functions.py index 13ee1438325..035e3966e96 100644 --- a/nncf/torch/functions.py +++ b/nncf/torch/functions.py @@ -21,7 +21,6 @@ def logit(x): return torch.log(x / (1 - x)) -# pylint:disable=abstract-method class STRound(torch.autograd.Function): @staticmethod def symbolic(g, input_, inplace=False): @@ -37,7 +36,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_outputs[0] -# pylint:disable=abstract-method class STThreshold(torch.autograd.Function): @staticmethod def forward(ctx, input_, threshold: float = 0.5): diff --git a/nncf/torch/graph/graph_builder.py b/nncf/torch/graph/graph_builder.py index 993bc6a21f4..14bb2326cbe 100644 --- a/nncf/torch/graph/graph_builder.py +++ b/nncf/torch/graph/graph_builder.py @@ -43,7 +43,6 @@ def build_graph( class GraphConverter: @staticmethod def convert(dynamic_graph: DynamicGraph, input_infos: List[ModelInputInfo] = None) -> PTNNCFGraph: - # pylint:disable=too-many-branches module_id_vs_known_op_addrs_map: Dict[int, Set[Scope]] = defaultdict(set) for dynamic_graph_node in dynamic_graph.get_all_nodes(): module_id_vs_known_op_addrs_map[dynamic_graph_node.calling_module_id].add( diff --git a/nncf/torch/graph/operator_metatypes.py b/nncf/torch/graph/operator_metatypes.py index 484685667bf..a05b8b7d85d 100644 --- a/nncf/torch/graph/operator_metatypes.py +++ b/nncf/torch/graph/operator_metatypes.py @@ -29,7 +29,6 @@ PT_OPERATOR_METATYPES = OperatorMetatypeRegistry("operator_metatypes") -# pylint: disable=too-many-lines class PTOperatorMetatype(OperatorMetatype): """ Base class for grouping PyTorch operators based on their semantic meaning. diff --git a/nncf/torch/graph/pattern_operations.py b/nncf/torch/graph/pattern_operations.py index 68611050081..7e0eb1d61b9 100644 --- a/nncf/torch/graph/pattern_operations.py +++ b/nncf/torch/graph/pattern_operations.py @@ -72,7 +72,7 @@ } # This type may be useful in the future -# pylint: disable=unused-variable + POOLING_OPERATIONS = { GraphPattern.METATYPE_ATTR: ["adaptive_avg_pool2d", "adaptive_avg_pool3d", "avg_pool2d", "avg_pool3d"], GraphPattern.LABEL_ATTR: "POOLING", diff --git a/nncf/torch/layers.py b/nncf/torch/layers.py index 134845ad128..c4e671bcb8b 100644 --- a/nncf/torch/layers.py +++ b/nncf/torch/layers.py @@ -38,7 +38,6 @@ def dict_update(src: Dict, dst: Dict, recursive: bool = True): def maybe_reapply_weight_norm(src: torch.nn.Module, dst: torch.nn.Module) -> torch.nn.Module: - # pylint:disable=protected-access for k, hook in src._forward_pre_hooks.items(): if isinstance(hook, WeightNorm): # The code below presumes that the `hook` object does not @@ -676,7 +675,6 @@ def forward(self, input_, hidden, batch_sizes): if flat_hidden: hidden = (hidden,) with forward_nncf_trace(): - # pylint:disable=unnecessary-comprehension batch_size_elements = [b for b in batch_sizes] for batch_size in batch_size_elements: step_input = input_[input_offset : input_offset + batch_size] diff --git a/nncf/torch/model_creation.py b/nncf/torch/model_creation.py index 45652a702a6..d6a28e8f938 100644 --- a/nncf/torch/model_creation.py +++ b/nncf/torch/model_creation.py @@ -33,8 +33,6 @@ from nncf.torch.compression_method_api import PTCompressionAlgorithmBuilder from nncf.torch.dynamic_graph.graph_tracer import create_input_infos from nncf.torch.nncf_network import NNCFNetwork - -# pylint:disable=too-many-branches from nncf.torch.utils import is_dist_avail_and_initialized from nncf.torch.utils import is_main_process from nncf.torch.utils import maybe_convert_legacy_names_in_compress_state @@ -143,7 +141,7 @@ def create_compressed_model( try: if is_legacy_model_state_dict: - from nncf.torch import load_state # pylint: disable=cyclic-import + from nncf.torch import load_state state_dict_to_load = compression_state.get("state_dict", compression_state) load_state(compressed_model, state_dict_to_load, is_resume=True) diff --git a/nncf/torch/nested_objects_traversal.py b/nncf/torch/nested_objects_traversal.py index 5736fab0b04..8fa02139405 100644 --- a/nncf/torch/nested_objects_traversal.py +++ b/nncf/torch/nested_objects_traversal.py @@ -33,10 +33,10 @@ def is_named_tuple(obj) -> bool: def maybe_get_iterator(obj): it = None - # pylint:disable=isinstance-second-argument-not-valid-type + if isinstance(obj, Mapping): it = iteritems - # pylint:disable=isinstance-second-argument-not-valid-type + elif isinstance(obj, (Sequence, Set)) and not isinstance(obj, string_types): it = enumerate return it @@ -120,8 +120,7 @@ def objwalk(obj, unary_predicate: Callable[[Any], bool], apply_fn: Callable, mem Walks through the indexable container hierarchy of obj and replaces all sub-objects matching a criterion with the result of a given function application. """ - # pylint:disable=too-many-nested-blocks - # pylint:disable=too-many-branches + if memo is None: memo = set() @@ -129,7 +128,7 @@ def objwalk(obj, unary_predicate: Callable[[Any], bool], apply_fn: Callable, mem named_tuple_fields = None if is_named_tuple(obj): named_tuple_class = obj.__class__ - # pylint:disable=protected-access + named_tuple_fields = obj._fields was_tuple = is_tuple(obj) diff --git a/nncf/torch/nncf_module_replacement.py b/nncf/torch/nncf_module_replacement.py index 281ea83255a..fdaaaf0d8bd 100644 --- a/nncf/torch/nncf_module_replacement.py +++ b/nncf/torch/nncf_module_replacement.py @@ -246,7 +246,6 @@ def _replace_module_by_scope(base_model: torch.nn.Module, scope: Scope, replaced curr_module = base_model owning_module = base_model for scope_element in scope[1:]: # omit first scope element which corresponds to base module - # pylint: disable=protected-access child_module = curr_module._modules.get(scope_element.calling_field_name) if child_module is None: raise RuntimeError( @@ -265,7 +264,6 @@ def _replace_module_by_scope(base_model: torch.nn.Module, scope: Scope, replaced nncf_logger.debug(f"Extending module at {str(scope)}...") last_calling_field_name = scope[-1].calling_field_name if isinstance(owning_module, nn.Sequential): - # pylint:disable=protected-access owning_module._modules[last_calling_field_name] = replaced_module else: setattr(owning_module, last_calling_field_name, replaced_module) diff --git a/nncf/torch/nncf_network.py b/nncf/torch/nncf_network.py index 9d0d5bdcf8c..191dff642ee 100644 --- a/nncf/torch/nncf_network.py +++ b/nncf/torch/nncf_network.py @@ -8,7 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=too-many-lines + import functools import inspect import types @@ -128,7 +128,6 @@ class NNCFNetworkInterface(torch.nn.Module): when saving/loading checkpoints """ - # pylint:disable=too-many-public-methods MODEL_STATE_VERSION_ATTR = "_nncf_model_state_version" MODEL_STATE_VERSION = 1 @@ -360,8 +359,8 @@ def reset_nncf_modules(self): def get_clean_shallow_copy(self) -> "NNCFNetwork": # WARNING: Will reset pre- and post-ops of the underlying model. Use save_nncf_module_additions # and load_nncf_module_additions to preserve these, or temporary_clean_view(). - from nncf.torch.utils import load_module_state # pylint: disable=cyclic-import - from nncf.torch.utils import save_module_state # pylint: disable=cyclic-import + from nncf.torch.utils import load_module_state + from nncf.torch.utils import save_module_state saved_state = save_module_state(self._model_ref) new_interface = NNCFNetworkInterface( @@ -374,7 +373,7 @@ def get_clean_shallow_copy(self) -> "NNCFNetwork": self._target_scopes, wrap_outputs_fn=self._wrap_outputs_fn, ) - self._model_ref._nncf = new_interface # pylint:disable=protected-access + self._model_ref._nncf = new_interface self._model_ref.nncf.reset_nncf_modules() load_module_state(self._model_ref, saved_state) return self._model_ref @@ -562,7 +561,7 @@ def sort_compression_modules(self, compression_module_type: ExtraCompressionModu if compression_module_type not in self._extra_module_types: raise RuntimeError("Module type {} was not registered".format(compression_module_type)) module_dict = self.__getattr__(attr_name) - # pylint: disable=protected-access + module_dict._modules = OrderedDict(sorted(module_dict._modules.items())) self.__setattr__(attr_name, module_dict) @@ -817,7 +816,7 @@ def __call__( ignored_scopes, target_scopes, wrap_outputs_fn, - ) # pylint:disable=protected-access + ) # The new class will also have an adjusted metaclass to avoid a "metaclass conflict" upon # class creation original_metaclass = type(original_model.__class__) @@ -853,7 +852,7 @@ def __call__( # its forward method, which it effectively doesn't have. Employing a special iterator allows to hide the # NNCFInterface object during iteration. def nncf_safe_iter(self: torch.nn.Sequential): - return NNCFSkippingIter(iter(self._modules.values())) # pylint:disable=protected-access + return NNCFSkippingIter(iter(self._modules.values())) original_model.__class__.__iter__ = nncf_safe_iter return original_model @@ -925,7 +924,7 @@ def forward(self, *args, **kwargs): Wraps the original forward call, doing additional actions before and after the call to facilitate model graph tracing and calling compression-related hooks. """ - # pylint:disable=protected-access + with self.nncf._compressed_context as ctx: ctx.base_module_thread_local_replica = self args, kwargs = replicate_same_tensors((args, kwargs)) @@ -1012,7 +1011,6 @@ class LoadStateListener: """ def __init__(self, model: "NNCFNetwork", all_quantizations: Dict[str, torch.nn.Module]): - # pylint: disable=protected-access self.hook = model._register_load_state_dict_pre_hook( functools.partial(self.hook_fn, quantize_modules=list(all_quantizations.values())) ) diff --git a/nncf/torch/pruning/base_algo.py b/nncf/torch/pruning/base_algo.py index 79c7fbe9924..7bf6cffaedb 100644 --- a/nncf/torch/pruning/base_algo.py +++ b/nncf/torch/pruning/base_algo.py @@ -54,7 +54,7 @@ def __init__(self, config, should_init: bool = True): self._prunable_types = self.get_op_types_of_pruned_modules() - from nncf.common.pruning.node_selector import PruningNodeSelector # pylint: disable=cyclic-import + from nncf.common.pruning.node_selector import PruningNodeSelector self.pruning_node_selector = PruningNodeSelector( PT_PRUNING_OPERATOR_METATYPES, diff --git a/nncf/torch/pruning/filter_pruning/algo.py b/nncf/torch/pruning/filter_pruning/algo.py index b59aad5817c..316310e481c 100644 --- a/nncf/torch/pruning/filter_pruning/algo.py +++ b/nncf/torch/pruning/filter_pruning/algo.py @@ -128,7 +128,6 @@ def __init__( pruned_norms_operators: List[Tuple[NNCFNode, FilterPruningMask, torch.nn.Module]], config: NNCFConfig, ): - # pylint:disable=too-many-statements super().__init__(target_model, prunable_types, pruned_module_groups, config) params = self.pruning_config.get("params", {}) self._pruned_norms_operators = pruned_norms_operators diff --git a/nncf/torch/quantization/adjust_padding.py b/nncf/torch/quantization/adjust_padding.py index 2a114f235bf..9af55732655 100644 --- a/nncf/torch/quantization/adjust_padding.py +++ b/nncf/torch/quantization/adjust_padding.py @@ -66,8 +66,6 @@ def is_config_applicable(qconfig: QuantizerConfig): def add_adjust_padding_nodes(bitwidth_graph: nx.DiGraph, model: NNCFNetwork) -> nx.DiGraph(): - # pylint:disable=protected-access - NewNodeArgs = namedtuple("NewNodeArgs", ("node_key", "attr", "parent_node_key")) nncf_graph = model.nncf.get_graph() args = [] diff --git a/nncf/torch/quantization/algo.py b/nncf/torch/quantization/algo.py index f0aad112574..8f99260679d 100644 --- a/nncf/torch/quantization/algo.py +++ b/nncf/torch/quantization/algo.py @@ -8,7 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines + """ Contains builder and controller class definitions for the quantization algorithm. """ @@ -347,9 +347,7 @@ def generate_setup(self) -> SingleConfigQuantizerSetup: insertion_point_graph = self._target_model.nncf.get_insertion_point_graph() if self._debug_interface: self._debug_interface.visualize_insertion_point_graph(insertion_point_graph) - from nncf.common.quantization.quantizer_propagation.solver import ( - QuantizerPropagationSolver, # pylint: disable=cyclic-import - ) + from nncf.common.quantization.quantizer_propagation.solver import QuantizerPropagationSolver scales_unification_map = {PTCatMetatype: UNIFICATION_PRODUCING_METATYPES} ignored_scopes_for_solver = { @@ -648,7 +646,7 @@ def _get_transformation_layout(self, target_model: NNCFNetwork) -> PTTransformat # NOTE: Order of activations must be the same to correctly broadcast parameters (e.g. scales) in distributed # mode (see call of `_dist_broadcast_coalesced` in torch/nn/parallel/distributed.py for more details) - # pylint: disable=protected-access + target_model.nncf.sort_compression_modules(ExtraCompressionModuleType.EXTERNAL_QUANTIZER) if self._debug_interface is not None: @@ -707,7 +705,6 @@ def _get_single_config_quantizer_setup(self, target_model) -> SingleConfigQuanti self._build_time_metric_infos = setup_generator.get_build_time_metric_infos() return single_config_quantizer_setup - # pylint: disable=too-many-branches def _get_quantizer_setup(self, target_model: NNCFNetwork) -> PTQuantizerSetup: if self._legacy_single_config_quantizer_setup_from_comp_state is None: single_config_quantizer_setup = self._get_single_config_quantizer_setup(target_model) @@ -1136,8 +1133,6 @@ def _quantize_at_points_by_single_module( insertion commands registering this module for quantization at spots described by insertion_points. """ - # pylint:disable=too-many-branches - # pylint:disable=too-many-statements target_model_graph = target_model.nncf.get_original_graph() if not insertion_points: diff --git a/nncf/torch/quantization/debug_interface.py b/nncf/torch/quantization/debug_interface.py index 1f048be8ff5..2772546eded 100644 --- a/nncf/torch/quantization/debug_interface.py +++ b/nncf/torch/quantization/debug_interface.py @@ -46,7 +46,7 @@ def __init__(self): } self.graph_size = 0 - from nncf.common.utils.debug import DEBUG_LOG_DIR # pylint: disable=cyclic-import + from nncf.common.utils.debug import DEBUG_LOG_DIR self.dump_dir = Path(DEBUG_LOG_DIR) / Path("debug_dumps") self.dump_dir.mkdir(parents=True, exist_ok=True) @@ -78,7 +78,7 @@ def pre_forward_actions(self, module: NNCFNetwork): def post_forward_actions(self, module: NNCFNetwork): self.register_forward_call() - # pylint:disable=protected-access + ctx = module.nncf.get_tracing_context() self.set_graph_size(ctx.graph.get_nodes_count()) diff --git a/nncf/torch/quantization/extensions.py b/nncf/torch/quantization/extensions.py index 1ade5a28225..e59abde027b 100644 --- a/nncf/torch/quantization/extensions.py +++ b/nncf/torch/quantization/extensions.py @@ -63,7 +63,7 @@ def load(cls): ) except ExtensionLoaderTimeoutException as e: raise e - except Exception as e: # pylint:disable=broad-except + except Exception as e: nncf_logger.warning( f"Could not compile CPU quantization extensions. " f"Falling back on torch native operations - " diff --git a/nncf/torch/quantization/ignored_patterns.py b/nncf/torch/quantization/ignored_patterns.py index d4816cc482e..0565d9a8083 100644 --- a/nncf/torch/quantization/ignored_patterns.py +++ b/nncf/torch/quantization/ignored_patterns.py @@ -11,6 +11,8 @@ from nncf.common.graph.patterns.patterns import GraphPattern from nncf.common.graph.patterns.patterns import IgnoredPatternNames from nncf.common.utils.registry import Registry +from nncf.torch.graph.pattern_operations import ATOMIC_ACTIVATIONS_OPERATIONS +from nncf.torch.graph.pattern_operations import LINEAR_OPERATIONS PT_IGNORED_PATTERNS = Registry("IGNORED_PATTERNS") @@ -67,8 +69,15 @@ def _add_softmax_reshape_matmul( @PT_IGNORED_PATTERNS.register(IgnoredPatternNames.MULTIHEAD_ATTENTION_OUTPUT) def create_multihead_attention_output() -> GraphPattern: - matmul_aliases = ["linear", "addmm", "matmul", "bmm", "mm", "baddbmm"] - reshape_squeeze_aliases = ["reshape", "view", "flatten", "squeeze", "unsqueeze", "squeeze", "flatten", "unsqueeze"] + matmul_aliases = ["linear", "addmm", "matmul", "bmm", "mm", "baddbmm", "__matmul__"] + reshape_squeeze_aliases = [ + "reshape", + "view", + "flatten", + "unsqueeze", + "squeeze", + "unbind", + ] gather_aliases = ["gather", "index_select", "where", "index_select", "__getitem__"] transpose_aliases = ["transpose", "permute", "transpose_"] @@ -88,3 +97,126 @@ def create_multihead_attention_output() -> GraphPattern: transpose_aliases=transpose_aliases, ) return pattern + + +# pylint:disable=too-many-statements +@PT_IGNORED_PATTERNS.register(IgnoredPatternNames.SE_BLOCK) +def create_se_block() -> GraphPattern: + MEAN_OPERATIONS = { + GraphPattern.LABEL_ATTR: "REDUCE_MEAN", + GraphPattern.METATYPE_ATTR: ["avg_pool2d", "adaptive_avg_pool2d", "avg_pool3d", "adaptive_avg_pool3d", "mean"], + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + SYGMOID_OPERATIONS = { + GraphPattern.LABEL_ATTR: "SIGMOID", + GraphPattern.METATYPE_ATTR: ["sigmoid", "hardsigmoid"], + } + MUL_OPERATION = { + GraphPattern.LABEL_ATTR: "MUL", + GraphPattern.METATYPE_ATTR: "__mul__", + GraphPattern.PATTERN_NODE_TO_EXCLUDE: True, + } + + def get_se_block_pattern() -> GraphPattern: + pattern = GraphPattern() + any_node = pattern.add_node(label="NON_PATTERN_NODE", type=GraphPattern.NON_PATTERN_NODE_TYPE) + reduce_mean_node = pattern.add_node(**MEAN_OPERATIONS) + linear_node_1 = pattern.add_node(**LINEAR_OPERATIONS) + activation_node_1 = pattern.add_node(**ATOMIC_ACTIVATIONS_OPERATIONS) + linear_node_2 = pattern.add_node(**LINEAR_OPERATIONS) + activation_node_2 = pattern.add_node(**SYGMOID_OPERATIONS) + multiply_node = pattern.add_node(**MUL_OPERATION) + + pattern.add_edge(any_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, linear_node_1) + pattern.add_edge(linear_node_1, activation_node_1) + pattern.add_edge(activation_node_1, linear_node_2) + pattern.add_edge(linear_node_2, activation_node_2) + pattern.add_edge(activation_node_2, multiply_node) + pattern.add_edge(any_node, multiply_node) + return pattern + + def get_se_block_with_bias_pattern() -> GraphPattern: + pattern = GraphPattern() + any_node = pattern.add_node(label="NON_PATTERN_NODE", type=GraphPattern.NON_PATTERN_NODE_TYPE) + reduce_mean_node = pattern.add_node(**MEAN_OPERATIONS) + linear_node_1 = pattern.add_node(**LINEAR_OPERATIONS) + add_node_1 = pattern.add_node(label="ADD_BIAS", type=["__add__", "__sub__"]) + activation_node_1 = pattern.add_node(**ATOMIC_ACTIVATIONS_OPERATIONS) + linear_node_2 = pattern.add_node(**LINEAR_OPERATIONS) + add_node_2 = pattern.add_node(label="ADD_BIAS", type=["__add__", "__sub__"]) + activation_node_2 = pattern.add_node(**SYGMOID_OPERATIONS) + multiply_node = pattern.add_node(**MUL_OPERATION) + + pattern.add_edge(any_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, linear_node_1) + pattern.add_edge(linear_node_1, add_node_1) + pattern.add_edge(add_node_1, activation_node_1) + pattern.add_edge(activation_node_1, linear_node_2) + pattern.add_edge(linear_node_2, add_node_2) + pattern.add_edge(add_node_2, activation_node_2) + pattern.add_edge(activation_node_2, multiply_node) + pattern.add_edge(any_node, multiply_node) + return pattern + + RESHAPE_NODES = { + GraphPattern.LABEL_ATTR: "RESHAPE", + GraphPattern.METATYPE_ATTR: ["reshape", "view", "flatten", "unsqueeze"], + } + + def get_se_block_with_reshape() -> GraphPattern: + pattern = GraphPattern() + any_node = pattern.add_node(label="NON_PATTERN_NODE", type=GraphPattern.NON_PATTERN_NODE_TYPE) + reduce_mean_node = pattern.add_node(**MEAN_OPERATIONS) + reshape_node_1 = pattern.add_node(**RESHAPE_NODES) + linear_node_1 = pattern.add_node(**LINEAR_OPERATIONS) + activation_node_1 = pattern.add_node(**ATOMIC_ACTIVATIONS_OPERATIONS) + linear_node_2 = pattern.add_node(**LINEAR_OPERATIONS) + activation_node_2 = pattern.add_node(**SYGMOID_OPERATIONS) + reshape_node_2 = pattern.add_node(**RESHAPE_NODES) + multiply_node = pattern.add_node(**MUL_OPERATION) + + pattern.add_edge(any_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, reshape_node_1) + pattern.add_edge(reshape_node_1, linear_node_1) + pattern.add_edge(linear_node_1, activation_node_1) + pattern.add_edge(activation_node_1, linear_node_2) + pattern.add_edge(linear_node_2, activation_node_2) + pattern.add_edge(activation_node_2, reshape_node_2) + pattern.add_edge(reshape_node_2, multiply_node) + pattern.add_edge(any_node, multiply_node) + return pattern + + def get_se_block_with_bias_and_reshape() -> GraphPattern: + pattern = GraphPattern() + any_node = pattern.add_node(label="NON_PATTERN_NODE", type=GraphPattern.NON_PATTERN_NODE_TYPE) + reduce_mean_node = pattern.add_node(**MEAN_OPERATIONS) + reshape_node_1 = pattern.add_node(**RESHAPE_NODES) + linear_node_1 = pattern.add_node(**LINEAR_OPERATIONS) + add_node_1 = pattern.add_node(label="ADD_BIAS", type=["__add__", "__sub__"]) + activation_node_1 = pattern.add_node(**ATOMIC_ACTIVATIONS_OPERATIONS) + linear_node_2 = pattern.add_node(**LINEAR_OPERATIONS) + add_node_2 = pattern.add_node(label="ADD_BIAS", type=["__add__", "__sub__"]) + activation_node_2 = pattern.add_node(**SYGMOID_OPERATIONS) + reshape_node_2 = pattern.add_node(**RESHAPE_NODES) + multiply_node = pattern.add_node(**MUL_OPERATION) + + pattern.add_edge(any_node, reduce_mean_node) + pattern.add_edge(reduce_mean_node, reshape_node_1) + pattern.add_edge(reshape_node_1, linear_node_1) + pattern.add_edge(linear_node_1, add_node_1) + pattern.add_edge(add_node_1, activation_node_1) + pattern.add_edge(activation_node_1, linear_node_2) + pattern.add_edge(linear_node_2, add_node_2) + pattern.add_edge(add_node_2, activation_node_2) + pattern.add_edge(activation_node_2, reshape_node_2) + pattern.add_edge(reshape_node_2, multiply_node) + pattern.add_edge(any_node, multiply_node) + return pattern + + main_pattern = GraphPattern() + main_pattern.add_pattern_alternative(get_se_block_pattern()) + main_pattern.add_pattern_alternative(get_se_block_with_bias_pattern()) + main_pattern.add_pattern_alternative(get_se_block_with_reshape()) + main_pattern.add_pattern_alternative(get_se_block_with_bias_and_reshape()) + return main_pattern diff --git a/nncf/torch/quantization/layers.py b/nncf/torch/quantization/layers.py index fafd1353918..b0f815c55de 100644 --- a/nncf/torch/quantization/layers.py +++ b/nncf/torch/quantization/layers.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines from abc import ABC from abc import abstractmethod @@ -281,7 +280,6 @@ def add_quantization_point(self, qp_id: QuantizationPointId, qp: PTQuantizationP class BaseQuantizer(nn.Module, ABC): - # pylint:disable=too-many-public-methods def __init__(self, qspec: PTQuantizerSpec): super().__init__() self._narrow_range = qspec.narrow_range @@ -315,7 +313,6 @@ class LoadStateListener: """ def __init__(self, module): - # pylint: disable=protected-access self.hook = module._register_load_state_dict_pre_hook(partial(self.hook_fn, module=module)) def hook_fn( diff --git a/nncf/torch/quantization/metrics.py b/nncf/torch/quantization/metrics.py index fc7d6adcc0c..ea83f45ff0b 100644 --- a/nncf/torch/quantization/metrics.py +++ b/nncf/torch/quantization/metrics.py @@ -171,7 +171,7 @@ def collect(self) -> MemoryConsumptionStatistics: memory_consumption_fp_model = {} memory_consumption_compressed_model = {} - # pylint: disable=protected-access + original_nx_graph = original_graph._nx_graph nx.set_edge_attributes(original_nx_graph, 32, "precision") @@ -191,7 +191,6 @@ def collect(self) -> MemoryConsumptionStatistics: return stats def _get_precision_for_activation_tensor(self, u_node: str, v_node: str, original_nx_graph: nx.DiGraph) -> int: - # pylint: disable=protected-access pred_u_nodes = original_nx_graph._pred[u_node] precision_enter_activation_tensor = max( [0] + [original_nx_graph.edges[pred_u_node, u_node]["precision"] for pred_u_node in pred_u_nodes] @@ -241,18 +240,16 @@ def __init__( self._target_device = target_device def collect(self) -> QuantizationConfigurationStatistics: - # pylint: disable=too-many-branches merged_original_graph = self.get_merged_original_graph_with_patterns( self._compressed_model.nncf.get_original_graph() ) self.stats.quantized_edges_in_cfg = 0 nx.set_edge_attributes(merged_original_graph, False, self.QUANTIZED_EDGES_ATTR) nx.set_edge_attributes(merged_original_graph, False, self.PASSED_EDGES_ATTR) - # pylint: disable=protected-access + input_nodes = [node for node in merged_original_graph.nodes if len(merged_original_graph._pred[node]) == 0] queue = deque() for input_node in input_nodes: - # pylint: disable=protected-access next_nodes = merged_original_graph._succ[input_node] for next_node_key in next_nodes: edge = merged_original_graph.edges[input_node, next_node_key] @@ -261,7 +258,7 @@ def collect(self) -> QuantizationConfigurationStatistics: self.stats.quantized_edges_in_cfg += 1 queue.appendleft(next_node_key) visited_nodes = {} - # pylint: disable=too-many-nested-blocks + while len(queue) != 0: node_key = queue.pop() if node_key in visited_nodes: @@ -310,7 +307,6 @@ def collect(self) -> QuantizationConfigurationStatistics: return self.stats def _all_enter_edges_in_node_of_type(self, graph, node_key, type_edge): - # pylint: disable=protected-access prev_nodes = graph._pred[node_key] retval = True for prev_node_key in prev_nodes: @@ -321,7 +317,6 @@ def _all_enter_edges_in_node_of_type(self, graph, node_key, type_edge): return retval def _marking_edges(self, graph, node_key, queue, mark=True): - # pylint: disable=protected-access next_nodes = graph._succ[node_key] for next_node_key in next_nodes: edge = graph.edges[node_key, next_node_key] @@ -333,7 +328,7 @@ def _marking_edges(self, graph, node_key, queue, mark=True): def get_merged_original_graph_with_patterns(self, original_graph: PTNNCFGraph): pattern = PatternsManager.get_full_hw_pattern_graph(backend=BackendType.TORCH, device=self._target_device) - # pylint: disable=protected-access + matches = find_subgraphs_matching_pattern(original_graph._nx_graph, pattern) merged_graph = deepcopy(original_graph._nx_graph) nx.set_node_attributes(merged_graph, False, self.IS_MERGED_GRAPH_ATTR) @@ -357,7 +352,7 @@ def get_merged_original_graph_with_patterns(self, original_graph: PTNNCFGraph): merged_nodes = [] for node_key in match: merged_node_key += node_key + "\n" - # pylint: disable=protected-access + merged_nodes.append(original_graph._nx_graph.nodes[node_key]) merged_graph.remove_node(node_key) merged_node_attrs = { diff --git a/nncf/torch/quantization/precision_init/autoq_init.py b/nncf/torch/quantization/precision_init/autoq_init.py index 4a4a176e677..a6bc3dadaed 100644 --- a/nncf/torch/quantization/precision_init/autoq_init.py +++ b/nncf/torch/quantization/precision_init/autoq_init.py @@ -119,8 +119,8 @@ def __init__( self._hw_cfg_type = params.hw_cfg_type def apply_init(self) -> SingleConfigQuantizerSetup: - from nncf.common.utils.debug import DEBUG_LOG_DIR # pylint: disable=cyclic-import - from nncf.torch.automl.environment.quantization_env import QuantizationEnv # pylint: disable=cyclic-import + from nncf.common.utils.debug import DEBUG_LOG_DIR + from nncf.torch.automl.environment.quantization_env import QuantizationEnv if self._dump_autoq_data or is_debug(): dump_dir = self._init_args.config.get("log_dir", None) @@ -153,9 +153,7 @@ def apply_init(self) -> SingleConfigQuantizerSetup: start_ts = datetime.now() - from nncf.torch.automl.environment.quantization_env import ( - QuantizationEnvParams, # pylint: disable=cyclic-import - ) + from nncf.torch.automl.environment.quantization_env import QuantizationEnvParams env_params = QuantizationEnvParams( compression_ratio=self._params.compression_ratio, @@ -217,7 +215,6 @@ def apply_init(self) -> SingleConfigQuantizerSetup: return final_quantizer_setup def _search(self, agent: DDPG, env: "QuantizationEnv") -> Tuple[pd.Series, float]: # noqa: F821 - # pylint: disable=too-many-branches,too-many-statements best_reward = -math.inf episode = 0 episode_reward = 0.0 diff --git a/nncf/torch/quantization/precision_init/bitwidth_graph.py b/nncf/torch/quantization/precision_init/bitwidth_graph.py index 0416a6fc533..cd1faf732ac 100644 --- a/nncf/torch/quantization/precision_init/bitwidth_graph.py +++ b/nncf/torch/quantization/precision_init/bitwidth_graph.py @@ -33,8 +33,6 @@ def __init__( groups_of_adjacent_quantizers: GroupsOfAdjacentQuantizers, add_flops=False, ): - # pylint:disable=too-many-branches - # pylint:disable=too-many-statements nncf_graph = model.nncf.get_graph() self._nx_graph = nncf_graph.get_graph_for_structure_analysis() if add_flops: @@ -127,7 +125,6 @@ def _paint_activation_quantizer_node( bitwidth_color_map: Dict[int, str], groups_of_adjacent_quantizers: GroupsOfAdjacentQuantizers, ): - # pylint:disable=too-many-branches affected_insertion_points_list = quantizer_info.affected_insertions for target_point in affected_insertion_points_list: diff --git a/nncf/torch/quantization/precision_init/hawq_debug.py b/nncf/torch/quantization/precision_init/hawq_debug.py index 694ea76c501..2ebef87350a 100644 --- a/nncf/torch/quantization/precision_init/hawq_debug.py +++ b/nncf/torch/quantization/precision_init/hawq_debug.py @@ -25,8 +25,6 @@ from nncf.torch.quantization.adjust_padding import add_adjust_padding_nodes from nncf.torch.quantization.layers import QUANTIZATION_MODULES from nncf.torch.quantization.precision_init.adjacent_quantizers import GroupsOfAdjacentQuantizers - -# pylint:disable=unused-import from nncf.torch.quantization.precision_init.definitions import QConfigSequenceForHAWQToEvaluate from nncf.torch.quantization.precision_init.perturbations import PerturbationObserver from nncf.torch.quantization.precision_init.perturbations import Perturbations @@ -47,7 +45,7 @@ def __init__( self._num_weights = len(traces_per_layer.traces_order) self._perturbations = perturbations - from nncf.common.utils.debug import DEBUG_LOG_DIR # pylint: disable=cyclic-import + from nncf.common.utils.debug import DEBUG_LOG_DIR self._dump_dir = Path(DEBUG_LOG_DIR) / Path("hawq_dumps") self._dump_dir.mkdir(parents=True, exist_ok=True) @@ -220,7 +218,7 @@ def dump_bitwidth_graph( model: NNCFNetwork, groups_of_adjacent_quantizers: GroupsOfAdjacentQuantizers, ): - from nncf.torch.quantization.precision_init.bitwidth_graph import BitwidthGraph # pylint: disable=cyclic-import + from nncf.torch.quantization.precision_init.bitwidth_graph import BitwidthGraph bw_graph = BitwidthGraph(algo_ctrl, model, groups_of_adjacent_quantizers).get() nx_graph = add_adjust_padding_nodes(bw_graph, model) diff --git a/nncf/torch/quantization/precision_init/hawq_init.py b/nncf/torch/quantization/precision_init/hawq_init.py index c21cdd684a8..36741f47c15 100644 --- a/nncf/torch/quantization/precision_init/hawq_init.py +++ b/nncf/torch/quantization/precision_init/hawq_init.py @@ -354,7 +354,7 @@ def apply_init(self) -> SingleConfigQuantizerSetup: groups_of_adjacent_quantizers = new_ctrl.groups_of_adjacent_quantizers hawq_debugger.dump_bitwidth_graph(new_ctrl, new_model, groups_of_adjacent_quantizers) bitwidth_per_scope = self.get_bitwidth_per_scope(final_quantizer_setup) - from nncf.common.utils.debug import DEBUG_LOG_DIR # pylint: disable=cyclic-import + from nncf.common.utils.debug import DEBUG_LOG_DIR Path(DEBUG_LOG_DIR).mkdir(parents=True, exist_ok=True) with safe_open(Path(DEBUG_LOG_DIR) / "bitwidth_per_scope.json", "w") as outfile: diff --git a/nncf/torch/quantization/quantize_functions.py b/nncf/torch/quantization/quantize_functions.py index a82721b4c59..47091e032f7 100644 --- a/nncf/torch/quantization/quantize_functions.py +++ b/nncf/torch/quantization/quantize_functions.py @@ -21,7 +21,6 @@ from nncf.torch.utils import add_domain -# pylint:disable=abstract-method class QuantizeSymmetric(torch.autograd.Function): @staticmethod def forward(ctx, input_, scale, level_low, level_high, levels): @@ -73,7 +72,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_input, grad_scale, None, None, None -# pylint:disable=abstract-method class QuantizeAsymmetric(torch.autograd.Function): @staticmethod def forward(ctx, input_, input_low, input_range, level_low, level_high, levels): @@ -133,7 +131,6 @@ def _quantize_autograd_to_range(input_, input_low, input_high, levels): return output -# pylint:disable=abstract-method class ExportQuantizeToFakeQuantize(torch.autograd.Function): @staticmethod def symbolic( @@ -160,7 +157,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_outputs[0] -# pylint:disable=abstract-method class ExportQuantizeToONNXQuantDequant(torch.autograd.Function): @staticmethod def symbolic(g, input_, y_scale, y_zero_point, axis): @@ -212,7 +208,6 @@ def asymmetric_quantize(input_, levels, level_low, level_high, input_low, input_ return QuantizeAsymmetric.apply(input_, input_low_tuned, input_range_tuned, level_low, level_high, levels) -# pylint:disable=abstract-method class TuneRange(torch.autograd.Function): """ Makes sure that the zero-point quantum in the quantized domain points exactly to floating point zero, diff --git a/nncf/torch/quantization/quantize_model.py b/nncf/torch/quantization/quantize_model.py index 6c6e0c747c8..c37d69c3204 100644 --- a/nncf/torch/quantization/quantize_model.py +++ b/nncf/torch/quantization/quantize_model.py @@ -10,7 +10,7 @@ # limitations under the License. from copy import deepcopy -from typing import Any, Dict, Optional, Tuple +from typing import Any, Dict, Optional, Tuple, Union import torch @@ -81,17 +81,22 @@ def _get_length(iterable) -> int: return length -def _get_transformer_quantization_config(subset_size: int) -> Dict[str, Any]: +def _get_transformer_quantization_config(preset: QuantizationPreset, subset_size: int) -> Dict[str, Any]: """ Returns the quantization config for transformer-based models. + :param preset: A preset that controls the quantization mode + (symmetric and asymmetric). It can take the following values: + - `performance`: Symmetric quantization of weights and activations. + - `mixed`: Symmetric quantization of weights and asymmetric + quantization of activations. :param subset_size: Size of a subset to calculate activations statistics used for quantization. :return: The quantization config for transformer-based models. """ return { "algorithm": "quantization", - "preset": "mixed", + "preset": preset.value, "initializer": { "range": {"num_init_samples": subset_size, "type": DEFAULT_RANGE_TYPE}, "batchnorm_adaptation": {"num_bn_adaptation_samples": 0}, @@ -133,12 +138,12 @@ def _get_default_quantization_config(preset: QuantizationPreset, subset_size: in def _create_nncf_config( - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, - model_type: Optional[ModelType], - ignored_scope: Optional[IgnoredScope], - advanced_parameters: Optional[AdvancedQuantizationParameters], + model_type: Union[ModelType, None], + ignored_scope: Union[IgnoredScope, None], + advanced_parameters: Union[AdvancedQuantizationParameters, None], ) -> NNCFConfig: """ Creates the NNCFConfig for the quantization algorithm. @@ -148,6 +153,7 @@ def _create_nncf_config( - `performance`: Symmetric quantization of weights and activations. - `mixed`: Symmetric quantization of weights and asymmetric quantization of activations. + - `None`: `mixed` preset is used for `transformer` model type otherwise `performace`. :param target_device: A target device the specificity of which will be taken into account while compressing in order to obtain the best performance for this type of device. @@ -161,10 +167,16 @@ def _create_nncf_config( fine-tuning the quantization algorithm. :return: NNCFConfig for the quantization algorithm. """ - if model_type is None: + if preset is None: + if model_type == ModelType.TRANSFORMER: + preset = QuantizationPreset.MIXED + else: + preset = QuantizationPreset.PERFORMANCE + + if model_type == ModelType.TRANSFORMER: + compression_config = _get_transformer_quantization_config(preset, subset_size) + else: compression_config = _get_default_quantization_config(preset, subset_size) - elif model_type == ModelType.TRANSFORMER: - compression_config = _get_transformer_quantization_config(subset_size) if ignored_scope is not None: _ignored_scope = convert_ignored_scope_to_list(ignored_scope) @@ -186,7 +198,7 @@ def _create_nncf_config( def quantize_impl( model: torch.nn.Module, calibration_dataset: Dataset, - preset: QuantizationPreset, + preset: Union[QuantizationPreset, None], target_device: TargetDevice, subset_size: int, fast_bias_correction: bool, diff --git a/nncf/torch/sparsity/rb/algo.py b/nncf/torch/sparsity/rb/algo.py index dfaa3151a26..6e0f17de14a 100644 --- a/nncf/torch/sparsity/rb/algo.py +++ b/nncf/torch/sparsity/rb/algo.py @@ -84,7 +84,6 @@ def __init__(self, target_model: NNCFNetwork, sparsified_module_info: List[Spars def set_sparsity_level(self, sparsity_level, target_sparsified_module_info: SparseModuleInfo = None): if target_sparsified_module_info is None: - # pylint:disable=no-value-for-parameter self._loss.set_target_sparsity_loss(sparsity_level) else: sparse_op = target_sparsified_module_info.operand diff --git a/nncf/torch/sparsity/rb/layers.py b/nncf/torch/sparsity/rb/layers.py index e3d17145e73..f6d32872a8a 100644 --- a/nncf/torch/sparsity/rb/layers.py +++ b/nncf/torch/sparsity/rb/layers.py @@ -54,7 +54,6 @@ def loss(self): class MaskCalculationHook: def __init__(self, module): - # pylint: disable=protected-access self.hook = module._register_state_dict_hook(self.hook_fn) def hook_fn(self, module, destination, prefix, local_metadata): diff --git a/nncf/torch/tensor_statistics/collectors.py b/nncf/torch/tensor_statistics/collectors.py index 4089fb77f2e..9b23a3e1209 100644 --- a/nncf/torch/tensor_statistics/collectors.py +++ b/nncf/torch/tensor_statistics/collectors.py @@ -43,7 +43,6 @@ from nncf.torch.tensor_statistics.statistics import PTPercentileTensorStatistic -# pylint: disable=too-many-public-methods class PTNNCFCollectorTensorProcessor(NNCFCollectorTensorProcessor): """ A realization of the processing methods for PTNNCFTensors. @@ -139,7 +138,7 @@ def stack(x: Union[List[NNCFTensor], Deque[NNCFTensor]], axis: int = 0) -> NNCFT @staticmethod def unstack(x: NNCFTensor, axis: int = 0) -> List[NNCFTensor]: tensor = x.tensor - if list(tensor.shape) == []: # pylint: disable=C1803 + if list(tensor.shape) == []: tensor = tensor.unsqueeze(0) tensor_list = torch.unbind(tensor, dim=axis) return [PTNNCFTensor(t) for t in tensor_list] diff --git a/nncf/torch/utils.py b/nncf/torch/utils.py index 646e939282e..8e3a735d6be 100644 --- a/nncf/torch/utils.py +++ b/nncf/torch/utils.py @@ -114,13 +114,11 @@ def manual_seed(seed): def is_tracing_state(): - # pylint: disable=protected-access return torch._C._get_tracing_state() is not None class no_jit_trace: def __enter__(self): - # pylint: disable=protected-access self.state = torch._C._get_tracing_state() torch._C._set_tracing_state(None) @@ -282,7 +280,7 @@ def compute_FLOPs_hook(module, input_, output, dict_to_save, module_node_name: N def add_domain(name_operator: str) -> str: - from nncf.torch.compression_method_api import DOMAIN_CUSTOM_OPS_NAME # pylint: disable=cyclic-import + from nncf.torch.compression_method_api import DOMAIN_CUSTOM_OPS_NAME return DOMAIN_CUSTOM_OPS_NAME + "::" + name_operator @@ -383,7 +381,7 @@ def maybe_convert_legacy_names_in_compress_state(compression_state: Dict[str, An if not controller_state or "quantization" not in controller_state: return - from nncf.torch.quantization.algo import QUANTIZER_BUILDER_STATE_VERSION_SAVE_NAME # pylint: disable=cyclic-import + from nncf.torch.quantization.algo import QUANTIZER_BUILDER_STATE_VERSION_SAVE_NAME if not controller_state["quantization"].get(QUANTIZER_BUILDER_STATE_VERSION_SAVE_NAME): qips = controller_state["quantization"]["quantizer_setup"]["quantization_points"] diff --git a/nncf/version.py b/nncf/version.py index 6fa2e735ef1..d86a60048ec 100644 --- a/nncf/version.py +++ b/nncf/version.py @@ -11,6 +11,6 @@ __version__ = "2.6.0" -BKC_TORCH_VERSION = "2.0.1" -BKC_TORCHVISION_VERSION = "0.15.1" +BKC_TORCH_VERSION = "2.1.1" +BKC_TORCHVISION_VERSION = "0.16.0" BKC_TF_VERSION = "2.12.*" diff --git a/setup.py b/setup.py index 5790546f50c..7663a33a528 100644 --- a/setup.py +++ b/setup.py @@ -106,7 +106,7 @@ def find_version(*file_paths): "natsort>=7.1.0", "networkx>=2.6, <=2.8.2", # see ticket 94048 or https://github.com/networkx/networkx/issues/5962 "ninja>=1.10.0.post2, <1.11", - "numpy>=1.19.1, <1.25", + "numpy>=1.19.1, <1.27", "openvino-telemetry>=2023.2.0", "packaging>=20.0", "pandas>=1.1.5,<2.1", @@ -134,7 +134,7 @@ def find_version(*file_paths): ] TORCH_EXTRAS = [ - "torch>=1.13.0,<2.1;python_version < '3.11'", + "torch>=2.0,<2.2;python_version < '3.11'", ] ONNX_EXTRAS = ["onnx~=1.13.1", "onnxruntime~=1.14.1;python_version < '3.11'"] diff --git a/tests/common/accuracy_control/test_evaluator.py b/tests/common/accuracy_control/test_evaluator.py index 080a24a5ab6..07085b2966c 100644 --- a/tests/common/accuracy_control/test_evaluator.py +++ b/tests/common/accuracy_control/test_evaluator.py @@ -83,7 +83,6 @@ def test_determine_mode(ts: TestCase): def _validation_fn(dummy_model, dummy_dataset): return (ts.metric_value, ts.values_for_each_item) - # pylint: disable=W0212 if ts.raise_exception: with pytest.raises(RuntimeError): _ = Evaluator.determine_mode(None, Dataset([None]), _validation_fn) diff --git a/tests/common/conftest.py b/tests/common/conftest.py index 656c5a25b69..8d504511550 100644 --- a/tests/common/conftest.py +++ b/tests/common/conftest.py @@ -9,5 +9,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=unused-import + from tests.shared.logging import nncf_caplog # noqa: F401 diff --git a/tests/common/data/reference_graphs/passes/dropout_synthetic_model_after.dot b/tests/common/data/reference_graphs/passes/dropout_synthetic_model_after.dot new file mode 100644 index 00000000000..bb1b1c72b51 --- /dev/null +++ b/tests/common/data/reference_graphs/passes/dropout_synthetic_model_after.dot @@ -0,0 +1,19 @@ +strict digraph { +"0 /Input_1_0" [id=0, type=Input_1]; +"1 /Split_1_0" [id=1, type=Split_1]; +"5 /Output_1_0" [id=5, type=Output_1]; +"6 /Output_2_1_0" [id=6, type=Output_2_1]; +"7 /Output_2_2_0" [id=7, type=Output_2_2]; +"8 /Output_2_3_0" [id=8, type=Output_2_3]; +"9 /Output_3_0" [id=9, type=Output_3]; +"10 /Output_2_4_0" [id=10, type=output]; +"11 /Output_3_1_0" [id=11, type=output]; +"0 /Input_1_0" -> "1 /Split_1_0"; +"1 /Split_1_0" -> "5 /Output_1_0"; +"1 /Split_1_0" -> "6 /Output_2_1_0"; +"1 /Split_1_0" -> "7 /Output_2_2_0"; +"1 /Split_1_0" -> "8 /Output_2_3_0"; +"1 /Split_1_0" -> "9 /Output_3_0"; +"1 /Split_1_0" -> "10 /Output_2_4_0"; +"1 /Split_1_0" -> "11 /Output_3_1_0" [label="parallel_input_port_ids:[2, 3, 4, 5, 6, 7, 8, 9]"]; +} diff --git a/tests/common/data/reference_graphs/passes/dropout_synthetic_model_before.dot b/tests/common/data/reference_graphs/passes/dropout_synthetic_model_before.dot new file mode 100644 index 00000000000..f8c29563d5b --- /dev/null +++ b/tests/common/data/reference_graphs/passes/dropout_synthetic_model_before.dot @@ -0,0 +1,25 @@ +strict digraph { +"0 /Input_1_0" [id=0, type=Input_1]; +"1 /Split_1_0" [id=1, type=Split_1]; +"2 /Dropout_1_0" [id=2, type=Dropout_1]; +"3 /Dropout_2_0" [id=3, type=Dropout_2]; +"4 /Dropout_3_0" [id=4, type=Dropout_3]; +"5 /Output_1_0" [id=5, type=Output_1]; +"6 /Output_2_1_0" [id=6, type=Output_2_1]; +"7 /Output_2_2_0" [id=7, type=Output_2_2]; +"8 /Output_2_3_0" [id=8, type=Output_2_3]; +"9 /Output_3_0" [id=9, type=Output_3]; +"10 /Output_2_4_0" [id=10, type=output]; +"11 /Output_3_1_0" [id=11, type=output]; +"0 /Input_1_0" -> "1 /Split_1_0"; +"1 /Split_1_0" -> "2 /Dropout_1_0"; +"1 /Split_1_0" -> "3 /Dropout_2_0"; +"1 /Split_1_0" -> "4 /Dropout_3_0"; +"2 /Dropout_1_0" -> "5 /Output_1_0"; +"3 /Dropout_2_0" -> "6 /Output_2_1_0"; +"3 /Dropout_2_0" -> "7 /Output_2_2_0"; +"3 /Dropout_2_0" -> "8 /Output_2_3_0"; +"3 /Dropout_2_0" -> "10 /Output_2_4_0"; +"4 /Dropout_3_0" -> "9 /Output_3_0"; +"4 /Dropout_3_0" -> "11 /Output_3_1_0" [label="parallel_input_port_ids:[2, 3, 4, 5, 6, 7, 8, 9]"]; +} diff --git a/tests/common/experimental/test_reducers_and_aggregators.py b/tests/common/experimental/test_reducers_and_aggregators.py index e307fb73f84..e7dd055e01c 100644 --- a/tests/common/experimental/test_reducers_and_aggregators.py +++ b/tests/common/experimental/test_reducers_and_aggregators.py @@ -213,7 +213,6 @@ def test_noop_aggregator(self): for _ in range(3): aggregator.register_reduced_input(self.get_nncf_tensor(input_)) - # pylint: disable=protected-access assert aggregator._collected_samples == 3 aggregated = aggregator.aggregate() assert len(aggregated) == 3 @@ -227,7 +226,6 @@ def test_shape_aggregator(self): for _ in range(3): aggregator.register_reduced_input(self.get_nncf_tensor(input_)) - # pylint: disable=protected-access assert aggregator._collected_samples == 1 assert ref_shape == aggregator.aggregate() diff --git a/tests/common/experimental/test_statistic_collector.py b/tests/common/experimental/test_statistic_collector.py index ba99c65d328..3caad7fcd9a 100644 --- a/tests/common/experimental/test_statistic_collector.py +++ b/tests/common/experimental/test_statistic_collector.py @@ -27,8 +27,6 @@ from nncf.experimental.common.tensor_statistics.collectors import TensorReducerBase from nncf.experimental.common.tensor_statistics.collectors import TensorType -# pylint: disable=(protected-access) - class NumpyNNCFTensor(NNCFTensor): def __init__(self, tensor: np.array, dummy_device: Optional[str] = None): diff --git a/tests/common/graph/test_graph_matching.py b/tests/common/graph/test_graph_matching.py index 089cd84f9dc..e6cdff2be24 100644 --- a/tests/common/graph/test_graph_matching.py +++ b/tests/common/graph/test_graph_matching.py @@ -227,3 +227,28 @@ def test_not_match_edges_inside_pattern(): pattern.add_edge(node_1, node_3) matches = find_subgraphs_matching_pattern(ref_graph, pattern) assert matches == [["1", "2", "3"]] + + +def test_non_pattern_graph_with_type(): + for match in [False, True]: + ref_graph = nx.DiGraph() + ref_graph.add_node("0", **{GraphPattern.METATYPE_ATTR: "0"}) + ref_graph.add_node("1", **{GraphPattern.METATYPE_ATTR: "a" if match else "0"}) + ref_graph.add_node("2", **{GraphPattern.METATYPE_ATTR: "b"}) + ref_graph.add_node("3", **{GraphPattern.METATYPE_ATTR: "c"}) + ref_graph.add_edge("0", "1") + ref_graph.add_edge("1", "2") + ref_graph.add_edge("2", "3") + + pattern = GraphPattern() + node_1 = pattern.add_node(**{GraphPattern.METATYPE_ATTR: "a", GraphPattern.PATTERN_NODE_TO_EXCLUDE: True}) + node_2 = pattern.add_node(**{GraphPattern.METATYPE_ATTR: "b"}) + node_3 = pattern.add_node(**{GraphPattern.METATYPE_ATTR: "c"}) + pattern.add_edge(node_1, node_2) + pattern.add_edge(node_2, node_3) + + matches = find_subgraphs_matching_pattern(ref_graph, pattern) + if not match: + assert not matches + else: + assert matches == [["2", "3"]] diff --git a/tests/common/quantization/data_generators.py b/tests/common/quantization/data_generators.py index 42f612ecb62..2db33bc92f9 100644 --- a/tests/common/quantization/data_generators.py +++ b/tests/common/quantization/data_generators.py @@ -391,7 +391,7 @@ def scatter_plot( :param save_to_file: Save plot to file as image, defaults to None. """ import pandas as pd - import plotly.express as px # pylint:disable=import-error + import plotly.express as px column_names = list(data.keys()) for column in column_names: diff --git a/tests/common/quantization/mock_graphs.py b/tests/common/quantization/mock_graphs.py index 1234cd33287..46887158950 100644 --- a/tests/common/quantization/mock_graphs.py +++ b/tests/common/quantization/mock_graphs.py @@ -81,7 +81,6 @@ def mark_input_ports_lexicographically_based_on_input_node_key(graph: nx.DiGraph def get_nncf_graph_from_mock_nx_graph(nx_graph: nx.DiGraph, nncf_graph_cls=NNCFGraph) -> NNCFGraph: - # pylint:disable=too-many-branches mock_graph = nncf_graph_cls() key_vs_id = {} edge_vs_output_idx_and_creator_id: Dict[Tuple[str, str], Tuple[int, int]] = {} diff --git a/tests/common/quantization/test_minmax.py b/tests/common/quantization/test_minmax.py new file mode 100644 index 00000000000..719012a5a02 --- /dev/null +++ b/tests/common/quantization/test_minmax.py @@ -0,0 +1,40 @@ +# Copyright (c) 2023 Intel Corporation +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import pytest + +from nncf.common.quantization.structs import QuantizationMode +from nncf.common.quantization.structs import QuantizationPreset +from nncf.common.quantization.structs import QuantizerGroup +from nncf.parameters import ModelType +from nncf.quantization.algorithms.min_max.algorithm import MinMaxQuantization + + +@pytest.mark.parametrize( + "preset,model_type,activation_mode,weights_mode", + [ + (None, None, QuantizationMode.SYMMETRIC, QuantizationMode.SYMMETRIC), + (QuantizationPreset.PERFORMANCE, None, QuantizationMode.SYMMETRIC, QuantizationMode.SYMMETRIC), + (QuantizationPreset.MIXED, None, QuantizationMode.ASYMMETRIC, QuantizationMode.SYMMETRIC), + (None, ModelType.TRANSFORMER, QuantizationMode.ASYMMETRIC, QuantizationMode.SYMMETRIC), + (QuantizationPreset.PERFORMANCE, ModelType.TRANSFORMER, QuantizationMode.SYMMETRIC, QuantizationMode.SYMMETRIC), + (QuantizationPreset.MIXED, ModelType.TRANSFORMER, QuantizationMode.ASYMMETRIC, QuantizationMode.SYMMETRIC), + ], +) +def test_quantization_preset(preset, model_type, activation_mode, weights_mode): + minmax = MinMaxQuantization(preset=preset, model_type=model_type) + + global_quantizer_constraints = getattr(minmax, "_global_quantizer_constraints") + assert ( + global_quantizer_constraints[QuantizerGroup.ACTIVATIONS].qconf_attr_vs_constraint_dict["mode"] + == activation_mode + ) + assert global_quantizer_constraints[QuantizerGroup.WEIGHTS].qconf_attr_vs_constraint_dict["mode"] == weights_mode diff --git a/tests/common/quantization/test_passes.py b/tests/common/quantization/test_passes.py new file mode 100644 index 00000000000..c744c2297a4 --- /dev/null +++ b/tests/common/quantization/test_passes.py @@ -0,0 +1,54 @@ +# Copyright (c) 2023 Intel Corporation +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum +from pathlib import Path + +import pytest + +from nncf.quantization.passes import remove_nodes_and_reconnect_graph +from tests.post_training.test_templates.models import NNCFGraphDropoutRemovingCase +from tests.shared.nx_graph import compare_nx_graph_with_reference +from tests.shared.paths import TEST_ROOT + +DATA_ROOT = TEST_ROOT / "common" / "data" / "reference_graphs" + + +class TestModes(Enum): + VALID = "valid" + WRONG_TENSOR_SHAPE = "wrong_dropout_node" + WRONG_PARALLEL_EDGES = "wrong_parallel_edges" + + +@pytest.mark.parametrize("mode", [TestModes.VALID, TestModes.WRONG_TENSOR_SHAPE, TestModes.WRONG_PARALLEL_EDGES]) +def test_remove_nodes_and_reconnect_graph(mode: TestModes): + def _check_graphs(dot_file_name, nncf_graph) -> None: + nx_graph = nncf_graph.get_graph_for_structure_analysis() + path_to_dot = DATA_ROOT / dot_file_name + compare_nx_graph_with_reference(nx_graph, path_to_dot, check_edge_attrs=True) + + dot_reference_path_before = Path("passes") / "dropout_synthetic_model_before.dot" + dot_reference_path_after = Path("passes") / "dropout_synthetic_model_after.dot" + dropout_metatype = "DROPOUT_METATYPE" + kwargs = {} + if mode != TestModes.VALID: + kwargs.update({mode.value: True}) + + nncf_graph = NNCFGraphDropoutRemovingCase(dropout_metatype, **kwargs).nncf_graph + + if mode != TestModes.VALID: + with pytest.raises(AssertionError): + remove_nodes_and_reconnect_graph(nncf_graph, [dropout_metatype]) + return + + _check_graphs(dot_reference_path_before, nncf_graph) + remove_nodes_and_reconnect_graph(nncf_graph, [dropout_metatype]) + _check_graphs(dot_reference_path_after, nncf_graph) diff --git a/tests/common/quantization/test_quantizer_propagation_graph.py b/tests/common/quantization/test_quantizer_propagation_graph.py index 45fe13a42a2..affc7df8bc2 100644 --- a/tests/common/quantization/test_quantizer_propagation_graph.py +++ b/tests/common/quantization/test_quantizer_propagation_graph.py @@ -45,8 +45,6 @@ from tests.common.quantization.mock_graphs import get_two_branch_mock_model_graph from tests.common.quantization.mock_graphs import mark_input_ports_lexicographically_based_on_input_node_key -# pylint:disable=too-many-lines - def get_edge_paths(graph, start_node_key, finish_node_key) -> List[List[Tuple]]: node_paths = list(nx.all_simple_paths(graph, start_node_key, finish_node_key)) @@ -62,7 +60,6 @@ def get_edge_paths_for_propagation(graph, start_node_key, finish_node_key) -> Li class TestQuantizerPropagationStateGraph: - # pylint:disable=too-many-public-methods @staticmethod @pytest.fixture() def mock_qp_graph(): @@ -1837,6 +1834,5 @@ def test_create_quantizer_setup_with_output_quant_as_weights_ops( ], ) def test_get_weight_and_activation_qconfig_list_intersection(weight_configs, activation_configs, reference_configs): - # pylint: disable=protected-access resulted_configs = QPSG._get_weight_and_activation_qconfig_list_intersection(weight_configs, activation_configs) assert resulted_configs == reference_configs diff --git a/tests/common/quantization/test_quantizer_propagation_solver.py b/tests/common/quantization/test_quantizer_propagation_solver.py index 19937966b17..f50b7a484eb 100644 --- a/tests/common/quantization/test_quantizer_propagation_solver.py +++ b/tests/common/quantization/test_quantizer_propagation_solver.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines + from collections import Counter from collections import namedtuple from itertools import permutations @@ -198,7 +198,6 @@ def __init__( class TestQuantizerPropagationSolver: - # pylint:disable=too-many-public-methods def test_setup_initial_quantizers_in_quant_prop_graph(self): ops_to_quantize = [ BatchNormTestMetatype.name, @@ -1560,7 +1559,6 @@ def test_handling_upward_branching_path_with_no_transition_creates_no_extra_quan _ = quant_prop_solver.propagation_step(pq, quant_prop_graph) finished_pqs = quant_prop_solver.get_finished_propagating_quantizers() - # pylint:disable=no-member assert quant_prop_graph.remove_propagating_quantizer.call_count == 1 assert quant_prop_graph.clone_propagating_quantizer.call_count == 1 assert len(finished_pqs) == 1 @@ -1839,3 +1837,28 @@ def test_quantizers_are_not_set_up_for_integer_inputs(self, ip_graph_with_int_ed assert double_input_pq.current_location_node_key == InsertionPointGraph.get_pre_hook_node_key( "5 /E_0", input_port_id=1 ) + + +def test_metatypes_to_ignore(mocker): + # pylint: disable=protected-access + NOT_IGNORED_METATYHPE = "not_ignored_metatype" + IGNORED_METATYPE = "target_metatype" + + nncf_graph = NNCFGraph() + nodes = [] + for node_name, node_metatype in zip("ABC", [NOT_IGNORED_METATYHPE, IGNORED_METATYPE, NOT_IGNORED_METATYHPE]): + nodes.append(nncf_graph.add_nncf_node(node_name, node_name, node_metatype=node_metatype)) + for idx in range(1, len(nodes)): + nncf_graph.add_edge_between_nncf_nodes( + nodes[idx - 1].node_id, nodes[idx].node_id, [1, 1, 1, 1], 0, 0, Dtype.FLOAT + ) + ip_graph = InsertionPointGraph(nncf_graph=nncf_graph, weight_modifiable_node_names=["A", "B", "C"]) + + solver = QuantizerPropagationSolver( + metatypes_to_ignore=[IGNORED_METATYPE], + ) + solver._add_node_to_ignored = mocker.MagicMock() + solver.run_on_ip_graph(ip_graph) + + solver._add_node_to_ignored.assert_called_once() + assert "1 B" in solver._add_node_to_ignored.call_args[0] diff --git a/tests/common/test_framework_detection.py b/tests/common/test_framework_detection.py index c6f0f4c9736..6df26d0f91d 100644 --- a/tests/common/test_framework_detection.py +++ b/tests/common/test_framework_detection.py @@ -20,8 +20,8 @@ import nncf -SUPPORTED_FRAMEWORKS = nncf._SUPPORTED_FRAMEWORKS # pylint:disable=protected-access -_REAL_FIND_SPEC = importlib._bootstrap._find_spec # pylint:disable=protected-access +SUPPORTED_FRAMEWORKS = nncf._SUPPORTED_FRAMEWORKS +_REAL_FIND_SPEC = importlib._bootstrap._find_spec class FailForModules: diff --git a/tests/common/test_logging.py b/tests/common/test_logging.py index 870afab404c..189122ee5ba 100644 --- a/tests/common/test_logging.py +++ b/tests/common/test_logging.py @@ -55,7 +55,7 @@ def test_set_log_file(messages, expected): assert actual_line.rstrip("\n") == expected_line handlers_to_remove = [] - # pylint: disable=no-member + for handler in nncf_logger.handlers: if isinstance(handler, logging.FileHandler) and str(tmp_dir) in handler.baseFilename: handler.close() # so that the log file is released and temp dir can be deleted diff --git a/tests/common/test_monkey_patching.py b/tests/common/test_monkey_patching.py index f3e44594519..245d78862f0 100644 --- a/tests/common/test_monkey_patching.py +++ b/tests/common/test_monkey_patching.py @@ -14,12 +14,12 @@ CORRECT_WRAPPER_STACK = "base" -def wrapper1(self, fn, *args, **kwargs): # pylint: disable=unused-argument +def wrapper1(self, fn, *args, **kwargs): kwargs["wrapper_stack"] += "_wrapper1" return fn(*args, **kwargs) -def wrapper2(self, fn, *args, **kwargs): # pylint: disable=unused-argument +def wrapper2(self, fn, *args, **kwargs): kwargs["wrapper_stack"] += "_wrapper2" return fn(*args, **kwargs) @@ -44,7 +44,7 @@ def assert_wrapper_stack_class(cls, wrapper_stack=None): def test_patcher(): global CORRECT_WRAPPER_STACK - def wrapper3(self, fn, *args, **kwargs): # pylint: disable=unused-argument + def wrapper3(self, fn, *args, **kwargs): kwargs["wrapper_stack"] += "_wrapper3" return fn(*args, **kwargs) diff --git a/tests/common/test_pattern_manager.py b/tests/common/test_pattern_manager.py new file mode 100644 index 00000000000..3b05edafc8f --- /dev/null +++ b/tests/common/test_pattern_manager.py @@ -0,0 +1,72 @@ +# Copyright (c) 2023 Intel Corporation +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from enum import Enum + +from nncf.common.graph.patterns.manager import PatternsManager +from nncf.common.graph.patterns.patterns import PatternDesc +from nncf.common.utils.registry import Registry +from nncf.parameters import ModelType +from nncf.parameters import TargetDevice + +TEST_DEVICE_PATTERN_REGISTRY = Registry("TEST_PATTERNS_REGISTRY") + + +# pylint: disable=protected-access + + +class DevicePatterns(Enum): + CPU_PATTERN = PatternDesc("CPU_PATTERN", devices=[TargetDevice.CPU]) + GPU_PATTERN = PatternDesc("GPU_PATTERN", devices=[TargetDevice.GPU]) + COMMON_PATTERN = PatternDesc("COMMON_PATTERN") + + +TEST_DEVICE_PATTERN_REGISTRY.register(DevicePatterns.CPU_PATTERN)(None) +TEST_DEVICE_PATTERN_REGISTRY.register(DevicePatterns.GPU_PATTERN)(None) +TEST_DEVICE_PATTERN_REGISTRY.register(DevicePatterns.COMMON_PATTERN)(None) + + +def test_pattern_filter_device(): + manager = PatternsManager() + filtered_patterns = manager._filter_patterns( + TEST_DEVICE_PATTERN_REGISTRY.registry_dict, device=TargetDevice.CPU, model_type=None + ) + assert len(filtered_patterns) == 2 + assert DevicePatterns.CPU_PATTERN in filtered_patterns + assert DevicePatterns.COMMON_PATTERN in filtered_patterns + + +TEST_MODEL_TYPE_PATTERN_REGISTRY = Registry("TEST_PATTERNS_REGISTRY") + + +class ModelTypePatterns(Enum): + TRANSFORMER_PATTERN = PatternDesc("TRANSFORMER_PATTERN", model_types=[ModelType.TRANSFORMER]) + COMMON_PATTERN = PatternDesc("COMMON_PATTERN") + + +TEST_MODEL_TYPE_PATTERN_REGISTRY.register(ModelTypePatterns.TRANSFORMER_PATTERN)(None) +TEST_MODEL_TYPE_PATTERN_REGISTRY.register(ModelTypePatterns.COMMON_PATTERN)(None) + + +def test_pattern_filter_model_type(): + manager = PatternsManager() + filtered_patterns = manager._filter_patterns( + TEST_MODEL_TYPE_PATTERN_REGISTRY.registry_dict, device=None, model_type=None + ) + assert len(filtered_patterns) == 1 + assert ModelTypePatterns.COMMON_PATTERN in filtered_patterns + + filtered_patterns = manager._filter_patterns( + TEST_MODEL_TYPE_PATTERN_REGISTRY.registry_dict, device=None, model_type=ModelType.TRANSFORMER + ) + assert len(filtered_patterns) == 2 + assert ModelTypePatterns.COMMON_PATTERN in filtered_patterns + assert ModelTypePatterns.TRANSFORMER_PATTERN in filtered_patterns diff --git a/tests/common/test_statistics_aggregator.py b/tests/common/test_statistics_aggregator.py index 980ea2328d7..29b6db51c03 100644 --- a/tests/common/test_statistics_aggregator.py +++ b/tests/common/test_statistics_aggregator.py @@ -48,7 +48,6 @@ class BCStatsCollectors(Enum): RAW = "raw" -# pylint: disable=too-many-public-methods class TemplateTestStatisticsAggregator: @abstractmethod def get_min_max_algo_backend_cls(self) -> Type[MinMaxAlgoBackend]: @@ -783,7 +782,7 @@ def test_statistic_merging(self, test_params, key, dataset_samples, inplace_stat dataset = self.get_dataset(dataset_samples) statistics_aggregator = self.get_statistics_aggregator(dataset) - # pylint: disable=protected-access + merged_statistics = statistics_aggregator._get_merged_statistic_points(statistics_points, model, nncf_graph) merged_stats_checkers_map = { "split_concat": self._check_split_concat_merged_stats, diff --git a/tests/cross_fw/examples/conftest.py b/tests/cross_fw/examples/conftest.py index cbf665402d8..6cac9c21a3e 100644 --- a/tests/cross_fw/examples/conftest.py +++ b/tests/cross_fw/examples/conftest.py @@ -28,6 +28,9 @@ def pytest_addoption(parser): default=False, help="If the parameter is set then the performance metrics will be tested as well", ) + parser.addoption( + "--ov_version_override", default=None, help="Parameter to set OpenVINO into the env with the version from PyPI" + ) @pytest.fixture(scope="module") @@ -38,3 +41,8 @@ def backends_list(request): @pytest.fixture(scope="module") def is_check_performance(request): return request.config.getoption("--check_performance") + + +@pytest.fixture(scope="module") +def ov_version_override(request): + return request.config.getoption("--ov_version_override") diff --git a/tests/cross_fw/examples/run_example.py b/tests/cross_fw/examples/run_example.py index 790994dec25..afecbce45ea 100644 --- a/tests/cross_fw/examples/run_example.py +++ b/tests/cross_fw/examples/run_example.py @@ -16,9 +16,6 @@ from tests.shared.paths import PROJECT_ROOT -# pylint: disable=maybe-no-member -# pylint: disable=import-error - def post_training_quantization_mobilenet_v2(example_root_dir: str) -> Dict[str, float]: sys.path.append(example_root_dir) diff --git a/tests/cross_fw/examples/test_examples.py b/tests/cross_fw/examples/test_examples.py index fc3c0d8f815..8f98961da15 100644 --- a/tests/cross_fw/examples/test_examples.py +++ b/tests/cross_fw/examples/test_examples.py @@ -11,6 +11,8 @@ import os import subprocess +from pathlib import Path +from typing import Any, Dict, List import pytest @@ -42,7 +44,14 @@ def example_test_cases(): @pytest.mark.parametrize("example_name, example_params", example_test_cases()) -def test_examples(tmp_path, example_name, example_params, backends_list, is_check_performance): +def test_examples( + tmp_path: Path, + example_name: str, + example_params: Dict[str, Any], + backends_list: List[str], + is_check_performance: bool, + ov_version_override: str, +): backend = example_params["backend"] skip_if_backend_not_selected(backend, backends_list) venv_path = create_venv_with_nncf(tmp_path, "pip_e_local", "venv", set([backend])) @@ -52,6 +61,11 @@ def test_examples(tmp_path, example_name, example_params, backends_list, is_chec run_cmd_line = f"{pip_with_venv} install -r {requirements}" subprocess.run(run_cmd_line, check=True, shell=True) + if ov_version_override is not None: + pip_with_venv = get_pip_executable_with_venv(venv_path) + ov_version_cmd_line = f"{pip_with_venv} install {ov_version_override}" + subprocess.run(ov_version_cmd_line, check=True, shell=True) + env = os.environ.copy() env["PYTHONPATH"] = str(PROJECT_ROOT) # need this to be able to import from tests.* in run_example.py diff --git a/tests/cross_fw/install/conftest.py b/tests/cross_fw/install/conftest.py index 5b5142b3acb..179c2fff682 100644 --- a/tests/cross_fw/install/conftest.py +++ b/tests/cross_fw/install/conftest.py @@ -29,6 +29,9 @@ def pytest_addoption(parser): nargs="+", default=["all"], ) + parser.addoption( + "--ov_version_override", default=None, help="Parameter to set OpenVINO into the env with the version from PyPI" + ) @pytest.fixture(scope="module") @@ -39,3 +42,8 @@ def backend_clopt(request): @pytest.fixture(scope="module") def host_configuration_clopt(request): return request.config.getoption("--host-configuration") + + +@pytest.fixture(scope="module") +def ov_version_override(request): + return request.config.getoption("--ov_version_override") diff --git a/tests/cross_fw/install/install_checks_tf.py b/tests/cross_fw/install/install_checks_tf.py index 11dea551a3c..fe283bb8d67 100644 --- a/tests/cross_fw/install/install_checks_tf.py +++ b/tests/cross_fw/install/install_checks_tf.py @@ -11,13 +11,14 @@ import tensorflow as tf -# Do not remove - these imports are for testing purposes. -# pylint:disable=unused-import import nncf # noqa: F401 from nncf.common.compression import BaseCompressionAlgorithmController from nncf.tensorflow.helpers.model_creation import create_compressed_model from tests.tensorflow.quantization.utils import get_basic_quantization_config +# Do not remove - these imports are for testing purposes. + + inputs = tf.keras.Input(shape=(3, 3, 1)) outputs = tf.keras.layers.Conv2D(filters=3, kernel_size=3)(inputs) model = tf.keras.Model(inputs=inputs, outputs=outputs) diff --git a/tests/cross_fw/install/install_checks_torch.py b/tests/cross_fw/install/install_checks_torch.py index c15983c08d8..dde6ae290da 100644 --- a/tests/cross_fw/install/install_checks_torch.py +++ b/tests/cross_fw/install/install_checks_torch.py @@ -19,8 +19,8 @@ package_type = sys.argv[2] # Do not remove - these imports are for testing purposes. -# pylint:disable=unused-import -# pylint:disable=wrong-import-position + + import nncf # noqa: F401, E402 from nncf.torch import create_compressed_model # noqa: F401, E402 diff --git a/tests/cross_fw/install/test_install.py b/tests/cross_fw/install/test_install.py index c7953d2c6f5..bcd015c55ba 100644 --- a/tests/cross_fw/install/test_install.py +++ b/tests/cross_fw/install/test_install.py @@ -107,11 +107,16 @@ def test_install( package_type: str, backend_clopt: List[str], host_configuration_clopt: str, + ov_version_override: str, ): skip_if_backend_not_selected(backend, backend_clopt) if "pypi" in package_type: pytest.xfail("Disabled until NNCF is exposed in a release") venv_path = create_venv_with_nncf(tmp_path, package_type, venv_type, extra_reqs={backend}) + if ov_version_override is not None: + pip_with_venv = get_pip_executable_with_venv(venv_path) + ov_version_cmd_line = f"{pip_with_venv} install {ov_version_override}" + subprocess.run(ov_version_cmd_line, check=True, shell=True) run_install_checks(venv_path, tmp_path, package_type, backend=backend, install_type=host_configuration_clopt) @staticmethod diff --git a/tests/onnx/benchmarking/run_ptq.py b/tests/onnx/benchmarking/run_ptq.py index a7354a979cc..91c2f7d4728 100644 --- a/tests/onnx/benchmarking/run_ptq.py +++ b/tests/onnx/benchmarking/run_ptq.py @@ -23,12 +23,9 @@ from nncf.scopes import IgnoredScope from tests.onnx.opset_converter import convert_opset_version -# pylint: disable=unused-import # This import need to register custom Conerter from tests.onnx.quantization.common import find_ignored_scopes -# pylint: disable=redefined-outer-name,protected-access - def process_fn(data_item, model_evaluator: ModelEvaluator, has_batch_dim: Optional[bool] = False): _, batch_annotation, batch_input, _ = data_item diff --git a/tests/onnx/models.py b/tests/onnx/models.py index 671a4ad8d31..72516621cfe 100644 --- a/tests/onnx/models.py +++ b/tests/onnx/models.py @@ -20,8 +20,6 @@ OPSET_VERSION = 13 ALL_SYNTHETIC_MODELS = Registry("ONNX_SYNTHETIC_MODELS") -# pylint: disable=no-member, too-many-lines - def create_initializer_tensor( name: str, tensor_array: np.ndarray, data_type: onnx.TensorProto = onnx.TensorProto.FLOAT diff --git a/tests/onnx/opset_converter.py b/tests/onnx/opset_converter.py index 5a38aff7364..512535b0512 100644 --- a/tests/onnx/opset_converter.py +++ b/tests/onnx/opset_converter.py @@ -10,7 +10,7 @@ # limitations under the License. import onnx -from onnx.version_converter import ConvertError # pylint: disable=no-name-in-module +from onnx.version_converter import ConvertError from onnx.version_converter import convert_version from nncf.common.logging import nncf_logger @@ -28,7 +28,7 @@ def convert_opset_version(model: onnx.ModelProto, opset_version: int = TARGET_OP :param opset_version: target Opset Version. :return: Converted ONNX model or Original ONNX model. """ - # pylint: disable=no-member + try: modified_model = convert_version(model, opset_version) onnx.checker.check_model(modified_model) diff --git a/tests/onnx/quantization/test_classification_models_graph.py b/tests/onnx/quantization/test_classification_models_graph.py index 034d0a55bc0..7db2d90d091 100644 --- a/tests/onnx/quantization/test_classification_models_graph.py +++ b/tests/onnx/quantization/test_classification_models_graph.py @@ -15,8 +15,6 @@ from torchvision import models from nncf.parameters import TargetDevice - -# pylint: disable=no-member from tests.onnx.conftest import ONNX_MODEL_DIR from tests.onnx.quantization.common import ModelToTest from tests.onnx.quantization.common import compare_nncf_graph diff --git a/tests/onnx/quantization/test_min_max.py b/tests/onnx/quantization/test_min_max.py index f5f1710268d..2c6a1cf78e2 100644 --- a/tests/onnx/quantization/test_min_max.py +++ b/tests/onnx/quantization/test_min_max.py @@ -21,8 +21,6 @@ from nncf.onnx.graph.node_utils import get_reduction_shape from nncf.onnx.graph.transformations.commands import ONNXTargetPoint -# pylint: disable=protected-access - @dataclass class TestCase: diff --git a/tests/onnx/quantization/test_ptq_params.py b/tests/onnx/quantization/test_ptq_params.py index d0a88ad8cc8..99277cdd6c7 100644 --- a/tests/onnx/quantization/test_ptq_params.py +++ b/tests/onnx/quantization/test_ptq_params.py @@ -36,8 +36,6 @@ from tests.post_training.test_templates.models import NNCFGraphToTestMatMul from tests.post_training.test_templates.test_ptq_params import TemplateTestPTQParams -# pylint: disable=protected-access - def get_hw_patterns(device: TargetDevice = TargetDevice.ANY) -> GraphPattern: return PatternsManager.get_full_hw_pattern_graph(backend=BackendType.ONNX, device=device) diff --git a/tests/onnx/quantization/test_ptq_regression.py b/tests/onnx/quantization/test_ptq_regression.py index d113dcc6d10..358dc5ac9f3 100644 --- a/tests/onnx/quantization/test_ptq_regression.py +++ b/tests/onnx/quantization/test_ptq_regression.py @@ -26,7 +26,6 @@ import nncf MODELS = [ - # pylint: disable=line-too-long ( "https://github.com/onnx/models/raw/main/vision/classification/mobilenet/model/mobilenetv2-12.onnx", "mobilenetv2-12", diff --git a/tests/onnx/quantization/test_quantizer_config.py b/tests/onnx/quantization/test_quantizer_config.py index 8702f4a42f0..eb24f752b16 100644 --- a/tests/onnx/quantization/test_quantizer_config.py +++ b/tests/onnx/quantization/test_quantizer_config.py @@ -29,9 +29,6 @@ ParamsCls = TemplateTestQuantizerConfig.TestGetStatisticsCollectorParameters -# pylint: disable=protected-access - - class TestQuantizerConfig(TemplateTestQuantizerConfig): def get_algo_backend(self): return ONNXMinMaxAlgoBackend() diff --git a/tests/onnx/test_e2e_ptq.py b/tests/onnx/test_e2e_ptq.py index 0d2f353982b..b3604af8c45 100644 --- a/tests/onnx/test_e2e_ptq.py +++ b/tests/onnx/test_e2e_ptq.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=redefined-outer-name import json import math diff --git a/tests/onnx/test_model_transformer.py b/tests/onnx/test_model_transformer.py index da039ee2d1a..3d1290da13c 100644 --- a/tests/onnx/test_model_transformer.py +++ b/tests/onnx/test_model_transformer.py @@ -68,7 +68,7 @@ def test_quantizer_insertion(target_layers, should_raise, quantizer_number): num_q = 0 num_dq = 0 - # pylint:disable=no-member + for node in transformed_model.graph.node: op_type = node.op_type if op_type == "QuantizeLinear": @@ -125,7 +125,6 @@ def test_inserted_quantizer_parameters(test_parameters): transformed_model = model_transformer.transform(transformation_layout) onnx.checker.check_model(transformed_model) - # pylint:disable=no-member for node in transformed_model.graph.node: op_type = node.op_type if op_type == "QuantizeLinear": diff --git a/tests/onnx/test_pattern_manager.py b/tests/onnx/test_pattern_manager.py index e06ae77e46d..a21ec96d119 100644 --- a/tests/onnx/test_pattern_manager.py +++ b/tests/onnx/test_pattern_manager.py @@ -23,7 +23,6 @@ HWFusedPatternNames.BATCH_INDEX: "Not relevant for ONNX.", HWFusedPatternNames.NORMALIZE_L2_MULTIPLY: "Not relevant for ONNX.", HWFusedPatternNames.LINEAR_WITH_BIAS: "Linear layers contains biases in ONNX.", - HWFusedPatternNames.SE_BLOCK: "Not relevant for ONNX.", HWFusedPatternNames.SOFTMAX_DIV: "Not relevant for ONNX.", HWFusedPatternNames.HSWISH_ACTIVATION_V2: "Is already covered by HSWISH_ACTIVATION for ONNX.", HWFusedPatternNames.SOFTMAX: "Not relevant for ONNX.", diff --git a/tests/onnx/weightless_model.py b/tests/onnx/weightless_model.py index 6f34347ba38..cf5c8597e6e 100644 --- a/tests/onnx/weightless_model.py +++ b/tests/onnx/weightless_model.py @@ -16,11 +16,9 @@ import numpy as np import onnx -from onnx import TensorProto # pylint:disable=no-name-in-module +from onnx import TensorProto from onnx.external_data_helper import uses_external_data -# pylint: disable=no-member - def load_model_topology_with_zeros_weights(model_path: Union[str, Path]) -> onnx.ModelProto: """ diff --git a/tests/openvino/conftest.py b/tests/openvino/conftest.py index 738ba7efc44..58d250f6bc1 100644 --- a/tests/openvino/conftest.py +++ b/tests/openvino/conftest.py @@ -11,7 +11,6 @@ from pathlib import Path -# pylint:disable=unused-import import pytest from tests.shared.case_collection import COMMON_SCOPE_MARKS_VS_OPTIONS @@ -32,6 +31,14 @@ def data(request): return Path(option) +@pytest.fixture(name="omz_cache_dir") +def models(request): + option = request.config.getoption("--data") + if option is None: + return Path(MODELS_PATH) + return Path(option) + + # Custom markers specifying tests to be run only if a specific option # is present on the pytest command line must be registered here. MARKS_VS_OPTIONS = {**COMMON_SCOPE_MARKS_VS_OPTIONS} @@ -46,4 +53,6 @@ def pytest_collection_modifyitems(config, items): OPENVINO_NATIVE_TEST_ROOT = OPENVINO_TEST_ROOT / "native" AC_CONFIGS_DIR = OPENVINO_TEST_ROOT / "data" / "ac_configs" OPENVINO_DATASET_DEFINITIONS_PATH = OPENVINO_TEST_ROOT / "data" / "ov_dataset_definitions.yml" -DATASET_PATH = "~/.cache/nncf/datasets" +NNCF_CACHE_PATH = Path("~/.cache/nncf") +DATASET_PATH = NNCF_CACHE_PATH / "datasets" +MODELS_PATH = NNCF_CACHE_PATH / "models" diff --git a/tests/openvino/datasets_helpers.py b/tests/openvino/datasets_helpers.py index 8b1044ee9d4..631c2114a04 100644 --- a/tests/openvino/datasets_helpers.py +++ b/tests/openvino/datasets_helpers.py @@ -100,7 +100,6 @@ def get_dataset_for_test(dataset_name: str, data_dir: Path) -> Path: raise RuntimeError(f"Unknown dataset: {dataset_name}.") -# pylint: disable=protected-access def get_nncf_dataset_from_ac_config(model_path, config_path, data_dir, framework="openvino", device="CPU"): args = [ "-c", diff --git a/tests/openvino/native/common.py b/tests/openvino/native/common.py index 709ebf6c324..fdb4f534f45 100644 --- a/tests/openvino/native/common.py +++ b/tests/openvino/native/common.py @@ -50,8 +50,6 @@ def load_json(stats_path): class NumpyEncoder(json.JSONEncoder): """Special json encoder for numpy types""" - # pylint: disable=W0221, E0202 - def default(self, o): if isinstance(o, np.integer): return int(o) diff --git a/tests/openvino/native/data/2023.1/reference_graphs/quantized/SeBlockModel.dot b/tests/openvino/native/data/2023.1/reference_graphs/quantized/SeBlockModel.dot index 0f7dbb5f542..2553a125010 100644 --- a/tests/openvino/native/data/2023.1/reference_graphs/quantized/SeBlockModel.dot +++ b/tests/openvino/native/data/2023.1/reference_graphs/quantized/SeBlockModel.dot @@ -5,7 +5,7 @@ strict digraph { "3 Add0" [id=3, type=Add]; "4 Add0/fq_output_0" [id=4, type=FakeQuantize]; "5 Mul" [id=5, type=Multiply]; -"6 ReduceMean_6" [id=6, type=ReduceMean]; +"6 ReduceMean_31402" [id=6, type=ReduceMean]; "7 Mul/fq_output_0" [id=7, type=FakeQuantize]; "8 Conv" [id=8, type=Convolution]; "9 MatMul" [id=9, type=MatMul]; @@ -15,44 +15,49 @@ strict digraph { "13 Conv2" [id=13, type=Convolution]; "14 Add2" [id=14, type=Add]; "15 Sigmoid" [id=15, type=Sigmoid]; -"16 MatMul/fq_weights_1" [id=16, type=FakeQuantize]; -"17 Constant_2193" [id=17, type=Constant]; -"18 Constant_2192" [id=18, type=Constant]; -"19 Constant_2191" [id=19, type=Constant]; -"20 Constant_2190" [id=20, type=Constant]; -"21 Constant_18" [id=21, type=Constant]; -"22 Constant_2183" [id=22, type=Constant]; -"23 Constant_2182" [id=23, type=Constant]; -"24 Constant_2181" [id=24, type=Constant]; -"25 Constant_2180" [id=25, type=Constant]; -"26 Constant_14" [id=26, type=Constant]; -"27 Constant_12" [id=27, type=Constant]; -"28 Constant_9" [id=28, type=Constant]; -"29 Constant_7" [id=29, type=Constant]; -"30 Constant_5" [id=30, type=Constant]; -"31 Constant_2173" [id=31, type=Constant]; -"32 Constant_2172" [id=32, type=Constant]; -"33 Constant_2171" [id=33, type=Constant]; -"34 Constant_2170" [id=34, type=Constant]; -"35 Constant_3" [id=35, type=Constant]; -"36 Conv0/fq_weights_1" [id=36, type=FakeQuantize]; -"37 Constant_2188" [id=37, type=Constant]; -"38 Constant_2187" [id=38, type=Constant]; -"39 Constant_2186" [id=39, type=Constant]; -"40 Constant_2185" [id=40, type=Constant]; -"41 Constant_1" [id=41, type=Constant]; -"42 Constant_2178" [id=42, type=Constant]; -"43 Constant_2177" [id=43, type=Constant]; -"44 Constant_2176" [id=44, type=Constant]; -"45 Constant_2175" [id=45, type=Constant]; +"16 Sigmoid/fq_output_0" [id=16, type=FakeQuantize]; +"17 MatMul/fq_weights_1" [id=17, type=FakeQuantize]; +"18 Constant_33914" [id=18, type=Constant]; +"19 Constant_33913" [id=19, type=Constant]; +"20 Constant_33912" [id=20, type=Constant]; +"21 Constant_33911" [id=21, type=Constant]; +"22 Constant_31414" [id=22, type=Constant]; +"23 Constant_33909" [id=23, type=Constant]; +"24 Constant_33908" [id=24, type=Constant]; +"25 Constant_33907" [id=25, type=Constant]; +"26 Constant_33906" [id=26, type=Constant]; +"27 Constant_33904" [id=27, type=Constant]; +"28 Constant_33903" [id=28, type=Constant]; +"29 Constant_33902" [id=29, type=Constant]; +"30 Constant_33901" [id=30, type=Constant]; +"31 Constant_31410" [id=31, type=Constant]; +"32 Constant_31408" [id=32, type=Constant]; +"33 Constant_31405" [id=33, type=Constant]; +"34 Constant_31403" [id=34, type=Constant]; +"35 Constant_31401" [id=35, type=Constant]; +"36 Constant_33899" [id=36, type=Constant]; +"37 Constant_33898" [id=37, type=Constant]; +"38 Constant_33897" [id=38, type=Constant]; +"39 Constant_33896" [id=39, type=Constant]; +"40 Constant_31399" [id=40, type=Constant]; +"41 Conv0/fq_weights_1" [id=41, type=FakeQuantize]; +"42 Constant_33894" [id=42, type=Constant]; +"43 Constant_33893" [id=43, type=Constant]; +"44 Constant_33892" [id=44, type=Constant]; +"45 Constant_33891" [id=45, type=Constant]; +"46 Constant_31397" [id=46, type=Constant]; +"47 Constant_33889" [id=47, type=Constant]; +"48 Constant_33888" [id=48, type=Constant]; +"49 Constant_33887" [id=49, type=Constant]; +"50 Constant_33886" [id=50, type=Constant]; "0 Input" -> "1 Input/fq_output_0" [label="[1, 3, 5, 6]", style=solid]; "1 Input/fq_output_0" -> "2 Conv0" [label="[1, 3, 5, 6]", style=solid]; "2 Conv0" -> "3 Add0" [label="[1, 3, 5, 6]", style=solid]; "3 Add0" -> "4 Add0/fq_output_0" [label="[1, 3, 5, 6]", style=solid]; "4 Add0/fq_output_0" -> "5 Mul" [label="[1, 3, 5, 6]", style=solid]; -"4 Add0/fq_output_0" -> "6 ReduceMean_6" [label="[1, 3, 5, 6]", style=solid]; +"4 Add0/fq_output_0" -> "6 ReduceMean_31402" [label="[1, 3, 5, 6]", style=solid]; "5 Mul" -> "7 Mul/fq_output_0" [label="[1, 3, 5, 6]", style=solid]; -"6 ReduceMean_6" -> "8 Conv" [label="[1, 3, 1, 1]", style=solid]; +"6 ReduceMean_31402" -> "8 Conv" [label="[1, 3, 1, 1]", style=solid]; "7 Mul/fq_output_0" -> "9 MatMul" [label="[1, 3, 5, 6]", style=solid]; "8 Conv" -> "10 Add" [label="[1, 5, 1, 1]", style=solid]; "9 MatMul" -> "11 Result" [label="[1, 3, 5, 5]", style=solid]; @@ -60,35 +65,40 @@ strict digraph { "12 Relu" -> "13 Conv2" [label="[1, 5, 1, 1]", style=solid]; "13 Conv2" -> "14 Add2" [label="[1, 3, 1, 1]", style=solid]; "14 Add2" -> "15 Sigmoid" [label="[1, 3, 1, 1]", style=solid]; -"15 Sigmoid" -> "5 Mul" [label="[1, 3, 1, 1]", style=solid]; -"16 MatMul/fq_weights_1" -> "9 MatMul" [label="[1, 3, 6, 5]", style=solid]; -"17 Constant_2193" -> "16 MatMul/fq_weights_1" [label="[1, 1, 1, 1]", style=solid]; -"18 Constant_2192" -> "16 MatMul/fq_weights_1" [label="[1, 1, 1, 1]", style=solid]; -"19 Constant_2191" -> "16 MatMul/fq_weights_1" [label="[1, 1, 1, 1]", style=solid]; -"20 Constant_2190" -> "16 MatMul/fq_weights_1" [label="[1, 1, 1, 1]", style=solid]; -"21 Constant_18" -> "16 MatMul/fq_weights_1" [label="[1, 3, 6, 5]", style=solid]; -"22 Constant_2183" -> "7 Mul/fq_output_0" [label="[]", style=solid]; -"23 Constant_2182" -> "7 Mul/fq_output_0" [label="[]", style=solid]; -"24 Constant_2181" -> "7 Mul/fq_output_0" [label="[]", style=solid]; -"25 Constant_2180" -> "7 Mul/fq_output_0" [label="[]", style=solid]; -"26 Constant_14" -> "14 Add2" [label="[1, 3, 1, 1]", style=solid]; -"27 Constant_12" -> "13 Conv2" [label="[3, 5, 1, 1]", style=solid]; -"28 Constant_9" -> "10 Add" [label="[1, 5, 1, 1]", style=solid]; -"29 Constant_7" -> "8 Conv" [label="[5, 3, 1, 1]", style=solid]; -"30 Constant_5" -> "6 ReduceMean_6" [label="[2]", style=dashed]; -"31 Constant_2173" -> "4 Add0/fq_output_0" [label="[]", style=solid]; -"32 Constant_2172" -> "4 Add0/fq_output_0" [label="[]", style=solid]; -"33 Constant_2171" -> "4 Add0/fq_output_0" [label="[]", style=solid]; -"34 Constant_2170" -> "4 Add0/fq_output_0" [label="[]", style=solid]; -"35 Constant_3" -> "3 Add0" [label="[1, 3, 1, 1]", style=solid]; -"36 Conv0/fq_weights_1" -> "2 Conv0" [label="[3, 3, 1, 1]", style=solid]; -"37 Constant_2188" -> "36 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; -"38 Constant_2187" -> "36 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; -"39 Constant_2186" -> "36 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; -"40 Constant_2185" -> "36 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; -"41 Constant_1" -> "36 Conv0/fq_weights_1" [label="[3, 3, 1, 1]", style=solid]; -"42 Constant_2178" -> "1 Input/fq_output_0" [label="[]", style=solid]; -"43 Constant_2177" -> "1 Input/fq_output_0" [label="[]", style=solid]; -"44 Constant_2176" -> "1 Input/fq_output_0" [label="[]", style=solid]; -"45 Constant_2175" -> "1 Input/fq_output_0" [label="[]", style=solid]; +"15 Sigmoid" -> "16 Sigmoid/fq_output_0" [label="[1, 3, 1, 1]", style=solid]; +"16 Sigmoid/fq_output_0" -> "5 Mul" [label="[1, 3, 1, 1]", style=solid]; +"17 MatMul/fq_weights_1" -> "9 MatMul" [label="[6, 5]", style=solid]; +"18 Constant_33914" -> "17 MatMul/fq_weights_1" [label="[1, 5]", style=solid]; +"19 Constant_33913" -> "17 MatMul/fq_weights_1" [label="[1, 5]", style=solid]; +"20 Constant_33912" -> "17 MatMul/fq_weights_1" [label="[1, 5]", style=solid]; +"21 Constant_33911" -> "17 MatMul/fq_weights_1" [label="[1, 5]", style=solid]; +"22 Constant_31414" -> "17 MatMul/fq_weights_1" [label="[6, 5]", style=solid]; +"23 Constant_33909" -> "7 Mul/fq_output_0" [label="[]", style=solid]; +"24 Constant_33908" -> "7 Mul/fq_output_0" [label="[]", style=solid]; +"25 Constant_33907" -> "7 Mul/fq_output_0" [label="[]", style=solid]; +"26 Constant_33906" -> "7 Mul/fq_output_0" [label="[]", style=solid]; +"27 Constant_33904" -> "16 Sigmoid/fq_output_0" [label="[]", style=solid]; +"28 Constant_33903" -> "16 Sigmoid/fq_output_0" [label="[]", style=solid]; +"29 Constant_33902" -> "16 Sigmoid/fq_output_0" [label="[]", style=solid]; +"30 Constant_33901" -> "16 Sigmoid/fq_output_0" [label="[]", style=solid]; +"31 Constant_31410" -> "14 Add2" [label="[1, 3, 1, 1]", style=solid]; +"32 Constant_31408" -> "13 Conv2" [label="[3, 5, 1, 1]", style=solid]; +"33 Constant_31405" -> "10 Add" [label="[1, 5, 1, 1]", style=solid]; +"34 Constant_31403" -> "8 Conv" [label="[5, 3, 1, 1]", style=solid]; +"35 Constant_31401" -> "6 ReduceMean_31402" [label="[2]", style=dashed]; +"36 Constant_33899" -> "4 Add0/fq_output_0" [label="[]", style=solid]; +"37 Constant_33898" -> "4 Add0/fq_output_0" [label="[]", style=solid]; +"38 Constant_33897" -> "4 Add0/fq_output_0" [label="[]", style=solid]; +"39 Constant_33896" -> "4 Add0/fq_output_0" [label="[]", style=solid]; +"40 Constant_31399" -> "3 Add0" [label="[1, 3, 1, 1]", style=solid]; +"41 Conv0/fq_weights_1" -> "2 Conv0" [label="[3, 3, 1, 1]", style=solid]; +"42 Constant_33894" -> "41 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; +"43 Constant_33893" -> "41 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; +"44 Constant_33892" -> "41 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; +"45 Constant_33891" -> "41 Conv0/fq_weights_1" [label="[3, 1, 1, 1]", style=solid]; +"46 Constant_31397" -> "41 Conv0/fq_weights_1" [label="[3, 3, 1, 1]", style=solid]; +"47 Constant_33889" -> "1 Input/fq_output_0" [label="[]", style=solid]; +"48 Constant_33888" -> "1 Input/fq_output_0" [label="[]", style=solid]; +"49 Constant_33887" -> "1 Input/fq_output_0" [label="[]", style=solid]; +"50 Constant_33886" -> "1 Input/fq_output_0" [label="[]", style=solid]; } diff --git a/tests/openvino/native/data/2023.1/reference_graphs/quantized/mobilenet-v3-small-1.0-224-tf_performance.dot b/tests/openvino/native/data/2023.1/reference_graphs/quantized/mobilenet-v3-small-1.0-224-tf_performance.dot index 1fe2c06c4ae..46e74566032 100644 --- a/tests/openvino/native/data/2023.1/reference_graphs/quantized/mobilenet-v3-small-1.0-224-tf_performance.dot +++ b/tests/openvino/native/data/2023.1/reference_graphs/quantized/mobilenet-v3-small-1.0-224-tf_performance.dot @@ -14,962 +14,782 @@ strict digraph { "12 Transpose_5241/fq_output_0" [id=12, type=FakeQuantize]; "13 Transpose_5245" [id=13, type=ReduceMean]; "14 Transpose_5277" [id=14, type=Multiply]; -"15 Transpose_5245/fq_output_0" [id=15, type=FakeQuantize]; +"15 Convolution_801" [id=15, type=Convolution]; "16 Transpose_5277/fq_output_0" [id=16, type=FakeQuantize]; -"17 Convolution_801" [id=17, type=Convolution]; +"17 Transpose_5251" [id=17, type=Add]; "18 Multiply_9195" [id=18, type=Convolution]; -"19 Transpose_5251" [id=19, type=Add]; +"19 Transpose_5253" [id=19, type=Relu]; "20 Transpose_5301" [id=20, type=Add]; -"21 Transpose_5253" [id=21, type=Relu]; +"21 Convolution_810" [id=21, type=Convolution]; "22 Transpose_5301/fq_output_0" [id=22, type=FakeQuantize]; -"23 Transpose_5253/fq_output_0" [id=23, type=FakeQuantize]; +"23 Transpose_5259" [id=23, type=Add]; "24 Multiply_9209" [id=24, type=Convolution]; -"25 Convolution_810" [id=25, type=Convolution]; +"25 Transpose_5273" [id=25, type=HSigmoid]; "26 Transpose_5325" [id=26, type=Add]; -"27 Transpose_5259" [id=27, type=Add]; +"27 Transpose_5273/fq_output_0" [id=27, type=FakeQuantize]; "28 Transpose_5327" [id=28, type=Relu]; -"29 Transpose_5273" [id=29, type=HSigmoid]; -"30 Transpose_5327/fq_output_0" [id=30, type=FakeQuantize]; -"31 Transpose_5273/fq_output_0" [id=31, type=FakeQuantize]; -"32 Multiply_9223" [id=32, type=GroupConvolution]; -"33 Transpose_5378" [id=33, type=Add]; -"34 Transpose_5380" [id=34, type=Relu]; -"35 Transpose_5380/fq_output_0" [id=35, type=FakeQuantize]; -"36 Multiply_9237" [id=36, type=Convolution]; -"37 Transpose_5404" [id=37, type=Add]; -"38 Transpose_5404/fq_output_0" [id=38, type=FakeQuantize]; -"39 Multiply_9251" [id=39, type=Convolution]; -"40 Transpose_5484" [id=40, type=Add]; -"41 Transpose_5428" [id=41, type=Add]; -"42 Transpose_5484/fq_output_0" [id=42, type=FakeQuantize]; -"43 Transpose_5430" [id=43, type=Relu]; -"44 Multiply_9293" [id=44, type=Convolution]; -"45 Transpose_5430/fq_output_0" [id=45, type=FakeQuantize]; -"46 Transpose_5508" [id=46, type=Add]; -"47 Multiply_9265" [id=47, type=GroupConvolution]; -"48 Transpose_5526" [id=48, type=HSwish]; -"49 Transpose_5454" [id=49, type=Add]; -"50 Transpose_5526/fq_output_0" [id=50, type=FakeQuantize]; -"51 Transpose_5456" [id=51, type=Relu]; -"52 Multiply_9307" [id=52, type=GroupConvolution]; -"53 Transpose_5456/fq_output_0" [id=53, type=FakeQuantize]; -"54 Transpose_5577" [id=54, type=Add]; -"55 Multiply_9279" [id=55, type=Convolution]; -"56 Transpose_5595" [id=56, type=HSwish]; -"57 Transpose_5480" [id=57, type=Add]; -"58 Transpose_5595/fq_output_0" [id=58, type=FakeQuantize]; -"59 Transpose_5480/fq_output_0" [id=59, type=FakeQuantize]; -"60 Transpose_5599" [id=60, type=ReduceMean]; -"61 Transpose_5631" [id=61, type=Multiply]; -"62 Transpose_5599/fq_output_0" [id=62, type=FakeQuantize]; -"63 Transpose_5631/fq_output_0" [id=63, type=FakeQuantize]; -"64 Convolution_1132" [id=64, type=Convolution]; -"65 Multiply_9321" [id=65, type=Convolution]; -"66 Transpose_5605" [id=66, type=Add]; -"67 Transpose_5655" [id=67, type=Add]; -"68 Transpose_5607" [id=68, type=Relu]; -"69 Transpose_5655/fq_output_0" [id=69, type=FakeQuantize]; -"70 Transpose_5607/fq_output_0" [id=70, type=FakeQuantize]; -"71 Multiply_9335" [id=71, type=Convolution]; -"72 Transpose_5803" [id=72, type=Add]; -"73 Convolution_1141" [id=73, type=Convolution]; -"74 Transpose_5679" [id=74, type=Add]; -"75 Transpose_5803/fq_output_0" [id=75, type=FakeQuantize]; -"76 Transpose_5613" [id=76, type=Add]; -"77 Transpose_5697" [id=77, type=HSwish]; -"78 Multiply_9377" [id=78, type=Convolution]; -"79 Transpose_5951" [id=79, type=Add]; -"80 Transpose_5627" [id=80, type=HSigmoid]; -"81 Transpose_5697/fq_output_0" [id=81, type=FakeQuantize]; -"82 Transpose_5827" [id=82, type=Add]; -"83 Transpose_5951/fq_output_0" [id=83, type=FakeQuantize]; -"84 Transpose_5627/fq_output_0" [id=84, type=FakeQuantize]; -"85 Multiply_9349" [id=85, type=GroupConvolution]; -"86 Transpose_5845" [id=86, type=HSwish]; -"87 Multiply_9419" [id=87, type=Convolution]; -"88 Transpose_5721" [id=88, type=Add]; -"89 Transpose_5845/fq_output_0" [id=89, type=FakeQuantize]; -"90 Transpose_5975" [id=90, type=Add]; -"91 Transpose_5739" [id=91, type=HSwish]; -"92 Multiply_9391" [id=92, type=GroupConvolution]; -"93 Transpose_5993" [id=93, type=HSwish]; -"94 Transpose_5739/fq_output_0" [id=94, type=FakeQuantize]; -"95 Transpose_5869" [id=95, type=Add]; -"96 Transpose_5993/fq_output_0" [id=96, type=FakeQuantize]; -"97 Transpose_5743" [id=97, type=ReduceMean]; -"98 Transpose_5775" [id=98, type=Multiply]; -"99 Transpose_5887" [id=99, type=HSwish]; -"100 Multiply_9433" [id=100, type=GroupConvolution]; -"101 Transpose_5743/fq_output_0" [id=101, type=FakeQuantize]; -"102 Transpose_5775/fq_output_0" [id=102, type=FakeQuantize]; -"103 Transpose_5887/fq_output_0" [id=103, type=FakeQuantize]; -"104 Transpose_6017" [id=104, type=Add]; -"105 Convolution_1242" [id=105, type=Convolution]; -"106 Multiply_9363" [id=106, type=Convolution]; -"107 Transpose_5891" [id=107, type=ReduceMean]; -"108 Transpose_5923" [id=108, type=Multiply]; -"109 Transpose_6035" [id=109, type=HSwish]; -"110 Transpose_5749" [id=110, type=Add]; -"111 Transpose_5799" [id=111, type=Add]; -"112 Transpose_5891/fq_output_0" [id=112, type=FakeQuantize]; -"113 Transpose_5923/fq_output_0" [id=113, type=FakeQuantize]; -"114 Transpose_6035/fq_output_0" [id=114, type=FakeQuantize]; -"115 Transpose_5751" [id=115, type=Relu]; -"116 Transpose_5799/fq_output_0" [id=116, type=FakeQuantize]; -"117 Convolution_1353" [id=117, type=Convolution]; -"118 Multiply_9405" [id=118, type=Convolution]; -"119 Transpose_6039" [id=119, type=ReduceMean]; -"120 Transpose_6071" [id=120, type=Multiply]; -"121 Transpose_5751/fq_output_0" [id=121, type=FakeQuantize]; -"122 Transpose_5897" [id=122, type=Add]; -"123 Transpose_5947" [id=123, type=Add]; -"124 Transpose_6039/fq_output_0" [id=124, type=FakeQuantize]; -"125 Transpose_6071/fq_output_0" [id=125, type=FakeQuantize]; -"126 Convolution_1251" [id=126, type=Convolution]; -"127 Transpose_5899" [id=127, type=Relu]; -"128 Transpose_5947/fq_output_0" [id=128, type=FakeQuantize]; -"129 Convolution_1464" [id=129, type=Convolution]; -"130 Multiply_9447" [id=130, type=Convolution]; -"131 Transpose_5757" [id=131, type=Add]; -"132 Transpose_5899/fq_output_0" [id=132, type=FakeQuantize]; -"133 Transpose_6045" [id=133, type=Add]; -"134 Transpose_6095" [id=134, type=Add]; -"135 Transpose_5771" [id=135, type=HSigmoid]; -"136 Convolution_1362" [id=136, type=Convolution]; -"137 Transpose_6047" [id=137, type=Relu]; -"138 Transpose_6095/fq_output_0" [id=138, type=FakeQuantize]; -"139 Transpose_5771/fq_output_0" [id=139, type=FakeQuantize]; -"140 Transpose_5905" [id=140, type=Add]; -"141 Transpose_6047/fq_output_0" [id=141, type=FakeQuantize]; -"142 Multiply_9461" [id=142, type=Convolution]; -"143 Transpose_6243" [id=143, type=Add]; -"144 Transpose_5919" [id=144, type=HSigmoid]; -"145 Convolution_1473" [id=145, type=Convolution]; -"146 Transpose_6119" [id=146, type=Add]; -"147 Transpose_6243/fq_output_0" [id=147, type=FakeQuantize]; -"148 Transpose_5919/fq_output_0" [id=148, type=FakeQuantize]; -"149 Transpose_6053" [id=149, type=Add]; -"150 Transpose_6137" [id=150, type=HSwish]; -"151 Multiply_9503" [id=151, type=Convolution]; -"152 Transpose_6067" [id=152, type=HSigmoid]; -"153 Transpose_6137/fq_output_0" [id=153, type=FakeQuantize]; -"154 Transpose_6267" [id=154, type=Add]; -"155 Transpose_6067/fq_output_0" [id=155, type=FakeQuantize]; -"156 Multiply_9475" [id=156, type=GroupConvolution]; -"157 Transpose_6285" [id=157, type=HSwish]; -"158 Transpose_6161" [id=158, type=Add]; -"159 Transpose_6285/fq_output_0" [id=159, type=FakeQuantize]; -"160 Transpose_6179" [id=160, type=HSwish]; -"161 Multiply_9517" [id=161, type=GroupConvolution]; -"162 Transpose_6179/fq_output_0" [id=162, type=FakeQuantize]; -"163 Transpose_6336" [id=163, type=Add]; -"164 Transpose_6183" [id=164, type=ReduceMean]; -"165 Transpose_6215" [id=165, type=Multiply]; -"166 Transpose_6354" [id=166, type=HSwish]; -"167 Transpose_6183/fq_output_0" [id=167, type=FakeQuantize]; -"168 Transpose_6215/fq_output_0" [id=168, type=FakeQuantize]; -"169 Transpose_6354/fq_output_0" [id=169, type=FakeQuantize]; -"170 Convolution_1574" [id=170, type=Convolution]; -"171 Multiply_9489" [id=171, type=Convolution]; -"172 Transpose_6358" [id=172, type=ReduceMean]; -"173 Transpose_6390" [id=173, type=Multiply]; -"174 Transpose_6189" [id=174, type=Add]; -"175 Transpose_6239" [id=175, type=Add]; -"176 Transpose_6358/fq_output_0" [id=176, type=FakeQuantize]; -"177 Transpose_6390/fq_output_0" [id=177, type=FakeQuantize]; -"178 Transpose_6191" [id=178, type=Relu]; -"179 Transpose_6239/fq_output_0" [id=179, type=FakeQuantize]; -"180 Convolution_1713" [id=180, type=Convolution]; -"181 Multiply_9531" [id=181, type=Convolution]; -"182 Transpose_6191/fq_output_0" [id=182, type=FakeQuantize]; -"183 Transpose_6364" [id=183, type=Add]; -"184 Transpose_6414" [id=184, type=Add]; -"185 Convolution_1583" [id=185, type=Convolution]; -"186 Transpose_6366" [id=186, type=Relu]; -"187 Transpose_6414/fq_output_0" [id=187, type=FakeQuantize]; -"188 Transpose_6197" [id=188, type=Add]; -"189 Transpose_6366/fq_output_0" [id=189, type=FakeQuantize]; -"190 Multiply_9545" [id=190, type=Convolution]; -"191 Transpose_6562" [id=191, type=Add]; -"192 Transpose_6211" [id=192, type=HSigmoid]; -"193 Convolution_1722" [id=193, type=Convolution]; -"194 Transpose_6438" [id=194, type=Add]; -"195 Transpose_6562/fq_output_0" [id=195, type=FakeQuantize]; -"196 Transpose_6211/fq_output_0" [id=196, type=FakeQuantize]; -"197 Transpose_6372" [id=197, type=Add]; -"198 Transpose_6456" [id=198, type=HSwish]; -"199 Multiply_9587" [id=199, type=Convolution]; -"200 Transpose_6710" [id=200, type=Add]; -"201 Transpose_6386" [id=201, type=HSigmoid]; -"202 Transpose_6456/fq_output_0" [id=202, type=FakeQuantize]; -"203 Transpose_6586" [id=203, type=Add]; -"204 Transpose_6710/fq_output_0" [id=204, type=FakeQuantize]; -"205 Transpose_6386/fq_output_0" [id=205, type=FakeQuantize]; -"206 Multiply_9559" [id=206, type=GroupConvolution]; -"207 Transpose_6604" [id=207, type=HSwish]; -"208 Multiply_9629" [id=208, type=Convolution]; -"209 Transpose_6480" [id=209, type=Add]; -"210 Transpose_6604/fq_output_0" [id=210, type=FakeQuantize]; -"211 Transpose_6734" [id=211, type=Add]; -"212 Transpose_6498" [id=212, type=HSwish]; -"213 Multiply_9601" [id=213, type=GroupConvolution]; -"214 Transpose_6752" [id=214, type=HSwish]; -"215 Transpose_6498/fq_output_0" [id=215, type=FakeQuantize]; -"216 Transpose_6628" [id=216, type=Add]; -"217 Transpose_6752/fq_output_0" [id=217, type=FakeQuantize]; -"218 Transpose_6502" [id=218, type=ReduceMean]; -"219 Transpose_6534" [id=219, type=Multiply]; -"220 Transpose_6646" [id=220, type=HSwish]; -"221 Transpose_6756" [id=221, type=ReduceMean]; -"222 Transpose_6502/fq_output_0" [id=222, type=FakeQuantize]; -"223 Transpose_6534/fq_output_0" [id=223, type=FakeQuantize]; -"224 Transpose_6646/fq_output_0" [id=224, type=FakeQuantize]; -"225 Transpose_6756/fq_output_0" [id=225, type=FakeQuantize]; -"226 Convolution_1823" [id=226, type=Convolution]; -"227 Multiply_9573" [id=227, type=Convolution]; -"228 Transpose_6650" [id=228, type=ReduceMean]; -"229 Transpose_6682" [id=229, type=Multiply]; -"230 Convolution_2013" [id=230, type=Convolution]; -"231 Transpose_6508" [id=231, type=Add]; -"232 Transpose_6558" [id=232, type=Add]; -"233 Transpose_6650/fq_output_0" [id=233, type=FakeQuantize]; -"234 Transpose_6682/fq_output_0" [id=234, type=FakeQuantize]; -"235 Transpose_6762" [id=235, type=Add]; -"236 Transpose_6510" [id=236, type=Relu]; -"237 Transpose_6558/fq_output_0" [id=237, type=FakeQuantize]; -"238 Convolution_1934" [id=238, type=Convolution]; -"239 Multiply_9615" [id=239, type=Convolution]; -"240 Transpose_6780" [id=240, type=HSwish]; -"241 Transpose_6510/fq_output_0" [id=241, type=FakeQuantize]; -"242 Transpose_6656" [id=242, type=Add]; -"243 Transpose_6706" [id=243, type=Add]; -"244 Transpose_6780/fq_output_0" [id=244, type=FakeQuantize]; -"245 Convolution_1832" [id=245, type=Convolution]; -"246 Transpose_6658" [id=246, type=Relu]; -"247 Transpose_6706/fq_output_0" [id=247, type=FakeQuantize]; -"248 Convolution_2025" [id=248, type=Convolution]; -"249 Transpose_6516" [id=249, type=Add]; -"250 Transpose_6658/fq_output_0" [id=250, type=FakeQuantize]; -"251 Transpose_6786" [id=251, type=Add]; -"252 Transpose_6530" [id=252, type=HSigmoid]; -"253 Convolution_1943" [id=253, type=Convolution]; -"254 MobilenetV3small/Logits/BiasAdd" [id=254, type=Reshape]; -"255 Transpose_6530/fq_output_0" [id=255, type=FakeQuantize]; -"256 Transpose_6664" [id=256, type=Add]; -"257 MobilenetV3small/flatten/Reshape" [id=257, type=Reshape]; -"258 Transpose_6678" [id=258, type=HSigmoid]; -"259 MobilenetV3small/Predictions/Softmax" [id=259, type=Softmax]; -"260 Transpose_6678/fq_output_0" [id=260, type=FakeQuantize]; -"261 Predictions" [id=261, type=Result]; -"262 MobilenetV3small/flatten/Const" [id=262, type=Constant]; -"263 Constant_8887" [id=263, type=Constant]; -"264 Transpose_6784" [id=264, type=Constant]; -"265 Convolution_2025/fq_weights_1" [id=265, type=FakeQuantize]; -"266 Constant_13812" [id=266, type=Constant]; -"267 Constant_13811" [id=267, type=Constant]; -"268 Constant_13810" [id=268, type=Constant]; -"269 Constant_13809" [id=269, type=Constant]; -"270 Transpose_2024" [id=270, type=Constant]; -"271 Constant_13807" [id=271, type=Constant]; -"272 Constant_13806" [id=272, type=Constant]; -"273 Constant_13805" [id=273, type=Constant]; -"274 Constant_13804" [id=274, type=Constant]; -"275 Transpose_6760" [id=275, type=Constant]; -"276 Convolution_2013/fq_weights_1" [id=276, type=FakeQuantize]; -"277 Constant_13802" [id=277, type=Constant]; -"278 Constant_13801" [id=278, type=Constant]; -"279 Constant_13800" [id=279, type=Constant]; -"280 Constant_13799" [id=280, type=Constant]; -"281 Transpose_2012" [id=281, type=Constant]; -"282 Constant_13797" [id=282, type=Constant]; -"283 Constant_13796" [id=283, type=Constant]; -"284 Constant_13795" [id=284, type=Constant]; -"285 Constant_13794" [id=285, type=Constant]; -"286 Constant_6754" [id=286, type=Constant]; -"287 Constant_13792" [id=287, type=Constant]; -"288 Constant_13791" [id=288, type=Constant]; -"289 Constant_13790" [id=289, type=Constant]; -"290 Constant_13789" [id=290, type=Constant]; -"291 Constant_9637" [id=291, type=Constant]; -"292 Multiply_9629/fq_weights_1" [id=292, type=FakeQuantize]; -"293 Constant_13787" [id=293, type=Constant]; -"294 Constant_13786" [id=294, type=Constant]; -"295 Constant_13785" [id=295, type=Constant]; -"296 Constant_13784" [id=296, type=Constant]; -"297 Multiply_9830" [id=297, type=Constant]; -"298 Constant_13782" [id=298, type=Constant]; -"299 Constant_13781" [id=299, type=Constant]; -"300 Constant_13780" [id=300, type=Constant]; -"301 Constant_13779" [id=301, type=Constant]; -"302 Constant_13777" [id=302, type=Constant]; -"303 Constant_13776" [id=303, type=Constant]; -"304 Constant_13775" [id=304, type=Constant]; -"305 Constant_13774" [id=305, type=Constant]; -"306 Constant_9623" [id=306, type=Constant]; -"307 Multiply_9615/fq_weights_1" [id=307, type=FakeQuantize]; -"308 Constant_13772" [id=308, type=Constant]; -"309 Constant_13771" [id=309, type=Constant]; -"310 Constant_13770" [id=310, type=Constant]; -"311 Constant_13769" [id=311, type=Constant]; -"312 Multiply_9824" [id=312, type=Constant]; -"313 Constant_13767" [id=313, type=Constant]; -"314 Constant_13766" [id=314, type=Constant]; -"315 Constant_13765" [id=315, type=Constant]; -"316 Constant_13764" [id=316, type=Constant]; -"317 Constant_13762" [id=317, type=Constant]; -"318 Constant_13761" [id=318, type=Constant]; -"319 Constant_13760" [id=319, type=Constant]; -"320 Constant_13759" [id=320, type=Constant]; -"321 Transpose_6662" [id=321, type=Constant]; -"322 Convolution_1943/fq_weights_1" [id=322, type=FakeQuantize]; -"323 Constant_13757" [id=323, type=Constant]; -"324 Constant_13756" [id=324, type=Constant]; -"325 Constant_13755" [id=325, type=Constant]; -"326 Constant_13754" [id=326, type=Constant]; -"327 Transpose_1942" [id=327, type=Constant]; -"328 Constant_13752" [id=328, type=Constant]; -"329 Constant_13751" [id=329, type=Constant]; -"330 Constant_13750" [id=330, type=Constant]; -"331 Constant_13749" [id=331, type=Constant]; -"332 Transpose_6654" [id=332, type=Constant]; -"333 Convolution_1934/fq_weights_1" [id=333, type=FakeQuantize]; -"334 Constant_13747" [id=334, type=Constant]; -"335 Constant_13746" [id=335, type=Constant]; -"336 Constant_13745" [id=336, type=Constant]; -"337 Constant_13744" [id=337, type=Constant]; -"338 Transpose_1933" [id=338, type=Constant]; -"339 Constant_13742" [id=339, type=Constant]; -"340 Constant_13741" [id=340, type=Constant]; -"341 Constant_13740" [id=341, type=Constant]; -"342 Constant_13739" [id=342, type=Constant]; -"343 Constant_6648" [id=343, type=Constant]; -"344 Constant_13737" [id=344, type=Constant]; -"345 Constant_13736" [id=345, type=Constant]; -"346 Constant_13735" [id=346, type=Constant]; -"347 Constant_13734" [id=347, type=Constant]; -"348 Constant_9609" [id=348, type=Constant]; -"349 Multiply_9601/fq_weights_1" [id=349, type=FakeQuantize]; -"350 Constant_13732" [id=350, type=Constant]; -"351 Constant_13731" [id=351, type=Constant]; -"352 Constant_13730" [id=352, type=Constant]; -"353 Constant_13729" [id=353, type=Constant]; -"354 Multiply_9819" [id=354, type=Constant]; -"355 Constant_13727" [id=355, type=Constant]; -"356 Constant_13726" [id=356, type=Constant]; -"357 Constant_13725" [id=357, type=Constant]; -"358 Constant_13724" [id=358, type=Constant]; -"359 Constant_9595" [id=359, type=Constant]; -"360 Multiply_9587/fq_weights_1" [id=360, type=FakeQuantize]; -"361 Constant_13722" [id=361, type=Constant]; -"362 Constant_13721" [id=362, type=Constant]; -"363 Constant_13720" [id=363, type=Constant]; -"364 Constant_13719" [id=364, type=Constant]; -"365 Multiply_9813" [id=365, type=Constant]; -"366 Constant_13717" [id=366, type=Constant]; -"367 Constant_13716" [id=367, type=Constant]; -"368 Constant_13715" [id=368, type=Constant]; -"369 Constant_13714" [id=369, type=Constant]; -"370 Constant_13712" [id=370, type=Constant]; -"371 Constant_13711" [id=371, type=Constant]; -"372 Constant_13710" [id=372, type=Constant]; -"373 Constant_13709" [id=373, type=Constant]; -"374 Constant_9581" [id=374, type=Constant]; -"375 Multiply_9573/fq_weights_1" [id=375, type=FakeQuantize]; -"376 Constant_13707" [id=376, type=Constant]; -"377 Constant_13706" [id=377, type=Constant]; -"378 Constant_13705" [id=378, type=Constant]; -"379 Constant_13704" [id=379, type=Constant]; -"380 Multiply_9807" [id=380, type=Constant]; -"381 Constant_13702" [id=381, type=Constant]; -"382 Constant_13701" [id=382, type=Constant]; -"383 Constant_13700" [id=383, type=Constant]; -"384 Constant_13699" [id=384, type=Constant]; -"385 Constant_13697" [id=385, type=Constant]; -"386 Constant_13696" [id=386, type=Constant]; -"387 Constant_13695" [id=387, type=Constant]; -"388 Constant_13694" [id=388, type=Constant]; -"389 Transpose_6514" [id=389, type=Constant]; -"390 Convolution_1832/fq_weights_1" [id=390, type=FakeQuantize]; -"391 Constant_13692" [id=391, type=Constant]; -"392 Constant_13691" [id=392, type=Constant]; -"393 Constant_13690" [id=393, type=Constant]; -"394 Constant_13689" [id=394, type=Constant]; -"395 Transpose_1831" [id=395, type=Constant]; -"396 Constant_13687" [id=396, type=Constant]; -"397 Constant_13686" [id=397, type=Constant]; -"398 Constant_13685" [id=398, type=Constant]; -"399 Constant_13684" [id=399, type=Constant]; -"400 Transpose_6506" [id=400, type=Constant]; -"401 Convolution_1823/fq_weights_1" [id=401, type=FakeQuantize]; -"402 Constant_13682" [id=402, type=Constant]; -"403 Constant_13681" [id=403, type=Constant]; -"404 Constant_13680" [id=404, type=Constant]; -"405 Constant_13679" [id=405, type=Constant]; -"406 Transpose_1822" [id=406, type=Constant]; -"407 Constant_13677" [id=407, type=Constant]; -"408 Constant_13676" [id=408, type=Constant]; -"409 Constant_13675" [id=409, type=Constant]; -"410 Constant_13674" [id=410, type=Constant]; -"411 Constant_6500" [id=411, type=Constant]; -"412 Constant_13672" [id=412, type=Constant]; -"413 Constant_13671" [id=413, type=Constant]; -"414 Constant_13670" [id=414, type=Constant]; -"415 Constant_13669" [id=415, type=Constant]; -"416 Constant_9567" [id=416, type=Constant]; -"417 Multiply_9559/fq_weights_1" [id=417, type=FakeQuantize]; -"418 Constant_13667" [id=418, type=Constant]; -"419 Constant_13666" [id=419, type=Constant]; -"420 Constant_13665" [id=420, type=Constant]; -"421 Constant_13664" [id=421, type=Constant]; -"422 Multiply_9802" [id=422, type=Constant]; -"423 Constant_13662" [id=423, type=Constant]; -"424 Constant_13661" [id=424, type=Constant]; -"425 Constant_13660" [id=425, type=Constant]; -"426 Constant_13659" [id=426, type=Constant]; -"427 Constant_9553" [id=427, type=Constant]; -"428 Multiply_9545/fq_weights_1" [id=428, type=FakeQuantize]; -"429 Constant_13657" [id=429, type=Constant]; -"430 Constant_13656" [id=430, type=Constant]; -"431 Constant_13655" [id=431, type=Constant]; -"432 Constant_13654" [id=432, type=Constant]; -"433 Multiply_9796" [id=433, type=Constant]; -"434 Constant_13652" [id=434, type=Constant]; -"435 Constant_13651" [id=435, type=Constant]; -"436 Constant_13650" [id=436, type=Constant]; -"437 Constant_13649" [id=437, type=Constant]; -"438 Constant_9539" [id=438, type=Constant]; -"439 Multiply_9531/fq_weights_1" [id=439, type=FakeQuantize]; -"440 Constant_13647" [id=440, type=Constant]; -"441 Constant_13646" [id=441, type=Constant]; -"442 Constant_13645" [id=442, type=Constant]; -"443 Constant_13644" [id=443, type=Constant]; -"444 Multiply_9790" [id=444, type=Constant]; -"445 Constant_13642" [id=445, type=Constant]; -"446 Constant_13641" [id=446, type=Constant]; -"447 Constant_13640" [id=447, type=Constant]; -"448 Constant_13639" [id=448, type=Constant]; -"449 Constant_13637" [id=449, type=Constant]; -"450 Constant_13636" [id=450, type=Constant]; -"451 Constant_13635" [id=451, type=Constant]; -"452 Constant_13634" [id=452, type=Constant]; -"453 Transpose_6370" [id=453, type=Constant]; -"454 Convolution_1722/fq_weights_1" [id=454, type=FakeQuantize]; -"455 Constant_13632" [id=455, type=Constant]; -"456 Constant_13631" [id=456, type=Constant]; -"457 Constant_13630" [id=457, type=Constant]; -"458 Constant_13629" [id=458, type=Constant]; -"459 Transpose_1721" [id=459, type=Constant]; -"460 Constant_13627" [id=460, type=Constant]; -"461 Constant_13626" [id=461, type=Constant]; -"462 Constant_13625" [id=462, type=Constant]; -"463 Constant_13624" [id=463, type=Constant]; -"464 Transpose_6362" [id=464, type=Constant]; -"465 Convolution_1713/fq_weights_1" [id=465, type=FakeQuantize]; -"466 Constant_13622" [id=466, type=Constant]; -"467 Constant_13621" [id=467, type=Constant]; -"468 Constant_13620" [id=468, type=Constant]; -"469 Constant_13619" [id=469, type=Constant]; -"470 Transpose_1712" [id=470, type=Constant]; -"471 Constant_13617" [id=471, type=Constant]; -"472 Constant_13616" [id=472, type=Constant]; -"473 Constant_13615" [id=473, type=Constant]; -"474 Constant_13614" [id=474, type=Constant]; -"475 Constant_6356" [id=475, type=Constant]; -"476 Constant_13612" [id=476, type=Constant]; -"477 Constant_13611" [id=477, type=Constant]; -"478 Constant_13610" [id=478, type=Constant]; -"479 Constant_13609" [id=479, type=Constant]; -"480 Constant_9525" [id=480, type=Constant]; -"481 Multiply_9517/fq_weights_1" [id=481, type=FakeQuantize]; -"482 Constant_13607" [id=482, type=Constant]; -"483 Constant_13606" [id=483, type=Constant]; -"484 Constant_13605" [id=484, type=Constant]; -"485 Constant_13604" [id=485, type=Constant]; -"486 Multiply_9785" [id=486, type=Constant]; -"487 Constant_13602" [id=487, type=Constant]; -"488 Constant_13601" [id=488, type=Constant]; -"489 Constant_13600" [id=489, type=Constant]; -"490 Constant_13599" [id=490, type=Constant]; -"491 Constant_9511" [id=491, type=Constant]; -"492 Multiply_9503/fq_weights_1" [id=492, type=FakeQuantize]; -"493 Constant_13597" [id=493, type=Constant]; -"494 Constant_13596" [id=494, type=Constant]; -"495 Constant_13595" [id=495, type=Constant]; -"496 Constant_13594" [id=496, type=Constant]; -"497 Multiply_9779" [id=497, type=Constant]; -"498 Constant_13592" [id=498, type=Constant]; -"499 Constant_13591" [id=499, type=Constant]; -"500 Constant_13590" [id=500, type=Constant]; -"501 Constant_13589" [id=501, type=Constant]; -"502 Constant_13587" [id=502, type=Constant]; -"503 Constant_13586" [id=503, type=Constant]; -"504 Constant_13585" [id=504, type=Constant]; -"505 Constant_13584" [id=505, type=Constant]; -"506 Constant_9497" [id=506, type=Constant]; -"507 Multiply_9489/fq_weights_1" [id=507, type=FakeQuantize]; -"508 Constant_13582" [id=508, type=Constant]; -"509 Constant_13581" [id=509, type=Constant]; -"510 Constant_13580" [id=510, type=Constant]; -"511 Constant_13579" [id=511, type=Constant]; -"512 Multiply_9773" [id=512, type=Constant]; -"513 Constant_13577" [id=513, type=Constant]; -"514 Constant_13576" [id=514, type=Constant]; -"515 Constant_13575" [id=515, type=Constant]; -"516 Constant_13574" [id=516, type=Constant]; -"517 Constant_13572" [id=517, type=Constant]; -"518 Constant_13571" [id=518, type=Constant]; -"519 Constant_13570" [id=519, type=Constant]; -"520 Constant_13569" [id=520, type=Constant]; -"521 Transpose_6195" [id=521, type=Constant]; -"522 Convolution_1583/fq_weights_1" [id=522, type=FakeQuantize]; -"523 Constant_13567" [id=523, type=Constant]; -"524 Constant_13566" [id=524, type=Constant]; -"525 Constant_13565" [id=525, type=Constant]; -"526 Constant_13564" [id=526, type=Constant]; -"527 Transpose_1582" [id=527, type=Constant]; -"528 Constant_13562" [id=528, type=Constant]; -"529 Constant_13561" [id=529, type=Constant]; -"530 Constant_13560" [id=530, type=Constant]; -"531 Constant_13559" [id=531, type=Constant]; -"532 Transpose_6187" [id=532, type=Constant]; -"533 Convolution_1574/fq_weights_1" [id=533, type=FakeQuantize]; -"534 Constant_13557" [id=534, type=Constant]; -"535 Constant_13556" [id=535, type=Constant]; -"536 Constant_13555" [id=536, type=Constant]; -"537 Constant_13554" [id=537, type=Constant]; -"538 Transpose_1573" [id=538, type=Constant]; -"539 Constant_13552" [id=539, type=Constant]; -"540 Constant_13551" [id=540, type=Constant]; -"541 Constant_13550" [id=541, type=Constant]; -"542 Constant_13549" [id=542, type=Constant]; -"543 Constant_6181" [id=543, type=Constant]; -"544 Constant_13547" [id=544, type=Constant]; -"545 Constant_13546" [id=545, type=Constant]; -"546 Constant_13545" [id=546, type=Constant]; -"547 Constant_13544" [id=547, type=Constant]; -"548 Constant_9483" [id=548, type=Constant]; -"549 Multiply_9475/fq_weights_1" [id=549, type=FakeQuantize]; -"550 Constant_13542" [id=550, type=Constant]; -"551 Constant_13541" [id=551, type=Constant]; -"552 Constant_13540" [id=552, type=Constant]; -"553 Constant_13539" [id=553, type=Constant]; -"554 Multiply_9768" [id=554, type=Constant]; -"555 Constant_13537" [id=555, type=Constant]; -"556 Constant_13536" [id=556, type=Constant]; -"557 Constant_13535" [id=557, type=Constant]; -"558 Constant_13534" [id=558, type=Constant]; -"559 Constant_9469" [id=559, type=Constant]; -"560 Multiply_9461/fq_weights_1" [id=560, type=FakeQuantize]; -"561 Constant_13532" [id=561, type=Constant]; -"562 Constant_13531" [id=562, type=Constant]; -"563 Constant_13530" [id=563, type=Constant]; -"564 Constant_13529" [id=564, type=Constant]; -"565 Multiply_9762" [id=565, type=Constant]; -"566 Constant_13527" [id=566, type=Constant]; -"567 Constant_13526" [id=567, type=Constant]; -"568 Constant_13525" [id=568, type=Constant]; -"569 Constant_13524" [id=569, type=Constant]; -"570 Constant_9455" [id=570, type=Constant]; -"571 Multiply_9447/fq_weights_1" [id=571, type=FakeQuantize]; -"572 Constant_13522" [id=572, type=Constant]; -"573 Constant_13521" [id=573, type=Constant]; -"574 Constant_13520" [id=574, type=Constant]; -"575 Constant_13519" [id=575, type=Constant]; -"576 Multiply_9756" [id=576, type=Constant]; -"577 Constant_13517" [id=577, type=Constant]; -"578 Constant_13516" [id=578, type=Constant]; -"579 Constant_13515" [id=579, type=Constant]; -"580 Constant_13514" [id=580, type=Constant]; -"581 Constant_13512" [id=581, type=Constant]; -"582 Constant_13511" [id=582, type=Constant]; -"583 Constant_13510" [id=583, type=Constant]; -"584 Constant_13509" [id=584, type=Constant]; -"585 Transpose_6051" [id=585, type=Constant]; -"586 Convolution_1473/fq_weights_1" [id=586, type=FakeQuantize]; -"587 Constant_13507" [id=587, type=Constant]; -"588 Constant_13506" [id=588, type=Constant]; -"589 Constant_13505" [id=589, type=Constant]; -"590 Constant_13504" [id=590, type=Constant]; -"591 Transpose_1472" [id=591, type=Constant]; -"592 Constant_13502" [id=592, type=Constant]; -"593 Constant_13501" [id=593, type=Constant]; -"594 Constant_13500" [id=594, type=Constant]; -"595 Constant_13499" [id=595, type=Constant]; -"596 Transpose_6043" [id=596, type=Constant]; -"597 Convolution_1464/fq_weights_1" [id=597, type=FakeQuantize]; -"598 Constant_13497" [id=598, type=Constant]; -"599 Constant_13496" [id=599, type=Constant]; -"600 Constant_13495" [id=600, type=Constant]; -"601 Constant_13494" [id=601, type=Constant]; -"602 Transpose_1463" [id=602, type=Constant]; -"603 Constant_13492" [id=603, type=Constant]; -"604 Constant_13491" [id=604, type=Constant]; -"605 Constant_13490" [id=605, type=Constant]; -"606 Constant_13489" [id=606, type=Constant]; -"607 Constant_6037" [id=607, type=Constant]; -"608 Constant_13487" [id=608, type=Constant]; -"609 Constant_13486" [id=609, type=Constant]; -"610 Constant_13485" [id=610, type=Constant]; -"611 Constant_13484" [id=611, type=Constant]; -"612 Constant_9441" [id=612, type=Constant]; -"613 Multiply_9433/fq_weights_1" [id=613, type=FakeQuantize]; -"614 Constant_13482" [id=614, type=Constant]; -"615 Constant_13481" [id=615, type=Constant]; -"616 Constant_13480" [id=616, type=Constant]; -"617 Constant_13479" [id=617, type=Constant]; -"618 Multiply_9751" [id=618, type=Constant]; -"619 Constant_13477" [id=619, type=Constant]; -"620 Constant_13476" [id=620, type=Constant]; -"621 Constant_13475" [id=621, type=Constant]; -"622 Constant_13474" [id=622, type=Constant]; -"623 Constant_9427" [id=623, type=Constant]; -"624 Multiply_9419/fq_weights_1" [id=624, type=FakeQuantize]; -"625 Constant_13472" [id=625, type=Constant]; -"626 Constant_13471" [id=626, type=Constant]; -"627 Constant_13470" [id=627, type=Constant]; -"628 Constant_13469" [id=628, type=Constant]; -"629 Multiply_9745" [id=629, type=Constant]; -"630 Constant_13467" [id=630, type=Constant]; -"631 Constant_13466" [id=631, type=Constant]; -"632 Constant_13465" [id=632, type=Constant]; -"633 Constant_13464" [id=633, type=Constant]; -"634 Constant_13462" [id=634, type=Constant]; -"635 Constant_13461" [id=635, type=Constant]; -"636 Constant_13460" [id=636, type=Constant]; -"637 Constant_13459" [id=637, type=Constant]; -"638 Constant_9413" [id=638, type=Constant]; -"639 Multiply_9405/fq_weights_1" [id=639, type=FakeQuantize]; -"640 Constant_13457" [id=640, type=Constant]; -"641 Constant_13456" [id=641, type=Constant]; -"642 Constant_13455" [id=642, type=Constant]; -"643 Constant_13454" [id=643, type=Constant]; -"644 Multiply_9739" [id=644, type=Constant]; -"645 Constant_13452" [id=645, type=Constant]; -"646 Constant_13451" [id=646, type=Constant]; -"647 Constant_13450" [id=647, type=Constant]; -"648 Constant_13449" [id=648, type=Constant]; -"649 Constant_13447" [id=649, type=Constant]; -"650 Constant_13446" [id=650, type=Constant]; -"651 Constant_13445" [id=651, type=Constant]; -"652 Constant_13444" [id=652, type=Constant]; -"653 Transpose_5903" [id=653, type=Constant]; -"654 Convolution_1362/fq_weights_1" [id=654, type=FakeQuantize]; -"655 Constant_13442" [id=655, type=Constant]; -"656 Constant_13441" [id=656, type=Constant]; -"657 Constant_13440" [id=657, type=Constant]; -"658 Constant_13439" [id=658, type=Constant]; -"659 Transpose_1361" [id=659, type=Constant]; -"660 Constant_13437" [id=660, type=Constant]; -"661 Constant_13436" [id=661, type=Constant]; -"662 Constant_13435" [id=662, type=Constant]; -"663 Constant_13434" [id=663, type=Constant]; -"664 Transpose_5895" [id=664, type=Constant]; -"665 Convolution_1353/fq_weights_1" [id=665, type=FakeQuantize]; -"666 Constant_13432" [id=666, type=Constant]; -"667 Constant_13431" [id=667, type=Constant]; -"668 Constant_13430" [id=668, type=Constant]; -"669 Constant_13429" [id=669, type=Constant]; -"670 Transpose_1352" [id=670, type=Constant]; -"671 Constant_13427" [id=671, type=Constant]; -"672 Constant_13426" [id=672, type=Constant]; -"673 Constant_13425" [id=673, type=Constant]; -"674 Constant_13424" [id=674, type=Constant]; -"675 Constant_5889" [id=675, type=Constant]; -"676 Constant_13422" [id=676, type=Constant]; -"677 Constant_13421" [id=677, type=Constant]; -"678 Constant_13420" [id=678, type=Constant]; -"679 Constant_13419" [id=679, type=Constant]; -"680 Constant_9399" [id=680, type=Constant]; -"681 Multiply_9391/fq_weights_1" [id=681, type=FakeQuantize]; -"682 Constant_13417" [id=682, type=Constant]; -"683 Constant_13416" [id=683, type=Constant]; -"684 Constant_13415" [id=684, type=Constant]; -"685 Constant_13414" [id=685, type=Constant]; -"686 Multiply_9734" [id=686, type=Constant]; -"687 Constant_13412" [id=687, type=Constant]; -"688 Constant_13411" [id=688, type=Constant]; -"689 Constant_13410" [id=689, type=Constant]; -"690 Constant_13409" [id=690, type=Constant]; -"691 Constant_9385" [id=691, type=Constant]; -"692 Multiply_9377/fq_weights_1" [id=692, type=FakeQuantize]; -"693 Constant_13407" [id=693, type=Constant]; -"694 Constant_13406" [id=694, type=Constant]; -"695 Constant_13405" [id=695, type=Constant]; -"696 Constant_13404" [id=696, type=Constant]; -"697 Multiply_9728" [id=697, type=Constant]; -"698 Constant_13402" [id=698, type=Constant]; -"699 Constant_13401" [id=699, type=Constant]; -"700 Constant_13400" [id=700, type=Constant]; -"701 Constant_13399" [id=701, type=Constant]; -"702 Constant_13397" [id=702, type=Constant]; -"703 Constant_13396" [id=703, type=Constant]; -"704 Constant_13395" [id=704, type=Constant]; -"705 Constant_13394" [id=705, type=Constant]; -"706 Constant_9371" [id=706, type=Constant]; -"707 Multiply_9363/fq_weights_1" [id=707, type=FakeQuantize]; -"708 Constant_13392" [id=708, type=Constant]; -"709 Constant_13391" [id=709, type=Constant]; -"710 Constant_13390" [id=710, type=Constant]; -"711 Constant_13389" [id=711, type=Constant]; -"712 Multiply_9722" [id=712, type=Constant]; -"713 Constant_13387" [id=713, type=Constant]; -"714 Constant_13386" [id=714, type=Constant]; -"715 Constant_13385" [id=715, type=Constant]; -"716 Constant_13384" [id=716, type=Constant]; -"717 Constant_13382" [id=717, type=Constant]; -"718 Constant_13381" [id=718, type=Constant]; -"719 Constant_13380" [id=719, type=Constant]; -"720 Constant_13379" [id=720, type=Constant]; -"721 Transpose_5755" [id=721, type=Constant]; -"722 Convolution_1251/fq_weights_1" [id=722, type=FakeQuantize]; -"723 Constant_13377" [id=723, type=Constant]; -"724 Constant_13376" [id=724, type=Constant]; -"725 Constant_13375" [id=725, type=Constant]; -"726 Constant_13374" [id=726, type=Constant]; -"727 Transpose_1250" [id=727, type=Constant]; -"728 Constant_13372" [id=728, type=Constant]; -"729 Constant_13371" [id=729, type=Constant]; -"730 Constant_13370" [id=730, type=Constant]; -"731 Constant_13369" [id=731, type=Constant]; -"732 Transpose_5747" [id=732, type=Constant]; -"733 Convolution_1242/fq_weights_1" [id=733, type=FakeQuantize]; -"734 Constant_13367" [id=734, type=Constant]; -"735 Constant_13366" [id=735, type=Constant]; -"736 Constant_13365" [id=736, type=Constant]; -"737 Constant_13364" [id=737, type=Constant]; -"738 Transpose_1241" [id=738, type=Constant]; -"739 Constant_13362" [id=739, type=Constant]; -"740 Constant_13361" [id=740, type=Constant]; -"741 Constant_13360" [id=741, type=Constant]; -"742 Constant_13359" [id=742, type=Constant]; -"743 Constant_5741" [id=743, type=Constant]; -"744 Constant_13357" [id=744, type=Constant]; -"745 Constant_13356" [id=745, type=Constant]; -"746 Constant_13355" [id=746, type=Constant]; -"747 Constant_13354" [id=747, type=Constant]; -"748 Constant_9357" [id=748, type=Constant]; -"749 Multiply_9349/fq_weights_1" [id=749, type=FakeQuantize]; -"750 Constant_13352" [id=750, type=Constant]; -"751 Constant_13351" [id=751, type=Constant]; -"752 Constant_13350" [id=752, type=Constant]; -"753 Constant_13349" [id=753, type=Constant]; -"754 Multiply_9717" [id=754, type=Constant]; -"755 Constant_13347" [id=755, type=Constant]; -"756 Constant_13346" [id=756, type=Constant]; -"757 Constant_13345" [id=757, type=Constant]; -"758 Constant_13344" [id=758, type=Constant]; -"759 Constant_9343" [id=759, type=Constant]; -"760 Multiply_9335/fq_weights_1" [id=760, type=FakeQuantize]; -"761 Constant_13342" [id=761, type=Constant]; -"762 Constant_13341" [id=762, type=Constant]; -"763 Constant_13340" [id=763, type=Constant]; -"764 Constant_13339" [id=764, type=Constant]; -"765 Multiply_9711" [id=765, type=Constant]; -"766 Constant_13337" [id=766, type=Constant]; -"767 Constant_13336" [id=767, type=Constant]; -"768 Constant_13335" [id=768, type=Constant]; -"769 Constant_13334" [id=769, type=Constant]; -"770 Constant_9329" [id=770, type=Constant]; -"771 Multiply_9321/fq_weights_1" [id=771, type=FakeQuantize]; -"772 Constant_13332" [id=772, type=Constant]; -"773 Constant_13331" [id=773, type=Constant]; -"774 Constant_13330" [id=774, type=Constant]; -"775 Constant_13329" [id=775, type=Constant]; -"776 Multiply_9705" [id=776, type=Constant]; -"777 Constant_13327" [id=777, type=Constant]; -"778 Constant_13326" [id=778, type=Constant]; -"779 Constant_13325" [id=779, type=Constant]; -"780 Constant_13324" [id=780, type=Constant]; -"781 Constant_13322" [id=781, type=Constant]; -"782 Constant_13321" [id=782, type=Constant]; -"783 Constant_13320" [id=783, type=Constant]; -"784 Constant_13319" [id=784, type=Constant]; -"785 Transpose_5611" [id=785, type=Constant]; -"786 Convolution_1141/fq_weights_1" [id=786, type=FakeQuantize]; -"787 Constant_13317" [id=787, type=Constant]; -"788 Constant_13316" [id=788, type=Constant]; -"789 Constant_13315" [id=789, type=Constant]; -"790 Constant_13314" [id=790, type=Constant]; -"791 Transpose_1140" [id=791, type=Constant]; -"792 Constant_13312" [id=792, type=Constant]; -"793 Constant_13311" [id=793, type=Constant]; -"794 Constant_13310" [id=794, type=Constant]; -"795 Constant_13309" [id=795, type=Constant]; -"796 Transpose_5603" [id=796, type=Constant]; -"797 Convolution_1132/fq_weights_1" [id=797, type=FakeQuantize]; -"798 Constant_13307" [id=798, type=Constant]; -"799 Constant_13306" [id=799, type=Constant]; -"800 Constant_13305" [id=800, type=Constant]; -"801 Constant_13304" [id=801, type=Constant]; -"802 Transpose_1131" [id=802, type=Constant]; -"803 Constant_13302" [id=803, type=Constant]; -"804 Constant_13301" [id=804, type=Constant]; -"805 Constant_13300" [id=805, type=Constant]; -"806 Constant_13299" [id=806, type=Constant]; -"807 Constant_5597" [id=807, type=Constant]; -"808 Constant_13297" [id=808, type=Constant]; -"809 Constant_13296" [id=809, type=Constant]; -"810 Constant_13295" [id=810, type=Constant]; -"811 Constant_13294" [id=811, type=Constant]; -"812 Constant_9315" [id=812, type=Constant]; -"813 Multiply_9307/fq_weights_1" [id=813, type=FakeQuantize]; -"814 Constant_13292" [id=814, type=Constant]; -"815 Constant_13291" [id=815, type=Constant]; -"816 Constant_13290" [id=816, type=Constant]; -"817 Constant_13289" [id=817, type=Constant]; -"818 Multiply_9700" [id=818, type=Constant]; -"819 Constant_13287" [id=819, type=Constant]; -"820 Constant_13286" [id=820, type=Constant]; -"821 Constant_13285" [id=821, type=Constant]; -"822 Constant_13284" [id=822, type=Constant]; -"823 Constant_9301" [id=823, type=Constant]; -"824 Multiply_9293/fq_weights_1" [id=824, type=FakeQuantize]; -"825 Constant_13282" [id=825, type=Constant]; -"826 Constant_13281" [id=826, type=Constant]; -"827 Constant_13280" [id=827, type=Constant]; -"828 Constant_13279" [id=828, type=Constant]; -"829 Multiply_9694" [id=829, type=Constant]; -"830 Constant_13277" [id=830, type=Constant]; -"831 Constant_13276" [id=831, type=Constant]; -"832 Constant_13275" [id=832, type=Constant]; -"833 Constant_13274" [id=833, type=Constant]; -"834 Constant_13272" [id=834, type=Constant]; -"835 Constant_13271" [id=835, type=Constant]; -"836 Constant_13270" [id=836, type=Constant]; -"837 Constant_13269" [id=837, type=Constant]; -"838 Constant_9287" [id=838, type=Constant]; -"839 Multiply_9279/fq_weights_1" [id=839, type=FakeQuantize]; -"840 Constant_13267" [id=840, type=Constant]; -"841 Constant_13266" [id=841, type=Constant]; -"842 Constant_13265" [id=842, type=Constant]; -"843 Constant_13264" [id=843, type=Constant]; -"844 Multiply_9688" [id=844, type=Constant]; -"845 Constant_13262" [id=845, type=Constant]; -"846 Constant_13261" [id=846, type=Constant]; -"847 Constant_13260" [id=847, type=Constant]; -"848 Constant_13259" [id=848, type=Constant]; -"849 Constant_9273" [id=849, type=Constant]; -"850 Multiply_9265/fq_weights_1" [id=850, type=FakeQuantize]; -"851 Constant_13257" [id=851, type=Constant]; -"852 Constant_13256" [id=852, type=Constant]; -"853 Constant_13255" [id=853, type=Constant]; -"854 Constant_13254" [id=854, type=Constant]; -"855 Multiply_9683" [id=855, type=Constant]; -"856 Constant_13252" [id=856, type=Constant]; -"857 Constant_13251" [id=857, type=Constant]; -"858 Constant_13250" [id=858, type=Constant]; -"859 Constant_13249" [id=859, type=Constant]; -"860 Constant_9259" [id=860, type=Constant]; -"861 Multiply_9251/fq_weights_1" [id=861, type=FakeQuantize]; -"862 Constant_13247" [id=862, type=Constant]; -"863 Constant_13246" [id=863, type=Constant]; -"864 Constant_13245" [id=864, type=Constant]; -"865 Constant_13244" [id=865, type=Constant]; -"866 Multiply_9677" [id=866, type=Constant]; -"867 Constant_13242" [id=867, type=Constant]; -"868 Constant_13241" [id=868, type=Constant]; -"869 Constant_13240" [id=869, type=Constant]; -"870 Constant_13239" [id=870, type=Constant]; -"871 Constant_9245" [id=871, type=Constant]; -"872 Multiply_9237/fq_weights_1" [id=872, type=FakeQuantize]; -"873 Constant_13237" [id=873, type=Constant]; -"874 Constant_13236" [id=874, type=Constant]; -"875 Constant_13235" [id=875, type=Constant]; -"876 Constant_13234" [id=876, type=Constant]; -"877 Multiply_9671" [id=877, type=Constant]; -"878 Constant_13232" [id=878, type=Constant]; -"879 Constant_13231" [id=879, type=Constant]; -"880 Constant_13230" [id=880, type=Constant]; -"881 Constant_13229" [id=881, type=Constant]; -"882 Constant_9231" [id=882, type=Constant]; -"883 Multiply_9223/fq_weights_1" [id=883, type=FakeQuantize]; -"884 Constant_13227" [id=884, type=Constant]; -"885 Constant_13226" [id=885, type=Constant]; -"886 Constant_13225" [id=886, type=Constant]; -"887 Constant_13224" [id=887, type=Constant]; -"888 Multiply_9666" [id=888, type=Constant]; -"889 Constant_13222" [id=889, type=Constant]; -"890 Constant_13221" [id=890, type=Constant]; -"891 Constant_13220" [id=891, type=Constant]; -"892 Constant_13219" [id=892, type=Constant]; -"893 Constant_9217" [id=893, type=Constant]; -"894 Multiply_9209/fq_weights_1" [id=894, type=FakeQuantize]; -"895 Constant_13217" [id=895, type=Constant]; -"896 Constant_13216" [id=896, type=Constant]; -"897 Constant_13215" [id=897, type=Constant]; -"898 Constant_13214" [id=898, type=Constant]; -"899 Multiply_9660" [id=899, type=Constant]; -"900 Constant_13212" [id=900, type=Constant]; -"901 Constant_13211" [id=901, type=Constant]; -"902 Constant_13210" [id=902, type=Constant]; -"903 Constant_13209" [id=903, type=Constant]; -"904 Constant_9203" [id=904, type=Constant]; -"905 Multiply_9195/fq_weights_1" [id=905, type=FakeQuantize]; -"906 Constant_13207" [id=906, type=Constant]; -"907 Constant_13206" [id=907, type=Constant]; -"908 Constant_13205" [id=908, type=Constant]; -"909 Constant_13204" [id=909, type=Constant]; -"910 Multiply_9654" [id=910, type=Constant]; -"911 Constant_13202" [id=911, type=Constant]; -"912 Constant_13201" [id=912, type=Constant]; -"913 Constant_13200" [id=913, type=Constant]; -"914 Constant_13199" [id=914, type=Constant]; -"915 Constant_13197" [id=915, type=Constant]; -"916 Constant_13196" [id=916, type=Constant]; -"917 Constant_13195" [id=917, type=Constant]; -"918 Constant_13194" [id=918, type=Constant]; -"919 Transpose_5257" [id=919, type=Constant]; -"920 Convolution_810/fq_weights_1" [id=920, type=FakeQuantize]; -"921 Constant_13192" [id=921, type=Constant]; -"922 Constant_13191" [id=922, type=Constant]; -"923 Constant_13190" [id=923, type=Constant]; -"924 Constant_13189" [id=924, type=Constant]; -"925 Transpose_809" [id=925, type=Constant]; -"926 Constant_13187" [id=926, type=Constant]; -"927 Constant_13186" [id=927, type=Constant]; -"928 Constant_13185" [id=928, type=Constant]; -"929 Constant_13184" [id=929, type=Constant]; -"930 Transpose_5249" [id=930, type=Constant]; -"931 Convolution_801/fq_weights_1" [id=931, type=FakeQuantize]; -"932 Constant_13182" [id=932, type=Constant]; -"933 Constant_13181" [id=933, type=Constant]; -"934 Constant_13180" [id=934, type=Constant]; -"935 Constant_13179" [id=935, type=Constant]; -"936 Transpose_800" [id=936, type=Constant]; -"937 Constant_13177" [id=937, type=Constant]; -"938 Constant_13176" [id=938, type=Constant]; -"939 Constant_13175" [id=939, type=Constant]; -"940 Constant_13174" [id=940, type=Constant]; -"941 Constant_5243" [id=941, type=Constant]; -"942 Constant_13172" [id=942, type=Constant]; -"943 Constant_13171" [id=943, type=Constant]; -"944 Constant_13170" [id=944, type=Constant]; -"945 Constant_13169" [id=945, type=Constant]; -"946 Constant_9189" [id=946, type=Constant]; -"947 Multiply_9181/fq_weights_1" [id=947, type=FakeQuantize]; -"948 Constant_13167" [id=948, type=Constant]; -"949 Constant_13166" [id=949, type=Constant]; -"950 Constant_13165" [id=950, type=Constant]; -"951 Constant_13164" [id=951, type=Constant]; -"952 Multiply_9649" [id=952, type=Constant]; -"953 Constant_13162" [id=953, type=Constant]; -"954 Constant_13161" [id=954, type=Constant]; -"955 Constant_13160" [id=955, type=Constant]; -"956 Constant_13159" [id=956, type=Constant]; -"957 Constant_9175" [id=957, type=Constant]; -"958 Multiply_9167/fq_weights_1" [id=958, type=FakeQuantize]; -"959 Constant_13157" [id=959, type=Constant]; -"960 Constant_13156" [id=960, type=Constant]; -"961 Constant_13155" [id=961, type=Constant]; -"962 Constant_13154" [id=962, type=Constant]; -"963 Gather_10068" [id=963, type=Constant]; -"964 Constant_13152" [id=964, type=Constant]; -"965 Constant_13151" [id=965, type=Constant]; -"966 Constant_13150" [id=966, type=Constant]; -"967 Constant_13149" [id=967, type=Constant]; -"968 Unsqueeze_7776" [id=968, type=Constant]; -"969 Unsqueeze_7782" [id=969, type=Constant]; -"970 Constant_7779" [id=970, type=Constant]; +"29 Transpose_5327/fq_output_0" [id=29, type=FakeQuantize]; +"30 Multiply_9223" [id=30, type=GroupConvolution]; +"31 Transpose_5378" [id=31, type=Add]; +"32 Transpose_5380" [id=32, type=Relu]; +"33 Transpose_5380/fq_output_0" [id=33, type=FakeQuantize]; +"34 Multiply_9237" [id=34, type=Convolution]; +"35 Transpose_5404" [id=35, type=Add]; +"36 Transpose_5404/fq_output_0" [id=36, type=FakeQuantize]; +"37 Multiply_9251" [id=37, type=Convolution]; +"38 Transpose_5484" [id=38, type=Add]; +"39 Transpose_5428" [id=39, type=Add]; +"40 Transpose_5484/fq_output_0" [id=40, type=FakeQuantize]; +"41 Transpose_5430" [id=41, type=Relu]; +"42 Multiply_9293" [id=42, type=Convolution]; +"43 Transpose_5430/fq_output_0" [id=43, type=FakeQuantize]; +"44 Transpose_5508" [id=44, type=Add]; +"45 Multiply_9265" [id=45, type=GroupConvolution]; +"46 Transpose_5526" [id=46, type=HSwish]; +"47 Transpose_5454" [id=47, type=Add]; +"48 Transpose_5526/fq_output_0" [id=48, type=FakeQuantize]; +"49 Transpose_5456" [id=49, type=Relu]; +"50 Multiply_9307" [id=50, type=GroupConvolution]; +"51 Transpose_5456/fq_output_0" [id=51, type=FakeQuantize]; +"52 Transpose_5577" [id=52, type=Add]; +"53 Multiply_9279" [id=53, type=Convolution]; +"54 Transpose_5595" [id=54, type=HSwish]; +"55 Transpose_5480" [id=55, type=Add]; +"56 Transpose_5595/fq_output_0" [id=56, type=FakeQuantize]; +"57 Transpose_5480/fq_output_0" [id=57, type=FakeQuantize]; +"58 Transpose_5599" [id=58, type=ReduceMean]; +"59 Transpose_5631" [id=59, type=Multiply]; +"60 Convolution_1132" [id=60, type=Convolution]; +"61 Transpose_5631/fq_output_0" [id=61, type=FakeQuantize]; +"62 Transpose_5605" [id=62, type=Add]; +"63 Multiply_9321" [id=63, type=Convolution]; +"64 Transpose_5607" [id=64, type=Relu]; +"65 Transpose_5655" [id=65, type=Add]; +"66 Convolution_1141" [id=66, type=Convolution]; +"67 Transpose_5655/fq_output_0" [id=67, type=FakeQuantize]; +"68 Transpose_5613" [id=68, type=Add]; +"69 Multiply_9335" [id=69, type=Convolution]; +"70 Transpose_5803" [id=70, type=Add]; +"71 Transpose_5627" [id=71, type=HSigmoid]; +"72 Transpose_5679" [id=72, type=Add]; +"73 Transpose_5803/fq_output_0" [id=73, type=FakeQuantize]; +"74 Transpose_5627/fq_output_0" [id=74, type=FakeQuantize]; +"75 Transpose_5697" [id=75, type=HSwish]; +"76 Multiply_9377" [id=76, type=Convolution]; +"77 Transpose_5951" [id=77, type=Add]; +"78 Transpose_5697/fq_output_0" [id=78, type=FakeQuantize]; +"79 Transpose_5827" [id=79, type=Add]; +"80 Transpose_5951/fq_output_0" [id=80, type=FakeQuantize]; +"81 Multiply_9349" [id=81, type=GroupConvolution]; +"82 Transpose_5845" [id=82, type=HSwish]; +"83 Multiply_9419" [id=83, type=Convolution]; +"84 Transpose_5721" [id=84, type=Add]; +"85 Transpose_5845/fq_output_0" [id=85, type=FakeQuantize]; +"86 Transpose_5975" [id=86, type=Add]; +"87 Transpose_5739" [id=87, type=HSwish]; +"88 Multiply_9391" [id=88, type=GroupConvolution]; +"89 Transpose_5993" [id=89, type=HSwish]; +"90 Transpose_5739/fq_output_0" [id=90, type=FakeQuantize]; +"91 Transpose_5869" [id=91, type=Add]; +"92 Transpose_5993/fq_output_0" [id=92, type=FakeQuantize]; +"93 Transpose_5743" [id=93, type=ReduceMean]; +"94 Transpose_5775" [id=94, type=Multiply]; +"95 Transpose_5887" [id=95, type=HSwish]; +"96 Multiply_9433" [id=96, type=GroupConvolution]; +"97 Convolution_1242" [id=97, type=Convolution]; +"98 Transpose_5775/fq_output_0" [id=98, type=FakeQuantize]; +"99 Transpose_5887/fq_output_0" [id=99, type=FakeQuantize]; +"100 Transpose_6017" [id=100, type=Add]; +"101 Transpose_5749" [id=101, type=Add]; +"102 Multiply_9363" [id=102, type=Convolution]; +"103 Transpose_5891" [id=103, type=ReduceMean]; +"104 Transpose_5923" [id=104, type=Multiply]; +"105 Transpose_6035" [id=105, type=HSwish]; +"106 Transpose_5751" [id=106, type=Relu]; +"107 Transpose_5799" [id=107, type=Add]; +"108 Convolution_1353" [id=108, type=Convolution]; +"109 Transpose_5923/fq_output_0" [id=109, type=FakeQuantize]; +"110 Transpose_6035/fq_output_0" [id=110, type=FakeQuantize]; +"111 Convolution_1251" [id=111, type=Convolution]; +"112 Transpose_5799/fq_output_0" [id=112, type=FakeQuantize]; +"113 Transpose_5897" [id=113, type=Add]; +"114 Multiply_9405" [id=114, type=Convolution]; +"115 Transpose_6039" [id=115, type=ReduceMean]; +"116 Transpose_6071" [id=116, type=Multiply]; +"117 Transpose_5757" [id=117, type=Add]; +"118 Transpose_5899" [id=118, type=Relu]; +"119 Transpose_5947" [id=119, type=Add]; +"120 Convolution_1464" [id=120, type=Convolution]; +"121 Transpose_6071/fq_output_0" [id=121, type=FakeQuantize]; +"122 Transpose_5771" [id=122, type=HSigmoid]; +"123 Convolution_1362" [id=123, type=Convolution]; +"124 Transpose_5947/fq_output_0" [id=124, type=FakeQuantize]; +"125 Transpose_6045" [id=125, type=Add]; +"126 Multiply_9447" [id=126, type=Convolution]; +"127 Transpose_5771/fq_output_0" [id=127, type=FakeQuantize]; +"128 Transpose_5905" [id=128, type=Add]; +"129 Transpose_6047" [id=129, type=Relu]; +"130 Transpose_6095" [id=130, type=Add]; +"131 Transpose_5919" [id=131, type=HSigmoid]; +"132 Convolution_1473" [id=132, type=Convolution]; +"133 Transpose_6095/fq_output_0" [id=133, type=FakeQuantize]; +"134 Transpose_5919/fq_output_0" [id=134, type=FakeQuantize]; +"135 Transpose_6053" [id=135, type=Add]; +"136 Multiply_9461" [id=136, type=Convolution]; +"137 Transpose_6243" [id=137, type=Add]; +"138 Transpose_6067" [id=138, type=HSigmoid]; +"139 Transpose_6119" [id=139, type=Add]; +"140 Transpose_6243/fq_output_0" [id=140, type=FakeQuantize]; +"141 Transpose_6067/fq_output_0" [id=141, type=FakeQuantize]; +"142 Transpose_6137" [id=142, type=HSwish]; +"143 Multiply_9503" [id=143, type=Convolution]; +"144 Transpose_6137/fq_output_0" [id=144, type=FakeQuantize]; +"145 Transpose_6267" [id=145, type=Add]; +"146 Multiply_9475" [id=146, type=GroupConvolution]; +"147 Transpose_6285" [id=147, type=HSwish]; +"148 Transpose_6161" [id=148, type=Add]; +"149 Transpose_6285/fq_output_0" [id=149, type=FakeQuantize]; +"150 Transpose_6179" [id=150, type=HSwish]; +"151 Multiply_9517" [id=151, type=GroupConvolution]; +"152 Transpose_6179/fq_output_0" [id=152, type=FakeQuantize]; +"153 Transpose_6336" [id=153, type=Add]; +"154 Transpose_6183" [id=154, type=ReduceMean]; +"155 Transpose_6215" [id=155, type=Multiply]; +"156 Transpose_6354" [id=156, type=HSwish]; +"157 Convolution_1574" [id=157, type=Convolution]; +"158 Transpose_6215/fq_output_0" [id=158, type=FakeQuantize]; +"159 Transpose_6354/fq_output_0" [id=159, type=FakeQuantize]; +"160 Transpose_6189" [id=160, type=Add]; +"161 Multiply_9489" [id=161, type=Convolution]; +"162 Transpose_6358" [id=162, type=ReduceMean]; +"163 Transpose_6390" [id=163, type=Multiply]; +"164 Transpose_6191" [id=164, type=Relu]; +"165 Transpose_6239" [id=165, type=Add]; +"166 Convolution_1713" [id=166, type=Convolution]; +"167 Transpose_6390/fq_output_0" [id=167, type=FakeQuantize]; +"168 Convolution_1583" [id=168, type=Convolution]; +"169 Transpose_6239/fq_output_0" [id=169, type=FakeQuantize]; +"170 Transpose_6364" [id=170, type=Add]; +"171 Multiply_9531" [id=171, type=Convolution]; +"172 Transpose_6197" [id=172, type=Add]; +"173 Transpose_6366" [id=173, type=Relu]; +"174 Transpose_6414" [id=174, type=Add]; +"175 Transpose_6211" [id=175, type=HSigmoid]; +"176 Convolution_1722" [id=176, type=Convolution]; +"177 Transpose_6414/fq_output_0" [id=177, type=FakeQuantize]; +"178 Transpose_6211/fq_output_0" [id=178, type=FakeQuantize]; +"179 Transpose_6372" [id=179, type=Add]; +"180 Multiply_9545" [id=180, type=Convolution]; +"181 Transpose_6562" [id=181, type=Add]; +"182 Transpose_6386" [id=182, type=HSigmoid]; +"183 Transpose_6438" [id=183, type=Add]; +"184 Transpose_6562/fq_output_0" [id=184, type=FakeQuantize]; +"185 Transpose_6386/fq_output_0" [id=185, type=FakeQuantize]; +"186 Transpose_6456" [id=186, type=HSwish]; +"187 Multiply_9587" [id=187, type=Convolution]; +"188 Transpose_6710" [id=188, type=Add]; +"189 Transpose_6456/fq_output_0" [id=189, type=FakeQuantize]; +"190 Transpose_6586" [id=190, type=Add]; +"191 Transpose_6710/fq_output_0" [id=191, type=FakeQuantize]; +"192 Multiply_9559" [id=192, type=GroupConvolution]; +"193 Transpose_6604" [id=193, type=HSwish]; +"194 Multiply_9629" [id=194, type=Convolution]; +"195 Transpose_6480" [id=195, type=Add]; +"196 Transpose_6604/fq_output_0" [id=196, type=FakeQuantize]; +"197 Transpose_6734" [id=197, type=Add]; +"198 Transpose_6498" [id=198, type=HSwish]; +"199 Multiply_9601" [id=199, type=GroupConvolution]; +"200 Transpose_6752" [id=200, type=HSwish]; +"201 Transpose_6498/fq_output_0" [id=201, type=FakeQuantize]; +"202 Transpose_6628" [id=202, type=Add]; +"203 Transpose_6752/fq_output_0" [id=203, type=FakeQuantize]; +"204 Transpose_6502" [id=204, type=ReduceMean]; +"205 Transpose_6534" [id=205, type=Multiply]; +"206 Transpose_6646" [id=206, type=HSwish]; +"207 Transpose_6756" [id=207, type=ReduceMean]; +"208 Convolution_1823" [id=208, type=Convolution]; +"209 Transpose_6534/fq_output_0" [id=209, type=FakeQuantize]; +"210 Transpose_6646/fq_output_0" [id=210, type=FakeQuantize]; +"211 Transpose_6756/fq_output_0" [id=211, type=FakeQuantize]; +"212 Transpose_6508" [id=212, type=Add]; +"213 Multiply_9573" [id=213, type=Convolution]; +"214 Transpose_6650" [id=214, type=ReduceMean]; +"215 Transpose_6682" [id=215, type=Multiply]; +"216 Convolution_2013" [id=216, type=Convolution]; +"217 Transpose_6510" [id=217, type=Relu]; +"218 Transpose_6558" [id=218, type=Add]; +"219 Convolution_1934" [id=219, type=Convolution]; +"220 Transpose_6682/fq_output_0" [id=220, type=FakeQuantize]; +"221 Transpose_6762" [id=221, type=Add]; +"222 Convolution_1832" [id=222, type=Convolution]; +"223 Transpose_6558/fq_output_0" [id=223, type=FakeQuantize]; +"224 Transpose_6656" [id=224, type=Add]; +"225 Multiply_9615" [id=225, type=Convolution]; +"226 Transpose_6780" [id=226, type=HSwish]; +"227 Transpose_6516" [id=227, type=Add]; +"228 Transpose_6658" [id=228, type=Relu]; +"229 Transpose_6706" [id=229, type=Add]; +"230 Transpose_6780/fq_output_0" [id=230, type=FakeQuantize]; +"231 Transpose_6530" [id=231, type=HSigmoid]; +"232 Convolution_1943" [id=232, type=Convolution]; +"233 Transpose_6706/fq_output_0" [id=233, type=FakeQuantize]; +"234 Convolution_2025" [id=234, type=Convolution]; +"235 Transpose_6530/fq_output_0" [id=235, type=FakeQuantize]; +"236 Transpose_6664" [id=236, type=Add]; +"237 Transpose_6786" [id=237, type=Add]; +"238 Transpose_6678" [id=238, type=HSigmoid]; +"239 MobilenetV3small/Logits/BiasAdd" [id=239, type=Reshape]; +"240 Transpose_6678/fq_output_0" [id=240, type=FakeQuantize]; +"241 MobilenetV3small/flatten/Reshape" [id=241, type=Reshape]; +"242 MobilenetV3small/Predictions/Softmax" [id=242, type=Softmax]; +"243 Predictions" [id=243, type=Result]; +"244 MobilenetV3small/flatten/Const" [id=244, type=Constant]; +"245 Constant_8887" [id=245, type=Constant]; +"246 Transpose_6784" [id=246, type=Constant]; +"247 Convolution_2025/fq_weights_1" [id=247, type=FakeQuantize]; +"248 Constant_11502" [id=248, type=Constant]; +"249 Constant_11501" [id=249, type=Constant]; +"250 Constant_11500" [id=250, type=Constant]; +"251 Constant_11499" [id=251, type=Constant]; +"252 Transpose_2024" [id=252, type=Constant]; +"253 Constant_11497" [id=253, type=Constant]; +"254 Constant_11496" [id=254, type=Constant]; +"255 Constant_11495" [id=255, type=Constant]; +"256 Constant_11494" [id=256, type=Constant]; +"257 Transpose_6760" [id=257, type=Constant]; +"258 Convolution_2013/fq_weights_1" [id=258, type=FakeQuantize]; +"259 Constant_11492" [id=259, type=Constant]; +"260 Constant_11491" [id=260, type=Constant]; +"261 Constant_11490" [id=261, type=Constant]; +"262 Constant_11489" [id=262, type=Constant]; +"263 Transpose_2012" [id=263, type=Constant]; +"264 Constant_11487" [id=264, type=Constant]; +"265 Constant_11486" [id=265, type=Constant]; +"266 Constant_11485" [id=266, type=Constant]; +"267 Constant_11484" [id=267, type=Constant]; +"268 Constant_6754" [id=268, type=Constant]; +"269 Constant_11482" [id=269, type=Constant]; +"270 Constant_11481" [id=270, type=Constant]; +"271 Constant_11480" [id=271, type=Constant]; +"272 Constant_11479" [id=272, type=Constant]; +"273 Constant_9637" [id=273, type=Constant]; +"274 Multiply_9629/fq_weights_1" [id=274, type=FakeQuantize]; +"275 Constant_11477" [id=275, type=Constant]; +"276 Constant_11476" [id=276, type=Constant]; +"277 Constant_11475" [id=277, type=Constant]; +"278 Constant_11474" [id=278, type=Constant]; +"279 Multiply_9830" [id=279, type=Constant]; +"280 Constant_11472" [id=280, type=Constant]; +"281 Constant_11471" [id=281, type=Constant]; +"282 Constant_11470" [id=282, type=Constant]; +"283 Constant_11469" [id=283, type=Constant]; +"284 Constant_11467" [id=284, type=Constant]; +"285 Constant_11466" [id=285, type=Constant]; +"286 Constant_11465" [id=286, type=Constant]; +"287 Constant_11464" [id=287, type=Constant]; +"288 Constant_9623" [id=288, type=Constant]; +"289 Multiply_9615/fq_weights_1" [id=289, type=FakeQuantize]; +"290 Constant_11462" [id=290, type=Constant]; +"291 Constant_11461" [id=291, type=Constant]; +"292 Constant_11460" [id=292, type=Constant]; +"293 Constant_11459" [id=293, type=Constant]; +"294 Multiply_9824" [id=294, type=Constant]; +"295 Constant_11457" [id=295, type=Constant]; +"296 Constant_11456" [id=296, type=Constant]; +"297 Constant_11455" [id=297, type=Constant]; +"298 Constant_11454" [id=298, type=Constant]; +"299 Constant_11452" [id=299, type=Constant]; +"300 Constant_11451" [id=300, type=Constant]; +"301 Constant_11450" [id=301, type=Constant]; +"302 Constant_11449" [id=302, type=Constant]; +"303 Transpose_6662" [id=303, type=Constant]; +"304 Transpose_1942" [id=304, type=Constant]; +"305 Transpose_6654" [id=305, type=Constant]; +"306 Transpose_1933" [id=306, type=Constant]; +"307 Constant_6648" [id=307, type=Constant]; +"308 Constant_11447" [id=308, type=Constant]; +"309 Constant_11446" [id=309, type=Constant]; +"310 Constant_11445" [id=310, type=Constant]; +"311 Constant_11444" [id=311, type=Constant]; +"312 Constant_9609" [id=312, type=Constant]; +"313 Multiply_9601/fq_weights_1" [id=313, type=FakeQuantize]; +"314 Constant_11442" [id=314, type=Constant]; +"315 Constant_11441" [id=315, type=Constant]; +"316 Constant_11440" [id=316, type=Constant]; +"317 Constant_11439" [id=317, type=Constant]; +"318 Multiply_9819" [id=318, type=Constant]; +"319 Constant_11437" [id=319, type=Constant]; +"320 Constant_11436" [id=320, type=Constant]; +"321 Constant_11435" [id=321, type=Constant]; +"322 Constant_11434" [id=322, type=Constant]; +"323 Constant_9595" [id=323, type=Constant]; +"324 Multiply_9587/fq_weights_1" [id=324, type=FakeQuantize]; +"325 Constant_11432" [id=325, type=Constant]; +"326 Constant_11431" [id=326, type=Constant]; +"327 Constant_11430" [id=327, type=Constant]; +"328 Constant_11429" [id=328, type=Constant]; +"329 Multiply_9813" [id=329, type=Constant]; +"330 Constant_11427" [id=330, type=Constant]; +"331 Constant_11426" [id=331, type=Constant]; +"332 Constant_11425" [id=332, type=Constant]; +"333 Constant_11424" [id=333, type=Constant]; +"334 Constant_11422" [id=334, type=Constant]; +"335 Constant_11421" [id=335, type=Constant]; +"336 Constant_11420" [id=336, type=Constant]; +"337 Constant_11419" [id=337, type=Constant]; +"338 Constant_9581" [id=338, type=Constant]; +"339 Multiply_9573/fq_weights_1" [id=339, type=FakeQuantize]; +"340 Constant_11417" [id=340, type=Constant]; +"341 Constant_11416" [id=341, type=Constant]; +"342 Constant_11415" [id=342, type=Constant]; +"343 Constant_11414" [id=343, type=Constant]; +"344 Multiply_9807" [id=344, type=Constant]; +"345 Constant_11412" [id=345, type=Constant]; +"346 Constant_11411" [id=346, type=Constant]; +"347 Constant_11410" [id=347, type=Constant]; +"348 Constant_11409" [id=348, type=Constant]; +"349 Constant_11407" [id=349, type=Constant]; +"350 Constant_11406" [id=350, type=Constant]; +"351 Constant_11405" [id=351, type=Constant]; +"352 Constant_11404" [id=352, type=Constant]; +"353 Transpose_6514" [id=353, type=Constant]; +"354 Transpose_1831" [id=354, type=Constant]; +"355 Transpose_6506" [id=355, type=Constant]; +"356 Transpose_1822" [id=356, type=Constant]; +"357 Constant_6500" [id=357, type=Constant]; +"358 Constant_11402" [id=358, type=Constant]; +"359 Constant_11401" [id=359, type=Constant]; +"360 Constant_11400" [id=360, type=Constant]; +"361 Constant_11399" [id=361, type=Constant]; +"362 Constant_9567" [id=362, type=Constant]; +"363 Multiply_9559/fq_weights_1" [id=363, type=FakeQuantize]; +"364 Constant_11397" [id=364, type=Constant]; +"365 Constant_11396" [id=365, type=Constant]; +"366 Constant_11395" [id=366, type=Constant]; +"367 Constant_11394" [id=367, type=Constant]; +"368 Multiply_9802" [id=368, type=Constant]; +"369 Constant_11392" [id=369, type=Constant]; +"370 Constant_11391" [id=370, type=Constant]; +"371 Constant_11390" [id=371, type=Constant]; +"372 Constant_11389" [id=372, type=Constant]; +"373 Constant_9553" [id=373, type=Constant]; +"374 Multiply_9545/fq_weights_1" [id=374, type=FakeQuantize]; +"375 Constant_11387" [id=375, type=Constant]; +"376 Constant_11386" [id=376, type=Constant]; +"377 Constant_11385" [id=377, type=Constant]; +"378 Constant_11384" [id=378, type=Constant]; +"379 Multiply_9796" [id=379, type=Constant]; +"380 Constant_11382" [id=380, type=Constant]; +"381 Constant_11381" [id=381, type=Constant]; +"382 Constant_11380" [id=382, type=Constant]; +"383 Constant_11379" [id=383, type=Constant]; +"384 Constant_9539" [id=384, type=Constant]; +"385 Multiply_9531/fq_weights_1" [id=385, type=FakeQuantize]; +"386 Constant_11377" [id=386, type=Constant]; +"387 Constant_11376" [id=387, type=Constant]; +"388 Constant_11375" [id=388, type=Constant]; +"389 Constant_11374" [id=389, type=Constant]; +"390 Multiply_9790" [id=390, type=Constant]; +"391 Constant_11372" [id=391, type=Constant]; +"392 Constant_11371" [id=392, type=Constant]; +"393 Constant_11370" [id=393, type=Constant]; +"394 Constant_11369" [id=394, type=Constant]; +"395 Constant_11367" [id=395, type=Constant]; +"396 Constant_11366" [id=396, type=Constant]; +"397 Constant_11365" [id=397, type=Constant]; +"398 Constant_11364" [id=398, type=Constant]; +"399 Transpose_6370" [id=399, type=Constant]; +"400 Transpose_1721" [id=400, type=Constant]; +"401 Transpose_6362" [id=401, type=Constant]; +"402 Transpose_1712" [id=402, type=Constant]; +"403 Constant_6356" [id=403, type=Constant]; +"404 Constant_11362" [id=404, type=Constant]; +"405 Constant_11361" [id=405, type=Constant]; +"406 Constant_11360" [id=406, type=Constant]; +"407 Constant_11359" [id=407, type=Constant]; +"408 Constant_9525" [id=408, type=Constant]; +"409 Multiply_9517/fq_weights_1" [id=409, type=FakeQuantize]; +"410 Constant_11357" [id=410, type=Constant]; +"411 Constant_11356" [id=411, type=Constant]; +"412 Constant_11355" [id=412, type=Constant]; +"413 Constant_11354" [id=413, type=Constant]; +"414 Multiply_9785" [id=414, type=Constant]; +"415 Constant_11352" [id=415, type=Constant]; +"416 Constant_11351" [id=416, type=Constant]; +"417 Constant_11350" [id=417, type=Constant]; +"418 Constant_11349" [id=418, type=Constant]; +"419 Constant_9511" [id=419, type=Constant]; +"420 Multiply_9503/fq_weights_1" [id=420, type=FakeQuantize]; +"421 Constant_11347" [id=421, type=Constant]; +"422 Constant_11346" [id=422, type=Constant]; +"423 Constant_11345" [id=423, type=Constant]; +"424 Constant_11344" [id=424, type=Constant]; +"425 Multiply_9779" [id=425, type=Constant]; +"426 Constant_11342" [id=426, type=Constant]; +"427 Constant_11341" [id=427, type=Constant]; +"428 Constant_11340" [id=428, type=Constant]; +"429 Constant_11339" [id=429, type=Constant]; +"430 Constant_11337" [id=430, type=Constant]; +"431 Constant_11336" [id=431, type=Constant]; +"432 Constant_11335" [id=432, type=Constant]; +"433 Constant_11334" [id=433, type=Constant]; +"434 Constant_9497" [id=434, type=Constant]; +"435 Multiply_9489/fq_weights_1" [id=435, type=FakeQuantize]; +"436 Constant_11332" [id=436, type=Constant]; +"437 Constant_11331" [id=437, type=Constant]; +"438 Constant_11330" [id=438, type=Constant]; +"439 Constant_11329" [id=439, type=Constant]; +"440 Multiply_9773" [id=440, type=Constant]; +"441 Constant_11327" [id=441, type=Constant]; +"442 Constant_11326" [id=442, type=Constant]; +"443 Constant_11325" [id=443, type=Constant]; +"444 Constant_11324" [id=444, type=Constant]; +"445 Constant_11322" [id=445, type=Constant]; +"446 Constant_11321" [id=446, type=Constant]; +"447 Constant_11320" [id=447, type=Constant]; +"448 Constant_11319" [id=448, type=Constant]; +"449 Transpose_6195" [id=449, type=Constant]; +"450 Transpose_1582" [id=450, type=Constant]; +"451 Transpose_6187" [id=451, type=Constant]; +"452 Transpose_1573" [id=452, type=Constant]; +"453 Constant_6181" [id=453, type=Constant]; +"454 Constant_11317" [id=454, type=Constant]; +"455 Constant_11316" [id=455, type=Constant]; +"456 Constant_11315" [id=456, type=Constant]; +"457 Constant_11314" [id=457, type=Constant]; +"458 Constant_9483" [id=458, type=Constant]; +"459 Multiply_9475/fq_weights_1" [id=459, type=FakeQuantize]; +"460 Constant_11312" [id=460, type=Constant]; +"461 Constant_11311" [id=461, type=Constant]; +"462 Constant_11310" [id=462, type=Constant]; +"463 Constant_11309" [id=463, type=Constant]; +"464 Multiply_9768" [id=464, type=Constant]; +"465 Constant_11307" [id=465, type=Constant]; +"466 Constant_11306" [id=466, type=Constant]; +"467 Constant_11305" [id=467, type=Constant]; +"468 Constant_11304" [id=468, type=Constant]; +"469 Constant_9469" [id=469, type=Constant]; +"470 Multiply_9461/fq_weights_1" [id=470, type=FakeQuantize]; +"471 Constant_11302" [id=471, type=Constant]; +"472 Constant_11301" [id=472, type=Constant]; +"473 Constant_11300" [id=473, type=Constant]; +"474 Constant_11299" [id=474, type=Constant]; +"475 Multiply_9762" [id=475, type=Constant]; +"476 Constant_11297" [id=476, type=Constant]; +"477 Constant_11296" [id=477, type=Constant]; +"478 Constant_11295" [id=478, type=Constant]; +"479 Constant_11294" [id=479, type=Constant]; +"480 Constant_9455" [id=480, type=Constant]; +"481 Multiply_9447/fq_weights_1" [id=481, type=FakeQuantize]; +"482 Constant_11292" [id=482, type=Constant]; +"483 Constant_11291" [id=483, type=Constant]; +"484 Constant_11290" [id=484, type=Constant]; +"485 Constant_11289" [id=485, type=Constant]; +"486 Multiply_9756" [id=486, type=Constant]; +"487 Constant_11287" [id=487, type=Constant]; +"488 Constant_11286" [id=488, type=Constant]; +"489 Constant_11285" [id=489, type=Constant]; +"490 Constant_11284" [id=490, type=Constant]; +"491 Constant_11282" [id=491, type=Constant]; +"492 Constant_11281" [id=492, type=Constant]; +"493 Constant_11280" [id=493, type=Constant]; +"494 Constant_11279" [id=494, type=Constant]; +"495 Transpose_6051" [id=495, type=Constant]; +"496 Transpose_1472" [id=496, type=Constant]; +"497 Transpose_6043" [id=497, type=Constant]; +"498 Transpose_1463" [id=498, type=Constant]; +"499 Constant_6037" [id=499, type=Constant]; +"500 Constant_11277" [id=500, type=Constant]; +"501 Constant_11276" [id=501, type=Constant]; +"502 Constant_11275" [id=502, type=Constant]; +"503 Constant_11274" [id=503, type=Constant]; +"504 Constant_9441" [id=504, type=Constant]; +"505 Multiply_9433/fq_weights_1" [id=505, type=FakeQuantize]; +"506 Constant_11272" [id=506, type=Constant]; +"507 Constant_11271" [id=507, type=Constant]; +"508 Constant_11270" [id=508, type=Constant]; +"509 Constant_11269" [id=509, type=Constant]; +"510 Multiply_9751" [id=510, type=Constant]; +"511 Constant_11267" [id=511, type=Constant]; +"512 Constant_11266" [id=512, type=Constant]; +"513 Constant_11265" [id=513, type=Constant]; +"514 Constant_11264" [id=514, type=Constant]; +"515 Constant_9427" [id=515, type=Constant]; +"516 Multiply_9419/fq_weights_1" [id=516, type=FakeQuantize]; +"517 Constant_11262" [id=517, type=Constant]; +"518 Constant_11261" [id=518, type=Constant]; +"519 Constant_11260" [id=519, type=Constant]; +"520 Constant_11259" [id=520, type=Constant]; +"521 Multiply_9745" [id=521, type=Constant]; +"522 Constant_11257" [id=522, type=Constant]; +"523 Constant_11256" [id=523, type=Constant]; +"524 Constant_11255" [id=524, type=Constant]; +"525 Constant_11254" [id=525, type=Constant]; +"526 Constant_11252" [id=526, type=Constant]; +"527 Constant_11251" [id=527, type=Constant]; +"528 Constant_11250" [id=528, type=Constant]; +"529 Constant_11249" [id=529, type=Constant]; +"530 Constant_9413" [id=530, type=Constant]; +"531 Multiply_9405/fq_weights_1" [id=531, type=FakeQuantize]; +"532 Constant_11247" [id=532, type=Constant]; +"533 Constant_11246" [id=533, type=Constant]; +"534 Constant_11245" [id=534, type=Constant]; +"535 Constant_11244" [id=535, type=Constant]; +"536 Multiply_9739" [id=536, type=Constant]; +"537 Constant_11242" [id=537, type=Constant]; +"538 Constant_11241" [id=538, type=Constant]; +"539 Constant_11240" [id=539, type=Constant]; +"540 Constant_11239" [id=540, type=Constant]; +"541 Constant_11237" [id=541, type=Constant]; +"542 Constant_11236" [id=542, type=Constant]; +"543 Constant_11235" [id=543, type=Constant]; +"544 Constant_11234" [id=544, type=Constant]; +"545 Transpose_5903" [id=545, type=Constant]; +"546 Transpose_1361" [id=546, type=Constant]; +"547 Transpose_5895" [id=547, type=Constant]; +"548 Transpose_1352" [id=548, type=Constant]; +"549 Constant_5889" [id=549, type=Constant]; +"550 Constant_11232" [id=550, type=Constant]; +"551 Constant_11231" [id=551, type=Constant]; +"552 Constant_11230" [id=552, type=Constant]; +"553 Constant_11229" [id=553, type=Constant]; +"554 Constant_9399" [id=554, type=Constant]; +"555 Multiply_9391/fq_weights_1" [id=555, type=FakeQuantize]; +"556 Constant_11227" [id=556, type=Constant]; +"557 Constant_11226" [id=557, type=Constant]; +"558 Constant_11225" [id=558, type=Constant]; +"559 Constant_11224" [id=559, type=Constant]; +"560 Multiply_9734" [id=560, type=Constant]; +"561 Constant_11222" [id=561, type=Constant]; +"562 Constant_11221" [id=562, type=Constant]; +"563 Constant_11220" [id=563, type=Constant]; +"564 Constant_11219" [id=564, type=Constant]; +"565 Constant_9385" [id=565, type=Constant]; +"566 Multiply_9377/fq_weights_1" [id=566, type=FakeQuantize]; +"567 Constant_11217" [id=567, type=Constant]; +"568 Constant_11216" [id=568, type=Constant]; +"569 Constant_11215" [id=569, type=Constant]; +"570 Constant_11214" [id=570, type=Constant]; +"571 Multiply_9728" [id=571, type=Constant]; +"572 Constant_11212" [id=572, type=Constant]; +"573 Constant_11211" [id=573, type=Constant]; +"574 Constant_11210" [id=574, type=Constant]; +"575 Constant_11209" [id=575, type=Constant]; +"576 Constant_11207" [id=576, type=Constant]; +"577 Constant_11206" [id=577, type=Constant]; +"578 Constant_11205" [id=578, type=Constant]; +"579 Constant_11204" [id=579, type=Constant]; +"580 Constant_9371" [id=580, type=Constant]; +"581 Multiply_9363/fq_weights_1" [id=581, type=FakeQuantize]; +"582 Constant_11202" [id=582, type=Constant]; +"583 Constant_11201" [id=583, type=Constant]; +"584 Constant_11200" [id=584, type=Constant]; +"585 Constant_11199" [id=585, type=Constant]; +"586 Multiply_9722" [id=586, type=Constant]; +"587 Constant_11197" [id=587, type=Constant]; +"588 Constant_11196" [id=588, type=Constant]; +"589 Constant_11195" [id=589, type=Constant]; +"590 Constant_11194" [id=590, type=Constant]; +"591 Constant_11192" [id=591, type=Constant]; +"592 Constant_11191" [id=592, type=Constant]; +"593 Constant_11190" [id=593, type=Constant]; +"594 Constant_11189" [id=594, type=Constant]; +"595 Transpose_5755" [id=595, type=Constant]; +"596 Transpose_1250" [id=596, type=Constant]; +"597 Transpose_5747" [id=597, type=Constant]; +"598 Transpose_1241" [id=598, type=Constant]; +"599 Constant_5741" [id=599, type=Constant]; +"600 Constant_11187" [id=600, type=Constant]; +"601 Constant_11186" [id=601, type=Constant]; +"602 Constant_11185" [id=602, type=Constant]; +"603 Constant_11184" [id=603, type=Constant]; +"604 Constant_9357" [id=604, type=Constant]; +"605 Multiply_9349/fq_weights_1" [id=605, type=FakeQuantize]; +"606 Constant_11182" [id=606, type=Constant]; +"607 Constant_11181" [id=607, type=Constant]; +"608 Constant_11180" [id=608, type=Constant]; +"609 Constant_11179" [id=609, type=Constant]; +"610 Multiply_9717" [id=610, type=Constant]; +"611 Constant_11177" [id=611, type=Constant]; +"612 Constant_11176" [id=612, type=Constant]; +"613 Constant_11175" [id=613, type=Constant]; +"614 Constant_11174" [id=614, type=Constant]; +"615 Constant_9343" [id=615, type=Constant]; +"616 Multiply_9335/fq_weights_1" [id=616, type=FakeQuantize]; +"617 Constant_11172" [id=617, type=Constant]; +"618 Constant_11171" [id=618, type=Constant]; +"619 Constant_11170" [id=619, type=Constant]; +"620 Constant_11169" [id=620, type=Constant]; +"621 Multiply_9711" [id=621, type=Constant]; +"622 Constant_11167" [id=622, type=Constant]; +"623 Constant_11166" [id=623, type=Constant]; +"624 Constant_11165" [id=624, type=Constant]; +"625 Constant_11164" [id=625, type=Constant]; +"626 Constant_9329" [id=626, type=Constant]; +"627 Multiply_9321/fq_weights_1" [id=627, type=FakeQuantize]; +"628 Constant_11162" [id=628, type=Constant]; +"629 Constant_11161" [id=629, type=Constant]; +"630 Constant_11160" [id=630, type=Constant]; +"631 Constant_11159" [id=631, type=Constant]; +"632 Multiply_9705" [id=632, type=Constant]; +"633 Constant_11157" [id=633, type=Constant]; +"634 Constant_11156" [id=634, type=Constant]; +"635 Constant_11155" [id=635, type=Constant]; +"636 Constant_11154" [id=636, type=Constant]; +"637 Constant_11152" [id=637, type=Constant]; +"638 Constant_11151" [id=638, type=Constant]; +"639 Constant_11150" [id=639, type=Constant]; +"640 Constant_11149" [id=640, type=Constant]; +"641 Transpose_5611" [id=641, type=Constant]; +"642 Transpose_1140" [id=642, type=Constant]; +"643 Transpose_5603" [id=643, type=Constant]; +"644 Transpose_1131" [id=644, type=Constant]; +"645 Constant_5597" [id=645, type=Constant]; +"646 Constant_11147" [id=646, type=Constant]; +"647 Constant_11146" [id=647, type=Constant]; +"648 Constant_11145" [id=648, type=Constant]; +"649 Constant_11144" [id=649, type=Constant]; +"650 Constant_9315" [id=650, type=Constant]; +"651 Multiply_9307/fq_weights_1" [id=651, type=FakeQuantize]; +"652 Constant_11142" [id=652, type=Constant]; +"653 Constant_11141" [id=653, type=Constant]; +"654 Constant_11140" [id=654, type=Constant]; +"655 Constant_11139" [id=655, type=Constant]; +"656 Multiply_9700" [id=656, type=Constant]; +"657 Constant_11137" [id=657, type=Constant]; +"658 Constant_11136" [id=658, type=Constant]; +"659 Constant_11135" [id=659, type=Constant]; +"660 Constant_11134" [id=660, type=Constant]; +"661 Constant_9301" [id=661, type=Constant]; +"662 Multiply_9293/fq_weights_1" [id=662, type=FakeQuantize]; +"663 Constant_11132" [id=663, type=Constant]; +"664 Constant_11131" [id=664, type=Constant]; +"665 Constant_11130" [id=665, type=Constant]; +"666 Constant_11129" [id=666, type=Constant]; +"667 Multiply_9694" [id=667, type=Constant]; +"668 Constant_11127" [id=668, type=Constant]; +"669 Constant_11126" [id=669, type=Constant]; +"670 Constant_11125" [id=670, type=Constant]; +"671 Constant_11124" [id=671, type=Constant]; +"672 Constant_11122" [id=672, type=Constant]; +"673 Constant_11121" [id=673, type=Constant]; +"674 Constant_11120" [id=674, type=Constant]; +"675 Constant_11119" [id=675, type=Constant]; +"676 Constant_9287" [id=676, type=Constant]; +"677 Multiply_9279/fq_weights_1" [id=677, type=FakeQuantize]; +"678 Constant_11117" [id=678, type=Constant]; +"679 Constant_11116" [id=679, type=Constant]; +"680 Constant_11115" [id=680, type=Constant]; +"681 Constant_11114" [id=681, type=Constant]; +"682 Multiply_9688" [id=682, type=Constant]; +"683 Constant_11112" [id=683, type=Constant]; +"684 Constant_11111" [id=684, type=Constant]; +"685 Constant_11110" [id=685, type=Constant]; +"686 Constant_11109" [id=686, type=Constant]; +"687 Constant_9273" [id=687, type=Constant]; +"688 Multiply_9265/fq_weights_1" [id=688, type=FakeQuantize]; +"689 Constant_11107" [id=689, type=Constant]; +"690 Constant_11106" [id=690, type=Constant]; +"691 Constant_11105" [id=691, type=Constant]; +"692 Constant_11104" [id=692, type=Constant]; +"693 Multiply_9683" [id=693, type=Constant]; +"694 Constant_11102" [id=694, type=Constant]; +"695 Constant_11101" [id=695, type=Constant]; +"696 Constant_11100" [id=696, type=Constant]; +"697 Constant_11099" [id=697, type=Constant]; +"698 Constant_9259" [id=698, type=Constant]; +"699 Multiply_9251/fq_weights_1" [id=699, type=FakeQuantize]; +"700 Constant_11097" [id=700, type=Constant]; +"701 Constant_11096" [id=701, type=Constant]; +"702 Constant_11095" [id=702, type=Constant]; +"703 Constant_11094" [id=703, type=Constant]; +"704 Multiply_9677" [id=704, type=Constant]; +"705 Constant_11092" [id=705, type=Constant]; +"706 Constant_11091" [id=706, type=Constant]; +"707 Constant_11090" [id=707, type=Constant]; +"708 Constant_11089" [id=708, type=Constant]; +"709 Constant_9245" [id=709, type=Constant]; +"710 Multiply_9237/fq_weights_1" [id=710, type=FakeQuantize]; +"711 Constant_11087" [id=711, type=Constant]; +"712 Constant_11086" [id=712, type=Constant]; +"713 Constant_11085" [id=713, type=Constant]; +"714 Constant_11084" [id=714, type=Constant]; +"715 Multiply_9671" [id=715, type=Constant]; +"716 Constant_11082" [id=716, type=Constant]; +"717 Constant_11081" [id=717, type=Constant]; +"718 Constant_11080" [id=718, type=Constant]; +"719 Constant_11079" [id=719, type=Constant]; +"720 Constant_9231" [id=720, type=Constant]; +"721 Multiply_9223/fq_weights_1" [id=721, type=FakeQuantize]; +"722 Constant_11077" [id=722, type=Constant]; +"723 Constant_11076" [id=723, type=Constant]; +"724 Constant_11075" [id=724, type=Constant]; +"725 Constant_11074" [id=725, type=Constant]; +"726 Multiply_9666" [id=726, type=Constant]; +"727 Constant_11072" [id=727, type=Constant]; +"728 Constant_11071" [id=728, type=Constant]; +"729 Constant_11070" [id=729, type=Constant]; +"730 Constant_11069" [id=730, type=Constant]; +"731 Constant_9217" [id=731, type=Constant]; +"732 Multiply_9209/fq_weights_1" [id=732, type=FakeQuantize]; +"733 Constant_11067" [id=733, type=Constant]; +"734 Constant_11066" [id=734, type=Constant]; +"735 Constant_11065" [id=735, type=Constant]; +"736 Constant_11064" [id=736, type=Constant]; +"737 Multiply_9660" [id=737, type=Constant]; +"738 Constant_11062" [id=738, type=Constant]; +"739 Constant_11061" [id=739, type=Constant]; +"740 Constant_11060" [id=740, type=Constant]; +"741 Constant_11059" [id=741, type=Constant]; +"742 Constant_9203" [id=742, type=Constant]; +"743 Multiply_9195/fq_weights_1" [id=743, type=FakeQuantize]; +"744 Constant_11057" [id=744, type=Constant]; +"745 Constant_11056" [id=745, type=Constant]; +"746 Constant_11055" [id=746, type=Constant]; +"747 Constant_11054" [id=747, type=Constant]; +"748 Multiply_9654" [id=748, type=Constant]; +"749 Constant_11052" [id=749, type=Constant]; +"750 Constant_11051" [id=750, type=Constant]; +"751 Constant_11050" [id=751, type=Constant]; +"752 Constant_11049" [id=752, type=Constant]; +"753 Constant_11047" [id=753, type=Constant]; +"754 Constant_11046" [id=754, type=Constant]; +"755 Constant_11045" [id=755, type=Constant]; +"756 Constant_11044" [id=756, type=Constant]; +"757 Transpose_5257" [id=757, type=Constant]; +"758 Transpose_809" [id=758, type=Constant]; +"759 Transpose_5249" [id=759, type=Constant]; +"760 Transpose_800" [id=760, type=Constant]; +"761 Constant_5243" [id=761, type=Constant]; +"762 Constant_11042" [id=762, type=Constant]; +"763 Constant_11041" [id=763, type=Constant]; +"764 Constant_11040" [id=764, type=Constant]; +"765 Constant_11039" [id=765, type=Constant]; +"766 Constant_9189" [id=766, type=Constant]; +"767 Multiply_9181/fq_weights_1" [id=767, type=FakeQuantize]; +"768 Constant_11037" [id=768, type=Constant]; +"769 Constant_11036" [id=769, type=Constant]; +"770 Constant_11035" [id=770, type=Constant]; +"771 Constant_11034" [id=771, type=Constant]; +"772 Multiply_9649" [id=772, type=Constant]; +"773 Constant_11032" [id=773, type=Constant]; +"774 Constant_11031" [id=774, type=Constant]; +"775 Constant_11030" [id=775, type=Constant]; +"776 Constant_11029" [id=776, type=Constant]; +"777 Constant_9175" [id=777, type=Constant]; +"778 Multiply_9167/fq_weights_1" [id=778, type=FakeQuantize]; +"779 Constant_11027" [id=779, type=Constant]; +"780 Constant_11026" [id=780, type=Constant]; +"781 Constant_11025" [id=781, type=Constant]; +"782 Constant_11024" [id=782, type=Constant]; +"783 Gather_10068" [id=783, type=Constant]; +"784 Constant_11022" [id=784, type=Constant]; +"785 Constant_11021" [id=785, type=Constant]; +"786 Constant_11020" [id=786, type=Constant]; +"787 Constant_11019" [id=787, type=Constant]; +"788 Unsqueeze_7776" [id=788, type=Constant]; +"789 Unsqueeze_7782" [id=789, type=Constant]; +"790 Constant_7779" [id=790, type=Constant]; "0 input_1" -> "1 Transpose_7780" [label="[1, 224, 224, 3]", style=solid]; "1 Transpose_7780" -> "2 Transpose_7774" [label="[1, 3, 224, 224]", style=solid]; "2 Transpose_7774" -> "3 Transpose_710" [label="[1, 3, 224, 224]", style=solid]; @@ -984,975 +804,795 @@ strict digraph { "11 Transpose_5241" -> "12 Transpose_5241/fq_output_0" [label="[1, 16, 56, 56]", style=solid]; "12 Transpose_5241/fq_output_0" -> "13 Transpose_5245" [label="[1, 16, 56, 56]", style=solid]; "12 Transpose_5241/fq_output_0" -> "14 Transpose_5277" [label="[1, 16, 56, 56]", style=solid]; -"13 Transpose_5245" -> "15 Transpose_5245/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; +"13 Transpose_5245" -> "15 Convolution_801" [label="[1, 16, 1, 1]", style=solid]; "14 Transpose_5277" -> "16 Transpose_5277/fq_output_0" [label="[1, 16, 56, 56]", style=solid]; -"15 Transpose_5245/fq_output_0" -> "17 Convolution_801" [label="[1, 16, 1, 1]", style=solid]; +"15 Convolution_801" -> "17 Transpose_5251" [label="[1, 8, 1, 1]", style=solid]; "16 Transpose_5277/fq_output_0" -> "18 Multiply_9195" [label="[1, 16, 56, 56]", style=solid]; -"17 Convolution_801" -> "19 Transpose_5251" [label="[1, 8, 1, 1]", style=solid]; +"17 Transpose_5251" -> "19 Transpose_5253" [label="[1, 8, 1, 1]", style=solid]; "18 Multiply_9195" -> "20 Transpose_5301" [label="[1, 16, 56, 56]", style=solid]; -"19 Transpose_5251" -> "21 Transpose_5253" [label="[1, 8, 1, 1]", style=solid]; +"19 Transpose_5253" -> "21 Convolution_810" [label="[1, 8, 1, 1]", style=solid]; "20 Transpose_5301" -> "22 Transpose_5301/fq_output_0" [label="[1, 16, 56, 56]", style=solid]; -"21 Transpose_5253" -> "23 Transpose_5253/fq_output_0" [label="[1, 8, 1, 1]", style=solid]; +"21 Convolution_810" -> "23 Transpose_5259" [label="[1, 16, 1, 1]", style=solid]; "22 Transpose_5301/fq_output_0" -> "24 Multiply_9209" [label="[1, 16, 56, 56]", style=solid]; -"23 Transpose_5253/fq_output_0" -> "25 Convolution_810" [label="[1, 8, 1, 1]", style=solid]; +"23 Transpose_5259" -> "25 Transpose_5273" [label="[1, 16, 1, 1]", style=solid]; "24 Multiply_9209" -> "26 Transpose_5325" [label="[1, 72, 56, 56]", style=solid]; -"25 Convolution_810" -> "27 Transpose_5259" [label="[1, 16, 1, 1]", style=solid]; +"25 Transpose_5273" -> "27 Transpose_5273/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; "26 Transpose_5325" -> "28 Transpose_5327" [label="[1, 72, 56, 56]", style=solid]; -"27 Transpose_5259" -> "29 Transpose_5273" [label="[1, 16, 1, 1]", style=solid]; -"28 Transpose_5327" -> "30 Transpose_5327/fq_output_0" [label="[1, 72, 56, 56]", style=solid]; -"29 Transpose_5273" -> "31 Transpose_5273/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; -"30 Transpose_5327/fq_output_0" -> "32 Multiply_9223" [label="[1, 72, 56, 56]", style=solid]; -"31 Transpose_5273/fq_output_0" -> "14 Transpose_5277" [label="[1, 16, 1, 1]", style=solid]; -"32 Multiply_9223" -> "33 Transpose_5378" [label="[1, 72, 28, 28]", style=solid]; -"33 Transpose_5378" -> "34 Transpose_5380" [label="[1, 72, 28, 28]", style=solid]; -"34 Transpose_5380" -> "35 Transpose_5380/fq_output_0" [label="[1, 72, 28, 28]", style=solid]; -"35 Transpose_5380/fq_output_0" -> "36 Multiply_9237" [label="[1, 72, 28, 28]", style=solid]; -"36 Multiply_9237" -> "37 Transpose_5404" [label="[1, 24, 28, 28]", style=solid]; -"37 Transpose_5404" -> "38 Transpose_5404/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; -"38 Transpose_5404/fq_output_0" -> "39 Multiply_9251" [label="[1, 24, 28, 28]", style=solid]; -"38 Transpose_5404/fq_output_0" -> "40 Transpose_5484" [label="[1, 24, 28, 28]", style=solid]; -"39 Multiply_9251" -> "41 Transpose_5428" [label="[1, 88, 28, 28]", style=solid]; -"40 Transpose_5484" -> "42 Transpose_5484/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; -"41 Transpose_5428" -> "43 Transpose_5430" [label="[1, 88, 28, 28]", style=solid]; -"42 Transpose_5484/fq_output_0" -> "44 Multiply_9293" [label="[1, 24, 28, 28]", style=solid]; -"43 Transpose_5430" -> "45 Transpose_5430/fq_output_0" [label="[1, 88, 28, 28]", style=solid]; -"44 Multiply_9293" -> "46 Transpose_5508" [label="[1, 96, 28, 28]", style=solid]; -"45 Transpose_5430/fq_output_0" -> "47 Multiply_9265" [label="[1, 88, 28, 28]", style=solid]; -"46 Transpose_5508" -> "48 Transpose_5526" [label="[1, 96, 28, 28]", style=solid]; -"47 Multiply_9265" -> "49 Transpose_5454" [label="[1, 88, 28, 28]", style=solid]; -"48 Transpose_5526" -> "50 Transpose_5526/fq_output_0" [label="[1, 96, 28, 28]", style=solid]; -"49 Transpose_5454" -> "51 Transpose_5456" [label="[1, 88, 28, 28]", style=solid]; -"50 Transpose_5526/fq_output_0" -> "52 Multiply_9307" [label="[1, 96, 28, 28]", style=solid]; -"51 Transpose_5456" -> "53 Transpose_5456/fq_output_0" [label="[1, 88, 28, 28]", style=solid]; -"52 Multiply_9307" -> "54 Transpose_5577" [label="[1, 96, 14, 14]", style=solid]; -"53 Transpose_5456/fq_output_0" -> "55 Multiply_9279" [label="[1, 88, 28, 28]", style=solid]; -"54 Transpose_5577" -> "56 Transpose_5595" [label="[1, 96, 14, 14]", style=solid]; -"55 Multiply_9279" -> "57 Transpose_5480" [label="[1, 24, 28, 28]", style=solid]; -"56 Transpose_5595" -> "58 Transpose_5595/fq_output_0" [label="[1, 96, 14, 14]", style=solid]; -"57 Transpose_5480" -> "59 Transpose_5480/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; -"58 Transpose_5595/fq_output_0" -> "60 Transpose_5599" [label="[1, 96, 14, 14]", style=solid]; -"58 Transpose_5595/fq_output_0" -> "61 Transpose_5631" [label="[1, 96, 14, 14]", style=solid]; -"59 Transpose_5480/fq_output_0" -> "40 Transpose_5484" [label="[1, 24, 28, 28]", style=solid]; -"60 Transpose_5599" -> "62 Transpose_5599/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"61 Transpose_5631" -> "63 Transpose_5631/fq_output_0" [label="[1, 96, 14, 14]", style=solid]; -"62 Transpose_5599/fq_output_0" -> "64 Convolution_1132" [label="[1, 96, 1, 1]", style=solid]; -"63 Transpose_5631/fq_output_0" -> "65 Multiply_9321" [label="[1, 96, 14, 14]", style=solid]; -"64 Convolution_1132" -> "66 Transpose_5605" [label="[1, 24, 1, 1]", style=solid]; -"65 Multiply_9321" -> "67 Transpose_5655" [label="[1, 40, 14, 14]", style=solid]; -"66 Transpose_5605" -> "68 Transpose_5607" [label="[1, 24, 1, 1]", style=solid]; -"67 Transpose_5655" -> "69 Transpose_5655/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; -"68 Transpose_5607" -> "70 Transpose_5607/fq_output_0" [label="[1, 24, 1, 1]", style=solid]; -"69 Transpose_5655/fq_output_0" -> "71 Multiply_9335" [label="[1, 40, 14, 14]", style=solid]; -"69 Transpose_5655/fq_output_0" -> "72 Transpose_5803" [label="[1, 40, 14, 14]", style=solid]; -"70 Transpose_5607/fq_output_0" -> "73 Convolution_1141" [label="[1, 24, 1, 1]", style=solid]; -"71 Multiply_9335" -> "74 Transpose_5679" [label="[1, 240, 14, 14]", style=solid]; -"72 Transpose_5803" -> "75 Transpose_5803/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; -"73 Convolution_1141" -> "76 Transpose_5613" [label="[1, 96, 1, 1]", style=solid]; -"74 Transpose_5679" -> "77 Transpose_5697" [label="[1, 240, 14, 14]", style=solid]; -"75 Transpose_5803/fq_output_0" -> "78 Multiply_9377" [label="[1, 40, 14, 14]", style=solid]; -"75 Transpose_5803/fq_output_0" -> "79 Transpose_5951" [label="[1, 40, 14, 14]", style=solid]; -"76 Transpose_5613" -> "80 Transpose_5627" [label="[1, 96, 1, 1]", style=solid]; -"77 Transpose_5697" -> "81 Transpose_5697/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"78 Multiply_9377" -> "82 Transpose_5827" [label="[1, 240, 14, 14]", style=solid]; -"79 Transpose_5951" -> "83 Transpose_5951/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; -"80 Transpose_5627" -> "84 Transpose_5627/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"81 Transpose_5697/fq_output_0" -> "85 Multiply_9349" [label="[1, 240, 14, 14]", style=solid]; -"82 Transpose_5827" -> "86 Transpose_5845" [label="[1, 240, 14, 14]", style=solid]; -"83 Transpose_5951/fq_output_0" -> "87 Multiply_9419" [label="[1, 40, 14, 14]", style=solid]; -"84 Transpose_5627/fq_output_0" -> "61 Transpose_5631" [label="[1, 96, 1, 1]", style=solid]; -"85 Multiply_9349" -> "88 Transpose_5721" [label="[1, 240, 14, 14]", style=solid]; -"86 Transpose_5845" -> "89 Transpose_5845/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"87 Multiply_9419" -> "90 Transpose_5975" [label="[1, 120, 14, 14]", style=solid]; -"88 Transpose_5721" -> "91 Transpose_5739" [label="[1, 240, 14, 14]", style=solid]; -"89 Transpose_5845/fq_output_0" -> "92 Multiply_9391" [label="[1, 240, 14, 14]", style=solid]; -"90 Transpose_5975" -> "93 Transpose_5993" [label="[1, 120, 14, 14]", style=solid]; -"91 Transpose_5739" -> "94 Transpose_5739/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"92 Multiply_9391" -> "95 Transpose_5869" [label="[1, 240, 14, 14]", style=solid]; -"93 Transpose_5993" -> "96 Transpose_5993/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; -"94 Transpose_5739/fq_output_0" -> "97 Transpose_5743" [label="[1, 240, 14, 14]", style=solid]; -"94 Transpose_5739/fq_output_0" -> "98 Transpose_5775" [label="[1, 240, 14, 14]", style=solid]; -"95 Transpose_5869" -> "99 Transpose_5887" [label="[1, 240, 14, 14]", style=solid]; -"96 Transpose_5993/fq_output_0" -> "100 Multiply_9433" [label="[1, 120, 14, 14]", style=solid]; -"97 Transpose_5743" -> "101 Transpose_5743/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"98 Transpose_5775" -> "102 Transpose_5775/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"99 Transpose_5887" -> "103 Transpose_5887/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"100 Multiply_9433" -> "104 Transpose_6017" [label="[1, 120, 14, 14]", style=solid]; -"101 Transpose_5743/fq_output_0" -> "105 Convolution_1242" [label="[1, 240, 1, 1]", style=solid]; -"102 Transpose_5775/fq_output_0" -> "106 Multiply_9363" [label="[1, 240, 14, 14]", style=solid]; -"103 Transpose_5887/fq_output_0" -> "107 Transpose_5891" [label="[1, 240, 14, 14]", style=solid]; -"103 Transpose_5887/fq_output_0" -> "108 Transpose_5923" [label="[1, 240, 14, 14]", style=solid]; -"104 Transpose_6017" -> "109 Transpose_6035" [label="[1, 120, 14, 14]", style=solid]; -"105 Convolution_1242" -> "110 Transpose_5749" [label="[1, 64, 1, 1]", style=solid]; -"106 Multiply_9363" -> "111 Transpose_5799" [label="[1, 40, 14, 14]", style=solid]; -"107 Transpose_5891" -> "112 Transpose_5891/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"108 Transpose_5923" -> "113 Transpose_5923/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; -"109 Transpose_6035" -> "114 Transpose_6035/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; -"110 Transpose_5749" -> "115 Transpose_5751" [label="[1, 64, 1, 1]", style=solid]; -"111 Transpose_5799" -> "116 Transpose_5799/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; -"112 Transpose_5891/fq_output_0" -> "117 Convolution_1353" [label="[1, 240, 1, 1]", style=solid]; -"113 Transpose_5923/fq_output_0" -> "118 Multiply_9405" [label="[1, 240, 14, 14]", style=solid]; -"114 Transpose_6035/fq_output_0" -> "119 Transpose_6039" [label="[1, 120, 14, 14]", style=solid]; -"114 Transpose_6035/fq_output_0" -> "120 Transpose_6071" [label="[1, 120, 14, 14]", style=solid]; -"115 Transpose_5751" -> "121 Transpose_5751/fq_output_0" [label="[1, 64, 1, 1]", style=solid]; -"116 Transpose_5799/fq_output_0" -> "72 Transpose_5803" [label="[1, 40, 14, 14]", style=solid]; -"117 Convolution_1353" -> "122 Transpose_5897" [label="[1, 64, 1, 1]", style=solid]; -"118 Multiply_9405" -> "123 Transpose_5947" [label="[1, 40, 14, 14]", style=solid]; -"119 Transpose_6039" -> "124 Transpose_6039/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"120 Transpose_6071" -> "125 Transpose_6071/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; -"121 Transpose_5751/fq_output_0" -> "126 Convolution_1251" [label="[1, 64, 1, 1]", style=solid]; -"122 Transpose_5897" -> "127 Transpose_5899" [label="[1, 64, 1, 1]", style=solid]; -"123 Transpose_5947" -> "128 Transpose_5947/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; -"124 Transpose_6039/fq_output_0" -> "129 Convolution_1464" [label="[1, 120, 1, 1]", style=solid]; -"125 Transpose_6071/fq_output_0" -> "130 Multiply_9447" [label="[1, 120, 14, 14]", style=solid]; -"126 Convolution_1251" -> "131 Transpose_5757" [label="[1, 240, 1, 1]", style=solid]; -"127 Transpose_5899" -> "132 Transpose_5899/fq_output_0" [label="[1, 64, 1, 1]", style=solid]; -"128 Transpose_5947/fq_output_0" -> "79 Transpose_5951" [label="[1, 40, 14, 14]", style=solid]; -"129 Convolution_1464" -> "133 Transpose_6045" [label="[1, 32, 1, 1]", style=solid]; -"130 Multiply_9447" -> "134 Transpose_6095" [label="[1, 48, 14, 14]", style=solid]; -"131 Transpose_5757" -> "135 Transpose_5771" [label="[1, 240, 1, 1]", style=solid]; -"132 Transpose_5899/fq_output_0" -> "136 Convolution_1362" [label="[1, 64, 1, 1]", style=solid]; -"133 Transpose_6045" -> "137 Transpose_6047" [label="[1, 32, 1, 1]", style=solid]; -"134 Transpose_6095" -> "138 Transpose_6095/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; -"135 Transpose_5771" -> "139 Transpose_5771/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"136 Convolution_1362" -> "140 Transpose_5905" [label="[1, 240, 1, 1]", style=solid]; -"137 Transpose_6047" -> "141 Transpose_6047/fq_output_0" [label="[1, 32, 1, 1]", style=solid]; -"138 Transpose_6095/fq_output_0" -> "142 Multiply_9461" [label="[1, 48, 14, 14]", style=solid]; -"138 Transpose_6095/fq_output_0" -> "143 Transpose_6243" [label="[1, 48, 14, 14]", style=solid]; -"139 Transpose_5771/fq_output_0" -> "98 Transpose_5775" [label="[1, 240, 1, 1]", style=solid]; -"140 Transpose_5905" -> "144 Transpose_5919" [label="[1, 240, 1, 1]", style=solid]; -"141 Transpose_6047/fq_output_0" -> "145 Convolution_1473" [label="[1, 32, 1, 1]", style=solid]; -"142 Multiply_9461" -> "146 Transpose_6119" [label="[1, 144, 14, 14]", style=solid]; -"143 Transpose_6243" -> "147 Transpose_6243/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; -"144 Transpose_5919" -> "148 Transpose_5919/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"145 Convolution_1473" -> "149 Transpose_6053" [label="[1, 120, 1, 1]", style=solid]; -"146 Transpose_6119" -> "150 Transpose_6137" [label="[1, 144, 14, 14]", style=solid]; -"147 Transpose_6243/fq_output_0" -> "151 Multiply_9503" [label="[1, 48, 14, 14]", style=solid]; -"148 Transpose_5919/fq_output_0" -> "108 Transpose_5923" [label="[1, 240, 1, 1]", style=solid]; -"149 Transpose_6053" -> "152 Transpose_6067" [label="[1, 120, 1, 1]", style=solid]; -"150 Transpose_6137" -> "153 Transpose_6137/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; -"151 Multiply_9503" -> "154 Transpose_6267" [label="[1, 288, 14, 14]", style=solid]; -"152 Transpose_6067" -> "155 Transpose_6067/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"153 Transpose_6137/fq_output_0" -> "156 Multiply_9475" [label="[1, 144, 14, 14]", style=solid]; -"154 Transpose_6267" -> "157 Transpose_6285" [label="[1, 288, 14, 14]", style=solid]; -"155 Transpose_6067/fq_output_0" -> "120 Transpose_6071" [label="[1, 120, 1, 1]", style=solid]; -"156 Multiply_9475" -> "158 Transpose_6161" [label="[1, 144, 14, 14]", style=solid]; -"157 Transpose_6285" -> "159 Transpose_6285/fq_output_0" [label="[1, 288, 14, 14]", style=solid]; -"158 Transpose_6161" -> "160 Transpose_6179" [label="[1, 144, 14, 14]", style=solid]; -"159 Transpose_6285/fq_output_0" -> "161 Multiply_9517" [label="[1, 288, 14, 14]", style=solid]; -"160 Transpose_6179" -> "162 Transpose_6179/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; -"161 Multiply_9517" -> "163 Transpose_6336" [label="[1, 288, 7, 7]", style=solid]; -"162 Transpose_6179/fq_output_0" -> "164 Transpose_6183" [label="[1, 144, 14, 14]", style=solid]; -"162 Transpose_6179/fq_output_0" -> "165 Transpose_6215" [label="[1, 144, 14, 14]", style=solid]; -"163 Transpose_6336" -> "166 Transpose_6354" [label="[1, 288, 7, 7]", style=solid]; -"164 Transpose_6183" -> "167 Transpose_6183/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"165 Transpose_6215" -> "168 Transpose_6215/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; -"166 Transpose_6354" -> "169 Transpose_6354/fq_output_0" [label="[1, 288, 7, 7]", style=solid]; -"167 Transpose_6183/fq_output_0" -> "170 Convolution_1574" [label="[1, 144, 1, 1]", style=solid]; -"168 Transpose_6215/fq_output_0" -> "171 Multiply_9489" [label="[1, 144, 14, 14]", style=solid]; -"169 Transpose_6354/fq_output_0" -> "172 Transpose_6358" [label="[1, 288, 7, 7]", style=solid]; -"169 Transpose_6354/fq_output_0" -> "173 Transpose_6390" [label="[1, 288, 7, 7]", style=solid]; -"170 Convolution_1574" -> "174 Transpose_6189" [label="[1, 40, 1, 1]", style=solid]; -"171 Multiply_9489" -> "175 Transpose_6239" [label="[1, 48, 14, 14]", style=solid]; -"172 Transpose_6358" -> "176 Transpose_6358/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"173 Transpose_6390" -> "177 Transpose_6390/fq_output_0" [label="[1, 288, 7, 7]", style=solid]; -"174 Transpose_6189" -> "178 Transpose_6191" [label="[1, 40, 1, 1]", style=solid]; -"175 Transpose_6239" -> "179 Transpose_6239/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; -"176 Transpose_6358/fq_output_0" -> "180 Convolution_1713" [label="[1, 288, 1, 1]", style=solid]; -"177 Transpose_6390/fq_output_0" -> "181 Multiply_9531" [label="[1, 288, 7, 7]", style=solid]; -"178 Transpose_6191" -> "182 Transpose_6191/fq_output_0" [label="[1, 40, 1, 1]", style=solid]; -"179 Transpose_6239/fq_output_0" -> "143 Transpose_6243" [label="[1, 48, 14, 14]", style=solid]; -"180 Convolution_1713" -> "183 Transpose_6364" [label="[1, 72, 1, 1]", style=solid]; -"181 Multiply_9531" -> "184 Transpose_6414" [label="[1, 96, 7, 7]", style=solid]; -"182 Transpose_6191/fq_output_0" -> "185 Convolution_1583" [label="[1, 40, 1, 1]", style=solid]; -"183 Transpose_6364" -> "186 Transpose_6366" [label="[1, 72, 1, 1]", style=solid]; -"184 Transpose_6414" -> "187 Transpose_6414/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; -"185 Convolution_1583" -> "188 Transpose_6197" [label="[1, 144, 1, 1]", style=solid]; -"186 Transpose_6366" -> "189 Transpose_6366/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; -"187 Transpose_6414/fq_output_0" -> "190 Multiply_9545" [label="[1, 96, 7, 7]", style=solid]; -"187 Transpose_6414/fq_output_0" -> "191 Transpose_6562" [label="[1, 96, 7, 7]", style=solid]; -"188 Transpose_6197" -> "192 Transpose_6211" [label="[1, 144, 1, 1]", style=solid]; -"189 Transpose_6366/fq_output_0" -> "193 Convolution_1722" [label="[1, 72, 1, 1]", style=solid]; -"190 Multiply_9545" -> "194 Transpose_6438" [label="[1, 576, 7, 7]", style=solid]; -"191 Transpose_6562" -> "195 Transpose_6562/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; -"192 Transpose_6211" -> "196 Transpose_6211/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"193 Convolution_1722" -> "197 Transpose_6372" [label="[1, 288, 1, 1]", style=solid]; -"194 Transpose_6438" -> "198 Transpose_6456" [label="[1, 576, 7, 7]", style=solid]; -"195 Transpose_6562/fq_output_0" -> "199 Multiply_9587" [label="[1, 96, 7, 7]", style=solid]; -"195 Transpose_6562/fq_output_0" -> "200 Transpose_6710" [label="[1, 96, 7, 7]", style=solid]; -"196 Transpose_6211/fq_output_0" -> "165 Transpose_6215" [label="[1, 144, 1, 1]", style=solid]; -"197 Transpose_6372" -> "201 Transpose_6386" [label="[1, 288, 1, 1]", style=solid]; -"198 Transpose_6456" -> "202 Transpose_6456/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"199 Multiply_9587" -> "203 Transpose_6586" [label="[1, 576, 7, 7]", style=solid]; -"200 Transpose_6710" -> "204 Transpose_6710/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; -"201 Transpose_6386" -> "205 Transpose_6386/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"202 Transpose_6456/fq_output_0" -> "206 Multiply_9559" [label="[1, 576, 7, 7]", style=solid]; -"203 Transpose_6586" -> "207 Transpose_6604" [label="[1, 576, 7, 7]", style=solid]; -"204 Transpose_6710/fq_output_0" -> "208 Multiply_9629" [label="[1, 96, 7, 7]", style=solid]; -"205 Transpose_6386/fq_output_0" -> "173 Transpose_6390" [label="[1, 288, 1, 1]", style=solid]; -"206 Multiply_9559" -> "209 Transpose_6480" [label="[1, 576, 7, 7]", style=solid]; -"207 Transpose_6604" -> "210 Transpose_6604/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"208 Multiply_9629" -> "211 Transpose_6734" [label="[1, 576, 7, 7]", style=solid]; -"209 Transpose_6480" -> "212 Transpose_6498" [label="[1, 576, 7, 7]", style=solid]; -"210 Transpose_6604/fq_output_0" -> "213 Multiply_9601" [label="[1, 576, 7, 7]", style=solid]; -"211 Transpose_6734" -> "214 Transpose_6752" [label="[1, 576, 7, 7]", style=solid]; -"212 Transpose_6498" -> "215 Transpose_6498/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"213 Multiply_9601" -> "216 Transpose_6628" [label="[1, 576, 7, 7]", style=solid]; -"214 Transpose_6752" -> "217 Transpose_6752/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"215 Transpose_6498/fq_output_0" -> "218 Transpose_6502" [label="[1, 576, 7, 7]", style=solid]; -"215 Transpose_6498/fq_output_0" -> "219 Transpose_6534" [label="[1, 576, 7, 7]", style=solid]; -"216 Transpose_6628" -> "220 Transpose_6646" [label="[1, 576, 7, 7]", style=solid]; -"217 Transpose_6752/fq_output_0" -> "221 Transpose_6756" [label="[1, 576, 7, 7]", style=solid]; -"218 Transpose_6502" -> "222 Transpose_6502/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"219 Transpose_6534" -> "223 Transpose_6534/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"220 Transpose_6646" -> "224 Transpose_6646/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"221 Transpose_6756" -> "225 Transpose_6756/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"222 Transpose_6502/fq_output_0" -> "226 Convolution_1823" [label="[1, 576, 1, 1]", style=solid]; -"223 Transpose_6534/fq_output_0" -> "227 Multiply_9573" [label="[1, 576, 7, 7]", style=solid]; -"224 Transpose_6646/fq_output_0" -> "228 Transpose_6650" [label="[1, 576, 7, 7]", style=solid]; -"224 Transpose_6646/fq_output_0" -> "229 Transpose_6682" [label="[1, 576, 7, 7]", style=solid]; -"225 Transpose_6756/fq_output_0" -> "230 Convolution_2013" [label="[1, 576, 1, 1]", style=solid]; -"226 Convolution_1823" -> "231 Transpose_6508" [label="[1, 144, 1, 1]", style=solid]; -"227 Multiply_9573" -> "232 Transpose_6558" [label="[1, 96, 7, 7]", style=solid]; -"228 Transpose_6650" -> "233 Transpose_6650/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"229 Transpose_6682" -> "234 Transpose_6682/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; -"230 Convolution_2013" -> "235 Transpose_6762" [label="[1, 1024, 1, 1]", style=solid]; -"231 Transpose_6508" -> "236 Transpose_6510" [label="[1, 144, 1, 1]", style=solid]; -"232 Transpose_6558" -> "237 Transpose_6558/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; -"233 Transpose_6650/fq_output_0" -> "238 Convolution_1934" [label="[1, 576, 1, 1]", style=solid]; -"234 Transpose_6682/fq_output_0" -> "239 Multiply_9615" [label="[1, 576, 7, 7]", style=solid]; -"235 Transpose_6762" -> "240 Transpose_6780" [label="[1, 1024, 1, 1]", style=solid]; -"236 Transpose_6510" -> "241 Transpose_6510/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"237 Transpose_6558/fq_output_0" -> "191 Transpose_6562" [label="[1, 96, 7, 7]", style=solid]; -"238 Convolution_1934" -> "242 Transpose_6656" [label="[1, 144, 1, 1]", style=solid]; -"239 Multiply_9615" -> "243 Transpose_6706" [label="[1, 96, 7, 7]", style=solid]; -"240 Transpose_6780" -> "244 Transpose_6780/fq_output_0" [label="[1, 1024, 1, 1]", style=solid]; -"241 Transpose_6510/fq_output_0" -> "245 Convolution_1832" [label="[1, 144, 1, 1]", style=solid]; -"242 Transpose_6656" -> "246 Transpose_6658" [label="[1, 144, 1, 1]", style=solid]; -"243 Transpose_6706" -> "247 Transpose_6706/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; -"244 Transpose_6780/fq_output_0" -> "248 Convolution_2025" [label="[1, 1024, 1, 1]", style=solid]; -"245 Convolution_1832" -> "249 Transpose_6516" [label="[1, 576, 1, 1]", style=solid]; -"246 Transpose_6658" -> "250 Transpose_6658/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"247 Transpose_6706/fq_output_0" -> "200 Transpose_6710" [label="[1, 96, 7, 7]", style=solid]; -"248 Convolution_2025" -> "251 Transpose_6786" [label="[1, 1000, 1, 1]", style=solid]; -"249 Transpose_6516" -> "252 Transpose_6530" [label="[1, 576, 1, 1]", style=solid]; -"250 Transpose_6658/fq_output_0" -> "253 Convolution_1943" [label="[1, 144, 1, 1]", style=solid]; -"251 Transpose_6786" -> "254 MobilenetV3small/Logits/BiasAdd" [label="[1, 1000, 1, 1]", style=solid]; -"252 Transpose_6530" -> "255 Transpose_6530/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"253 Convolution_1943" -> "256 Transpose_6664" [label="[1, 576, 1, 1]", style=solid]; -"254 MobilenetV3small/Logits/BiasAdd" -> "257 MobilenetV3small/flatten/Reshape" [label="[1, 1, 1, 1000]", style=solid]; -"255 Transpose_6530/fq_output_0" -> "219 Transpose_6534" [label="[1, 576, 1, 1]", style=solid]; -"256 Transpose_6664" -> "258 Transpose_6678" [label="[1, 576, 1, 1]", style=solid]; -"257 MobilenetV3small/flatten/Reshape" -> "259 MobilenetV3small/Predictions/Softmax" [label="[1, 1000]", style=solid]; -"258 Transpose_6678" -> "260 Transpose_6678/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"259 MobilenetV3small/Predictions/Softmax" -> "261 Predictions" [label="[1, 1000]", style=solid]; -"260 Transpose_6678/fq_output_0" -> "229 Transpose_6682" [label="[1, 576, 1, 1]", style=solid]; -"262 MobilenetV3small/flatten/Const" -> "257 MobilenetV3small/flatten/Reshape" [label="[2]", style=dashed]; -"263 Constant_8887" -> "254 MobilenetV3small/Logits/BiasAdd" [label="[4]", style=dashed]; -"264 Transpose_6784" -> "251 Transpose_6786" [label="[1, 1000, 1, 1]", style=solid]; -"265 Convolution_2025/fq_weights_1" -> "248 Convolution_2025" [label="[1000, 1024, 1, 1]", style=solid]; -"266 Constant_13812" -> "265 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; -"267 Constant_13811" -> "265 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; -"268 Constant_13810" -> "265 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; -"269 Constant_13809" -> "265 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; -"270 Transpose_2024" -> "265 Convolution_2025/fq_weights_1" [label="[1000, 1024, 1, 1]", style=solid]; -"271 Constant_13807" -> "244 Transpose_6780/fq_output_0" [label="[]", style=solid]; -"272 Constant_13806" -> "244 Transpose_6780/fq_output_0" [label="[]", style=solid]; -"273 Constant_13805" -> "244 Transpose_6780/fq_output_0" [label="[]", style=solid]; -"274 Constant_13804" -> "244 Transpose_6780/fq_output_0" [label="[]", style=solid]; -"275 Transpose_6760" -> "235 Transpose_6762" [label="[1, 1024, 1, 1]", style=solid]; -"276 Convolution_2013/fq_weights_1" -> "230 Convolution_2013" [label="[1024, 576, 1, 1]", style=solid]; -"277 Constant_13802" -> "276 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; -"278 Constant_13801" -> "276 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; -"279 Constant_13800" -> "276 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; -"280 Constant_13799" -> "276 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; -"281 Transpose_2012" -> "276 Convolution_2013/fq_weights_1" [label="[1024, 576, 1, 1]", style=solid]; -"282 Constant_13797" -> "225 Transpose_6756/fq_output_0" [label="[]", style=solid]; -"283 Constant_13796" -> "225 Transpose_6756/fq_output_0" [label="[]", style=solid]; -"284 Constant_13795" -> "225 Transpose_6756/fq_output_0" [label="[]", style=solid]; -"285 Constant_13794" -> "225 Transpose_6756/fq_output_0" [label="[]", style=solid]; -"286 Constant_6754" -> "221 Transpose_6756" [label="[2]", style=dashed]; -"287 Constant_13792" -> "217 Transpose_6752/fq_output_0" [label="[]", style=solid]; -"288 Constant_13791" -> "217 Transpose_6752/fq_output_0" [label="[]", style=solid]; -"289 Constant_13790" -> "217 Transpose_6752/fq_output_0" [label="[]", style=solid]; -"290 Constant_13789" -> "217 Transpose_6752/fq_output_0" [label="[]", style=solid]; -"291 Constant_9637" -> "211 Transpose_6734" [label="[1, 576, 1, 1]", style=solid]; -"292 Multiply_9629/fq_weights_1" -> "208 Multiply_9629" [label="[576, 96, 1, 1]", style=solid]; -"293 Constant_13787" -> "292 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"294 Constant_13786" -> "292 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"295 Constant_13785" -> "292 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"296 Constant_13784" -> "292 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"297 Multiply_9830" -> "292 Multiply_9629/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; -"298 Constant_13782" -> "204 Transpose_6710/fq_output_0" [label="[]", style=solid]; -"299 Constant_13781" -> "204 Transpose_6710/fq_output_0" [label="[]", style=solid]; -"300 Constant_13780" -> "204 Transpose_6710/fq_output_0" [label="[]", style=solid]; -"301 Constant_13779" -> "204 Transpose_6710/fq_output_0" [label="[]", style=solid]; -"302 Constant_13777" -> "247 Transpose_6706/fq_output_0" [label="[]", style=solid]; -"303 Constant_13776" -> "247 Transpose_6706/fq_output_0" [label="[]", style=solid]; -"304 Constant_13775" -> "247 Transpose_6706/fq_output_0" [label="[]", style=solid]; -"305 Constant_13774" -> "247 Transpose_6706/fq_output_0" [label="[]", style=solid]; -"306 Constant_9623" -> "243 Transpose_6706" [label="[1, 96, 1, 1]", style=solid]; -"307 Multiply_9615/fq_weights_1" -> "239 Multiply_9615" [label="[96, 576, 1, 1]", style=solid]; -"308 Constant_13772" -> "307 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"309 Constant_13771" -> "307 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"310 Constant_13770" -> "307 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"311 Constant_13769" -> "307 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"312 Multiply_9824" -> "307 Multiply_9615/fq_weights_1" [label="[96, 576, 1, 1]", style=solid]; -"313 Constant_13767" -> "234 Transpose_6682/fq_output_0" [label="[]", style=solid]; -"314 Constant_13766" -> "234 Transpose_6682/fq_output_0" [label="[]", style=solid]; -"315 Constant_13765" -> "234 Transpose_6682/fq_output_0" [label="[]", style=solid]; -"316 Constant_13764" -> "234 Transpose_6682/fq_output_0" [label="[]", style=solid]; -"317 Constant_13762" -> "260 Transpose_6678/fq_output_0" [label="[]", style=solid]; -"318 Constant_13761" -> "260 Transpose_6678/fq_output_0" [label="[]", style=solid]; -"319 Constant_13760" -> "260 Transpose_6678/fq_output_0" [label="[]", style=solid]; -"320 Constant_13759" -> "260 Transpose_6678/fq_output_0" [label="[]", style=solid]; -"321 Transpose_6662" -> "256 Transpose_6664" [label="[1, 576, 1, 1]", style=solid]; -"322 Convolution_1943/fq_weights_1" -> "253 Convolution_1943" [label="[576, 144, 1, 1]", style=solid]; -"323 Constant_13757" -> "322 Convolution_1943/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"324 Constant_13756" -> "322 Convolution_1943/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"325 Constant_13755" -> "322 Convolution_1943/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"326 Constant_13754" -> "322 Convolution_1943/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"327 Transpose_1942" -> "322 Convolution_1943/fq_weights_1" [label="[576, 144, 1, 1]", style=solid]; -"328 Constant_13752" -> "250 Transpose_6658/fq_output_0" [label="[]", style=solid]; -"329 Constant_13751" -> "250 Transpose_6658/fq_output_0" [label="[]", style=solid]; -"330 Constant_13750" -> "250 Transpose_6658/fq_output_0" [label="[]", style=solid]; -"331 Constant_13749" -> "250 Transpose_6658/fq_output_0" [label="[]", style=solid]; -"332 Transpose_6654" -> "242 Transpose_6656" [label="[1, 144, 1, 1]", style=solid]; -"333 Convolution_1934/fq_weights_1" -> "238 Convolution_1934" [label="[144, 576, 1, 1]", style=solid]; -"334 Constant_13747" -> "333 Convolution_1934/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"335 Constant_13746" -> "333 Convolution_1934/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"336 Constant_13745" -> "333 Convolution_1934/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"337 Constant_13744" -> "333 Convolution_1934/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"338 Transpose_1933" -> "333 Convolution_1934/fq_weights_1" [label="[144, 576, 1, 1]", style=solid]; -"339 Constant_13742" -> "233 Transpose_6650/fq_output_0" [label="[]", style=solid]; -"340 Constant_13741" -> "233 Transpose_6650/fq_output_0" [label="[]", style=solid]; -"341 Constant_13740" -> "233 Transpose_6650/fq_output_0" [label="[]", style=solid]; -"342 Constant_13739" -> "233 Transpose_6650/fq_output_0" [label="[]", style=solid]; -"343 Constant_6648" -> "228 Transpose_6650" [label="[2]", style=dashed]; -"344 Constant_13737" -> "224 Transpose_6646/fq_output_0" [label="[]", style=solid]; -"345 Constant_13736" -> "224 Transpose_6646/fq_output_0" [label="[]", style=solid]; -"346 Constant_13735" -> "224 Transpose_6646/fq_output_0" [label="[]", style=solid]; -"347 Constant_13734" -> "224 Transpose_6646/fq_output_0" [label="[]", style=solid]; -"348 Constant_9609" -> "216 Transpose_6628" [label="[1, 576, 1, 1]", style=solid]; -"349 Multiply_9601/fq_weights_1" -> "213 Multiply_9601" [label="[576, 1, 1, 5, 5]", style=solid]; -"350 Constant_13732" -> "349 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"351 Constant_13731" -> "349 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"352 Constant_13730" -> "349 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"353 Constant_13729" -> "349 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"354 Multiply_9819" -> "349 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 5, 5]", style=solid]; -"355 Constant_13727" -> "210 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"356 Constant_13726" -> "210 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"357 Constant_13725" -> "210 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"358 Constant_13724" -> "210 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"359 Constant_9595" -> "203 Transpose_6586" [label="[1, 576, 1, 1]", style=solid]; -"360 Multiply_9587/fq_weights_1" -> "199 Multiply_9587" [label="[576, 96, 1, 1]", style=solid]; -"361 Constant_13722" -> "360 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"362 Constant_13721" -> "360 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"363 Constant_13720" -> "360 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"364 Constant_13719" -> "360 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"365 Multiply_9813" -> "360 Multiply_9587/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; -"366 Constant_13717" -> "195 Transpose_6562/fq_output_0" [label="[]", style=solid]; -"367 Constant_13716" -> "195 Transpose_6562/fq_output_0" [label="[]", style=solid]; -"368 Constant_13715" -> "195 Transpose_6562/fq_output_0" [label="[]", style=solid]; -"369 Constant_13714" -> "195 Transpose_6562/fq_output_0" [label="[]", style=solid]; -"370 Constant_13712" -> "237 Transpose_6558/fq_output_0" [label="[]", style=solid]; -"371 Constant_13711" -> "237 Transpose_6558/fq_output_0" [label="[]", style=solid]; -"372 Constant_13710" -> "237 Transpose_6558/fq_output_0" [label="[]", style=solid]; -"373 Constant_13709" -> "237 Transpose_6558/fq_output_0" [label="[]", style=solid]; -"374 Constant_9581" -> "232 Transpose_6558" [label="[1, 96, 1, 1]", style=solid]; -"375 Multiply_9573/fq_weights_1" -> "227 Multiply_9573" [label="[96, 576, 1, 1]", style=solid]; -"376 Constant_13707" -> "375 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"377 Constant_13706" -> "375 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"378 Constant_13705" -> "375 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"379 Constant_13704" -> "375 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"380 Multiply_9807" -> "375 Multiply_9573/fq_weights_1" [label="[96, 576, 1, 1]", style=solid]; -"381 Constant_13702" -> "223 Transpose_6534/fq_output_0" [label="[]", style=solid]; -"382 Constant_13701" -> "223 Transpose_6534/fq_output_0" [label="[]", style=solid]; -"383 Constant_13700" -> "223 Transpose_6534/fq_output_0" [label="[]", style=solid]; -"384 Constant_13699" -> "223 Transpose_6534/fq_output_0" [label="[]", style=solid]; -"385 Constant_13697" -> "255 Transpose_6530/fq_output_0" [label="[]", style=solid]; -"386 Constant_13696" -> "255 Transpose_6530/fq_output_0" [label="[]", style=solid]; -"387 Constant_13695" -> "255 Transpose_6530/fq_output_0" [label="[]", style=solid]; -"388 Constant_13694" -> "255 Transpose_6530/fq_output_0" [label="[]", style=solid]; -"389 Transpose_6514" -> "249 Transpose_6516" [label="[1, 576, 1, 1]", style=solid]; -"390 Convolution_1832/fq_weights_1" -> "245 Convolution_1832" [label="[576, 144, 1, 1]", style=solid]; -"391 Constant_13692" -> "390 Convolution_1832/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"392 Constant_13691" -> "390 Convolution_1832/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"393 Constant_13690" -> "390 Convolution_1832/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"394 Constant_13689" -> "390 Convolution_1832/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"395 Transpose_1831" -> "390 Convolution_1832/fq_weights_1" [label="[576, 144, 1, 1]", style=solid]; -"396 Constant_13687" -> "241 Transpose_6510/fq_output_0" [label="[]", style=solid]; -"397 Constant_13686" -> "241 Transpose_6510/fq_output_0" [label="[]", style=solid]; -"398 Constant_13685" -> "241 Transpose_6510/fq_output_0" [label="[]", style=solid]; -"399 Constant_13684" -> "241 Transpose_6510/fq_output_0" [label="[]", style=solid]; -"400 Transpose_6506" -> "231 Transpose_6508" [label="[1, 144, 1, 1]", style=solid]; -"401 Convolution_1823/fq_weights_1" -> "226 Convolution_1823" [label="[144, 576, 1, 1]", style=solid]; -"402 Constant_13682" -> "401 Convolution_1823/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"403 Constant_13681" -> "401 Convolution_1823/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"404 Constant_13680" -> "401 Convolution_1823/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"405 Constant_13679" -> "401 Convolution_1823/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"406 Transpose_1822" -> "401 Convolution_1823/fq_weights_1" [label="[144, 576, 1, 1]", style=solid]; -"407 Constant_13677" -> "222 Transpose_6502/fq_output_0" [label="[]", style=solid]; -"408 Constant_13676" -> "222 Transpose_6502/fq_output_0" [label="[]", style=solid]; -"409 Constant_13675" -> "222 Transpose_6502/fq_output_0" [label="[]", style=solid]; -"410 Constant_13674" -> "222 Transpose_6502/fq_output_0" [label="[]", style=solid]; -"411 Constant_6500" -> "218 Transpose_6502" [label="[2]", style=dashed]; -"412 Constant_13672" -> "215 Transpose_6498/fq_output_0" [label="[]", style=solid]; -"413 Constant_13671" -> "215 Transpose_6498/fq_output_0" [label="[]", style=solid]; -"414 Constant_13670" -> "215 Transpose_6498/fq_output_0" [label="[]", style=solid]; -"415 Constant_13669" -> "215 Transpose_6498/fq_output_0" [label="[]", style=solid]; -"416 Constant_9567" -> "209 Transpose_6480" [label="[1, 576, 1, 1]", style=solid]; -"417 Multiply_9559/fq_weights_1" -> "206 Multiply_9559" [label="[576, 1, 1, 5, 5]", style=solid]; -"418 Constant_13667" -> "417 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"419 Constant_13666" -> "417 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"420 Constant_13665" -> "417 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"421 Constant_13664" -> "417 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; -"422 Multiply_9802" -> "417 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 5, 5]", style=solid]; -"423 Constant_13662" -> "202 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"424 Constant_13661" -> "202 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"425 Constant_13660" -> "202 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"426 Constant_13659" -> "202 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; -"427 Constant_9553" -> "194 Transpose_6438" [label="[1, 576, 1, 1]", style=solid]; -"428 Multiply_9545/fq_weights_1" -> "190 Multiply_9545" [label="[576, 96, 1, 1]", style=solid]; -"429 Constant_13657" -> "428 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"430 Constant_13656" -> "428 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"431 Constant_13655" -> "428 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"432 Constant_13654" -> "428 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; -"433 Multiply_9796" -> "428 Multiply_9545/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; -"434 Constant_13652" -> "187 Transpose_6414/fq_output_0" [label="[]", style=solid]; -"435 Constant_13651" -> "187 Transpose_6414/fq_output_0" [label="[]", style=solid]; -"436 Constant_13650" -> "187 Transpose_6414/fq_output_0" [label="[]", style=solid]; -"437 Constant_13649" -> "187 Transpose_6414/fq_output_0" [label="[]", style=solid]; -"438 Constant_9539" -> "184 Transpose_6414" [label="[1, 96, 1, 1]", style=solid]; -"439 Multiply_9531/fq_weights_1" -> "181 Multiply_9531" [label="[96, 288, 1, 1]", style=solid]; -"440 Constant_13647" -> "439 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"441 Constant_13646" -> "439 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"442 Constant_13645" -> "439 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"443 Constant_13644" -> "439 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"444 Multiply_9790" -> "439 Multiply_9531/fq_weights_1" [label="[96, 288, 1, 1]", style=solid]; -"445 Constant_13642" -> "177 Transpose_6390/fq_output_0" [label="[]", style=solid]; -"446 Constant_13641" -> "177 Transpose_6390/fq_output_0" [label="[]", style=solid]; -"447 Constant_13640" -> "177 Transpose_6390/fq_output_0" [label="[]", style=solid]; -"448 Constant_13639" -> "177 Transpose_6390/fq_output_0" [label="[]", style=solid]; -"449 Constant_13637" -> "205 Transpose_6386/fq_output_0" [label="[]", style=solid]; -"450 Constant_13636" -> "205 Transpose_6386/fq_output_0" [label="[]", style=solid]; -"451 Constant_13635" -> "205 Transpose_6386/fq_output_0" [label="[]", style=solid]; -"452 Constant_13634" -> "205 Transpose_6386/fq_output_0" [label="[]", style=solid]; -"453 Transpose_6370" -> "197 Transpose_6372" [label="[1, 288, 1, 1]", style=solid]; -"454 Convolution_1722/fq_weights_1" -> "193 Convolution_1722" [label="[288, 72, 1, 1]", style=solid]; -"455 Constant_13632" -> "454 Convolution_1722/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"456 Constant_13631" -> "454 Convolution_1722/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"457 Constant_13630" -> "454 Convolution_1722/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"458 Constant_13629" -> "454 Convolution_1722/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"459 Transpose_1721" -> "454 Convolution_1722/fq_weights_1" [label="[288, 72, 1, 1]", style=solid]; -"460 Constant_13627" -> "189 Transpose_6366/fq_output_0" [label="[]", style=solid]; -"461 Constant_13626" -> "189 Transpose_6366/fq_output_0" [label="[]", style=solid]; -"462 Constant_13625" -> "189 Transpose_6366/fq_output_0" [label="[]", style=solid]; -"463 Constant_13624" -> "189 Transpose_6366/fq_output_0" [label="[]", style=solid]; -"464 Transpose_6362" -> "183 Transpose_6364" [label="[1, 72, 1, 1]", style=solid]; -"465 Convolution_1713/fq_weights_1" -> "180 Convolution_1713" [label="[72, 288, 1, 1]", style=solid]; -"466 Constant_13622" -> "465 Convolution_1713/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"467 Constant_13621" -> "465 Convolution_1713/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"468 Constant_13620" -> "465 Convolution_1713/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"469 Constant_13619" -> "465 Convolution_1713/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"470 Transpose_1712" -> "465 Convolution_1713/fq_weights_1" [label="[72, 288, 1, 1]", style=solid]; -"471 Constant_13617" -> "176 Transpose_6358/fq_output_0" [label="[]", style=solid]; -"472 Constant_13616" -> "176 Transpose_6358/fq_output_0" [label="[]", style=solid]; -"473 Constant_13615" -> "176 Transpose_6358/fq_output_0" [label="[]", style=solid]; -"474 Constant_13614" -> "176 Transpose_6358/fq_output_0" [label="[]", style=solid]; -"475 Constant_6356" -> "172 Transpose_6358" [label="[2]", style=dashed]; -"476 Constant_13612" -> "169 Transpose_6354/fq_output_0" [label="[]", style=solid]; -"477 Constant_13611" -> "169 Transpose_6354/fq_output_0" [label="[]", style=solid]; -"478 Constant_13610" -> "169 Transpose_6354/fq_output_0" [label="[]", style=solid]; -"479 Constant_13609" -> "169 Transpose_6354/fq_output_0" [label="[]", style=solid]; -"480 Constant_9525" -> "163 Transpose_6336" [label="[1, 288, 1, 1]", style=solid]; -"481 Multiply_9517/fq_weights_1" -> "161 Multiply_9517" [label="[288, 1, 1, 5, 5]", style=solid]; -"482 Constant_13607" -> "481 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; -"483 Constant_13606" -> "481 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; -"484 Constant_13605" -> "481 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; -"485 Constant_13604" -> "481 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; -"486 Multiply_9785" -> "481 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 5, 5]", style=solid]; -"487 Constant_13602" -> "159 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"488 Constant_13601" -> "159 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"489 Constant_13600" -> "159 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"490 Constant_13599" -> "159 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; -"491 Constant_9511" -> "154 Transpose_6267" [label="[1, 288, 1, 1]", style=solid]; -"492 Multiply_9503/fq_weights_1" -> "151 Multiply_9503" [label="[288, 48, 1, 1]", style=solid]; -"493 Constant_13597" -> "492 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"494 Constant_13596" -> "492 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"495 Constant_13595" -> "492 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"496 Constant_13594" -> "492 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; -"497 Multiply_9779" -> "492 Multiply_9503/fq_weights_1" [label="[288, 48, 1, 1]", style=solid]; -"498 Constant_13592" -> "147 Transpose_6243/fq_output_0" [label="[]", style=solid]; -"499 Constant_13591" -> "147 Transpose_6243/fq_output_0" [label="[]", style=solid]; -"500 Constant_13590" -> "147 Transpose_6243/fq_output_0" [label="[]", style=solid]; -"501 Constant_13589" -> "147 Transpose_6243/fq_output_0" [label="[]", style=solid]; -"502 Constant_13587" -> "179 Transpose_6239/fq_output_0" [label="[]", style=solid]; -"503 Constant_13586" -> "179 Transpose_6239/fq_output_0" [label="[]", style=solid]; -"504 Constant_13585" -> "179 Transpose_6239/fq_output_0" [label="[]", style=solid]; -"505 Constant_13584" -> "179 Transpose_6239/fq_output_0" [label="[]", style=solid]; -"506 Constant_9497" -> "175 Transpose_6239" [label="[1, 48, 1, 1]", style=solid]; -"507 Multiply_9489/fq_weights_1" -> "171 Multiply_9489" [label="[48, 144, 1, 1]", style=solid]; -"508 Constant_13582" -> "507 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"509 Constant_13581" -> "507 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"510 Constant_13580" -> "507 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"511 Constant_13579" -> "507 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"512 Multiply_9773" -> "507 Multiply_9489/fq_weights_1" [label="[48, 144, 1, 1]", style=solid]; -"513 Constant_13577" -> "168 Transpose_6215/fq_output_0" [label="[]", style=solid]; -"514 Constant_13576" -> "168 Transpose_6215/fq_output_0" [label="[]", style=solid]; -"515 Constant_13575" -> "168 Transpose_6215/fq_output_0" [label="[]", style=solid]; -"516 Constant_13574" -> "168 Transpose_6215/fq_output_0" [label="[]", style=solid]; -"517 Constant_13572" -> "196 Transpose_6211/fq_output_0" [label="[]", style=solid]; -"518 Constant_13571" -> "196 Transpose_6211/fq_output_0" [label="[]", style=solid]; -"519 Constant_13570" -> "196 Transpose_6211/fq_output_0" [label="[]", style=solid]; -"520 Constant_13569" -> "196 Transpose_6211/fq_output_0" [label="[]", style=solid]; -"521 Transpose_6195" -> "188 Transpose_6197" [label="[1, 144, 1, 1]", style=solid]; -"522 Convolution_1583/fq_weights_1" -> "185 Convolution_1583" [label="[144, 40, 1, 1]", style=solid]; -"523 Constant_13567" -> "522 Convolution_1583/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"524 Constant_13566" -> "522 Convolution_1583/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"525 Constant_13565" -> "522 Convolution_1583/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"526 Constant_13564" -> "522 Convolution_1583/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"527 Transpose_1582" -> "522 Convolution_1583/fq_weights_1" [label="[144, 40, 1, 1]", style=solid]; -"528 Constant_13562" -> "182 Transpose_6191/fq_output_0" [label="[]", style=solid]; -"529 Constant_13561" -> "182 Transpose_6191/fq_output_0" [label="[]", style=solid]; -"530 Constant_13560" -> "182 Transpose_6191/fq_output_0" [label="[]", style=solid]; -"531 Constant_13559" -> "182 Transpose_6191/fq_output_0" [label="[]", style=solid]; -"532 Transpose_6187" -> "174 Transpose_6189" [label="[1, 40, 1, 1]", style=solid]; -"533 Convolution_1574/fq_weights_1" -> "170 Convolution_1574" [label="[40, 144, 1, 1]", style=solid]; -"534 Constant_13557" -> "533 Convolution_1574/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"535 Constant_13556" -> "533 Convolution_1574/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"536 Constant_13555" -> "533 Convolution_1574/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"537 Constant_13554" -> "533 Convolution_1574/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"538 Transpose_1573" -> "533 Convolution_1574/fq_weights_1" [label="[40, 144, 1, 1]", style=solid]; -"539 Constant_13552" -> "167 Transpose_6183/fq_output_0" [label="[]", style=solid]; -"540 Constant_13551" -> "167 Transpose_6183/fq_output_0" [label="[]", style=solid]; -"541 Constant_13550" -> "167 Transpose_6183/fq_output_0" [label="[]", style=solid]; -"542 Constant_13549" -> "167 Transpose_6183/fq_output_0" [label="[]", style=solid]; -"543 Constant_6181" -> "164 Transpose_6183" [label="[2]", style=dashed]; -"544 Constant_13547" -> "162 Transpose_6179/fq_output_0" [label="[]", style=solid]; -"545 Constant_13546" -> "162 Transpose_6179/fq_output_0" [label="[]", style=solid]; -"546 Constant_13545" -> "162 Transpose_6179/fq_output_0" [label="[]", style=solid]; -"547 Constant_13544" -> "162 Transpose_6179/fq_output_0" [label="[]", style=solid]; -"548 Constant_9483" -> "158 Transpose_6161" [label="[1, 144, 1, 1]", style=solid]; -"549 Multiply_9475/fq_weights_1" -> "156 Multiply_9475" [label="[144, 1, 1, 5, 5]", style=solid]; -"550 Constant_13542" -> "549 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; -"551 Constant_13541" -> "549 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; -"552 Constant_13540" -> "549 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; -"553 Constant_13539" -> "549 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; -"554 Multiply_9768" -> "549 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 5, 5]", style=solid]; -"555 Constant_13537" -> "153 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"556 Constant_13536" -> "153 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"557 Constant_13535" -> "153 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"558 Constant_13534" -> "153 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; -"559 Constant_9469" -> "146 Transpose_6119" [label="[1, 144, 1, 1]", style=solid]; -"560 Multiply_9461/fq_weights_1" -> "142 Multiply_9461" [label="[144, 48, 1, 1]", style=solid]; -"561 Constant_13532" -> "560 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"562 Constant_13531" -> "560 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"563 Constant_13530" -> "560 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"564 Constant_13529" -> "560 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; -"565 Multiply_9762" -> "560 Multiply_9461/fq_weights_1" [label="[144, 48, 1, 1]", style=solid]; -"566 Constant_13527" -> "138 Transpose_6095/fq_output_0" [label="[]", style=solid]; -"567 Constant_13526" -> "138 Transpose_6095/fq_output_0" [label="[]", style=solid]; -"568 Constant_13525" -> "138 Transpose_6095/fq_output_0" [label="[]", style=solid]; -"569 Constant_13524" -> "138 Transpose_6095/fq_output_0" [label="[]", style=solid]; -"570 Constant_9455" -> "134 Transpose_6095" [label="[1, 48, 1, 1]", style=solid]; -"571 Multiply_9447/fq_weights_1" -> "130 Multiply_9447" [label="[48, 120, 1, 1]", style=solid]; -"572 Constant_13522" -> "571 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"573 Constant_13521" -> "571 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"574 Constant_13520" -> "571 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"575 Constant_13519" -> "571 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; -"576 Multiply_9756" -> "571 Multiply_9447/fq_weights_1" [label="[48, 120, 1, 1]", style=solid]; -"577 Constant_13517" -> "125 Transpose_6071/fq_output_0" [label="[]", style=solid]; -"578 Constant_13516" -> "125 Transpose_6071/fq_output_0" [label="[]", style=solid]; -"579 Constant_13515" -> "125 Transpose_6071/fq_output_0" [label="[]", style=solid]; -"580 Constant_13514" -> "125 Transpose_6071/fq_output_0" [label="[]", style=solid]; -"581 Constant_13512" -> "155 Transpose_6067/fq_output_0" [label="[]", style=solid]; -"582 Constant_13511" -> "155 Transpose_6067/fq_output_0" [label="[]", style=solid]; -"583 Constant_13510" -> "155 Transpose_6067/fq_output_0" [label="[]", style=solid]; -"584 Constant_13509" -> "155 Transpose_6067/fq_output_0" [label="[]", style=solid]; -"585 Transpose_6051" -> "149 Transpose_6053" [label="[1, 120, 1, 1]", style=solid]; -"586 Convolution_1473/fq_weights_1" -> "145 Convolution_1473" [label="[120, 32, 1, 1]", style=solid]; -"587 Constant_13507" -> "586 Convolution_1473/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"588 Constant_13506" -> "586 Convolution_1473/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"589 Constant_13505" -> "586 Convolution_1473/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"590 Constant_13504" -> "586 Convolution_1473/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"591 Transpose_1472" -> "586 Convolution_1473/fq_weights_1" [label="[120, 32, 1, 1]", style=solid]; -"592 Constant_13502" -> "141 Transpose_6047/fq_output_0" [label="[]", style=solid]; -"593 Constant_13501" -> "141 Transpose_6047/fq_output_0" [label="[]", style=solid]; -"594 Constant_13500" -> "141 Transpose_6047/fq_output_0" [label="[]", style=solid]; -"595 Constant_13499" -> "141 Transpose_6047/fq_output_0" [label="[]", style=solid]; -"596 Transpose_6043" -> "133 Transpose_6045" [label="[1, 32, 1, 1]", style=solid]; -"597 Convolution_1464/fq_weights_1" -> "129 Convolution_1464" [label="[32, 120, 1, 1]", style=solid]; -"598 Constant_13497" -> "597 Convolution_1464/fq_weights_1" [label="[32, 1, 1, 1]", style=solid]; -"599 Constant_13496" -> "597 Convolution_1464/fq_weights_1" [label="[32, 1, 1, 1]", style=solid]; -"600 Constant_13495" -> "597 Convolution_1464/fq_weights_1" [label="[32, 1, 1, 1]", style=solid]; -"601 Constant_13494" -> "597 Convolution_1464/fq_weights_1" [label="[32, 1, 1, 1]", style=solid]; -"602 Transpose_1463" -> "597 Convolution_1464/fq_weights_1" [label="[32, 120, 1, 1]", style=solid]; -"603 Constant_13492" -> "124 Transpose_6039/fq_output_0" [label="[]", style=solid]; -"604 Constant_13491" -> "124 Transpose_6039/fq_output_0" [label="[]", style=solid]; -"605 Constant_13490" -> "124 Transpose_6039/fq_output_0" [label="[]", style=solid]; -"606 Constant_13489" -> "124 Transpose_6039/fq_output_0" [label="[]", style=solid]; -"607 Constant_6037" -> "119 Transpose_6039" [label="[2]", style=dashed]; -"608 Constant_13487" -> "114 Transpose_6035/fq_output_0" [label="[]", style=solid]; -"609 Constant_13486" -> "114 Transpose_6035/fq_output_0" [label="[]", style=solid]; -"610 Constant_13485" -> "114 Transpose_6035/fq_output_0" [label="[]", style=solid]; -"611 Constant_13484" -> "114 Transpose_6035/fq_output_0" [label="[]", style=solid]; -"612 Constant_9441" -> "104 Transpose_6017" [label="[1, 120, 1, 1]", style=solid]; -"613 Multiply_9433/fq_weights_1" -> "100 Multiply_9433" [label="[120, 1, 1, 5, 5]", style=solid]; -"614 Constant_13482" -> "613 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; -"615 Constant_13481" -> "613 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; -"616 Constant_13480" -> "613 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; -"617 Constant_13479" -> "613 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; -"618 Multiply_9751" -> "613 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 5, 5]", style=solid]; -"619 Constant_13477" -> "96 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"620 Constant_13476" -> "96 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"621 Constant_13475" -> "96 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"622 Constant_13474" -> "96 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; -"623 Constant_9427" -> "90 Transpose_5975" [label="[1, 120, 1, 1]", style=solid]; -"624 Multiply_9419/fq_weights_1" -> "87 Multiply_9419" [label="[120, 40, 1, 1]", style=solid]; -"625 Constant_13472" -> "624 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"626 Constant_13471" -> "624 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"627 Constant_13470" -> "624 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"628 Constant_13469" -> "624 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; -"629 Multiply_9745" -> "624 Multiply_9419/fq_weights_1" [label="[120, 40, 1, 1]", style=solid]; -"630 Constant_13467" -> "83 Transpose_5951/fq_output_0" [label="[]", style=solid]; -"631 Constant_13466" -> "83 Transpose_5951/fq_output_0" [label="[]", style=solid]; -"632 Constant_13465" -> "83 Transpose_5951/fq_output_0" [label="[]", style=solid]; -"633 Constant_13464" -> "83 Transpose_5951/fq_output_0" [label="[]", style=solid]; -"634 Constant_13462" -> "128 Transpose_5947/fq_output_0" [label="[]", style=solid]; -"635 Constant_13461" -> "128 Transpose_5947/fq_output_0" [label="[]", style=solid]; -"636 Constant_13460" -> "128 Transpose_5947/fq_output_0" [label="[]", style=solid]; -"637 Constant_13459" -> "128 Transpose_5947/fq_output_0" [label="[]", style=solid]; -"638 Constant_9413" -> "123 Transpose_5947" [label="[1, 40, 1, 1]", style=solid]; -"639 Multiply_9405/fq_weights_1" -> "118 Multiply_9405" [label="[40, 240, 1, 1]", style=solid]; -"640 Constant_13457" -> "639 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"641 Constant_13456" -> "639 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"642 Constant_13455" -> "639 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"643 Constant_13454" -> "639 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"644 Multiply_9739" -> "639 Multiply_9405/fq_weights_1" [label="[40, 240, 1, 1]", style=solid]; -"645 Constant_13452" -> "113 Transpose_5923/fq_output_0" [label="[]", style=solid]; -"646 Constant_13451" -> "113 Transpose_5923/fq_output_0" [label="[]", style=solid]; -"647 Constant_13450" -> "113 Transpose_5923/fq_output_0" [label="[]", style=solid]; -"648 Constant_13449" -> "113 Transpose_5923/fq_output_0" [label="[]", style=solid]; -"649 Constant_13447" -> "148 Transpose_5919/fq_output_0" [label="[]", style=solid]; -"650 Constant_13446" -> "148 Transpose_5919/fq_output_0" [label="[]", style=solid]; -"651 Constant_13445" -> "148 Transpose_5919/fq_output_0" [label="[]", style=solid]; -"652 Constant_13444" -> "148 Transpose_5919/fq_output_0" [label="[]", style=solid]; -"653 Transpose_5903" -> "140 Transpose_5905" [label="[1, 240, 1, 1]", style=solid]; -"654 Convolution_1362/fq_weights_1" -> "136 Convolution_1362" [label="[240, 64, 1, 1]", style=solid]; -"655 Constant_13442" -> "654 Convolution_1362/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"656 Constant_13441" -> "654 Convolution_1362/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"657 Constant_13440" -> "654 Convolution_1362/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"658 Constant_13439" -> "654 Convolution_1362/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"659 Transpose_1361" -> "654 Convolution_1362/fq_weights_1" [label="[240, 64, 1, 1]", style=solid]; -"660 Constant_13437" -> "132 Transpose_5899/fq_output_0" [label="[]", style=solid]; -"661 Constant_13436" -> "132 Transpose_5899/fq_output_0" [label="[]", style=solid]; -"662 Constant_13435" -> "132 Transpose_5899/fq_output_0" [label="[]", style=solid]; -"663 Constant_13434" -> "132 Transpose_5899/fq_output_0" [label="[]", style=solid]; -"664 Transpose_5895" -> "122 Transpose_5897" [label="[1, 64, 1, 1]", style=solid]; -"665 Convolution_1353/fq_weights_1" -> "117 Convolution_1353" [label="[64, 240, 1, 1]", style=solid]; -"666 Constant_13432" -> "665 Convolution_1353/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"667 Constant_13431" -> "665 Convolution_1353/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"668 Constant_13430" -> "665 Convolution_1353/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"669 Constant_13429" -> "665 Convolution_1353/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"670 Transpose_1352" -> "665 Convolution_1353/fq_weights_1" [label="[64, 240, 1, 1]", style=solid]; -"671 Constant_13427" -> "112 Transpose_5891/fq_output_0" [label="[]", style=solid]; -"672 Constant_13426" -> "112 Transpose_5891/fq_output_0" [label="[]", style=solid]; -"673 Constant_13425" -> "112 Transpose_5891/fq_output_0" [label="[]", style=solid]; -"674 Constant_13424" -> "112 Transpose_5891/fq_output_0" [label="[]", style=solid]; -"675 Constant_5889" -> "107 Transpose_5891" [label="[2]", style=dashed]; -"676 Constant_13422" -> "103 Transpose_5887/fq_output_0" [label="[]", style=solid]; -"677 Constant_13421" -> "103 Transpose_5887/fq_output_0" [label="[]", style=solid]; -"678 Constant_13420" -> "103 Transpose_5887/fq_output_0" [label="[]", style=solid]; -"679 Constant_13419" -> "103 Transpose_5887/fq_output_0" [label="[]", style=solid]; -"680 Constant_9399" -> "95 Transpose_5869" [label="[1, 240, 1, 1]", style=solid]; -"681 Multiply_9391/fq_weights_1" -> "92 Multiply_9391" [label="[240, 1, 1, 5, 5]", style=solid]; -"682 Constant_13417" -> "681 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"683 Constant_13416" -> "681 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"684 Constant_13415" -> "681 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"685 Constant_13414" -> "681 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"686 Multiply_9734" -> "681 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 5, 5]", style=solid]; -"687 Constant_13412" -> "89 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"688 Constant_13411" -> "89 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"689 Constant_13410" -> "89 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"690 Constant_13409" -> "89 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"691 Constant_9385" -> "82 Transpose_5827" [label="[1, 240, 1, 1]", style=solid]; -"692 Multiply_9377/fq_weights_1" -> "78 Multiply_9377" [label="[240, 40, 1, 1]", style=solid]; -"693 Constant_13407" -> "692 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"694 Constant_13406" -> "692 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"695 Constant_13405" -> "692 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"696 Constant_13404" -> "692 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"697 Multiply_9728" -> "692 Multiply_9377/fq_weights_1" [label="[240, 40, 1, 1]", style=solid]; -"698 Constant_13402" -> "75 Transpose_5803/fq_output_0" [label="[]", style=solid]; -"699 Constant_13401" -> "75 Transpose_5803/fq_output_0" [label="[]", style=solid]; -"700 Constant_13400" -> "75 Transpose_5803/fq_output_0" [label="[]", style=solid]; -"701 Constant_13399" -> "75 Transpose_5803/fq_output_0" [label="[]", style=solid]; -"702 Constant_13397" -> "116 Transpose_5799/fq_output_0" [label="[]", style=solid]; -"703 Constant_13396" -> "116 Transpose_5799/fq_output_0" [label="[]", style=solid]; -"704 Constant_13395" -> "116 Transpose_5799/fq_output_0" [label="[]", style=solid]; -"705 Constant_13394" -> "116 Transpose_5799/fq_output_0" [label="[]", style=solid]; -"706 Constant_9371" -> "111 Transpose_5799" [label="[1, 40, 1, 1]", style=solid]; -"707 Multiply_9363/fq_weights_1" -> "106 Multiply_9363" [label="[40, 240, 1, 1]", style=solid]; -"708 Constant_13392" -> "707 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"709 Constant_13391" -> "707 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"710 Constant_13390" -> "707 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"711 Constant_13389" -> "707 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"712 Multiply_9722" -> "707 Multiply_9363/fq_weights_1" [label="[40, 240, 1, 1]", style=solid]; -"713 Constant_13387" -> "102 Transpose_5775/fq_output_0" [label="[]", style=solid]; -"714 Constant_13386" -> "102 Transpose_5775/fq_output_0" [label="[]", style=solid]; -"715 Constant_13385" -> "102 Transpose_5775/fq_output_0" [label="[]", style=solid]; -"716 Constant_13384" -> "102 Transpose_5775/fq_output_0" [label="[]", style=solid]; -"717 Constant_13382" -> "139 Transpose_5771/fq_output_0" [label="[]", style=solid]; -"718 Constant_13381" -> "139 Transpose_5771/fq_output_0" [label="[]", style=solid]; -"719 Constant_13380" -> "139 Transpose_5771/fq_output_0" [label="[]", style=solid]; -"720 Constant_13379" -> "139 Transpose_5771/fq_output_0" [label="[]", style=solid]; -"721 Transpose_5755" -> "131 Transpose_5757" [label="[1, 240, 1, 1]", style=solid]; -"722 Convolution_1251/fq_weights_1" -> "126 Convolution_1251" [label="[240, 64, 1, 1]", style=solid]; -"723 Constant_13377" -> "722 Convolution_1251/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"724 Constant_13376" -> "722 Convolution_1251/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"725 Constant_13375" -> "722 Convolution_1251/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"726 Constant_13374" -> "722 Convolution_1251/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"727 Transpose_1250" -> "722 Convolution_1251/fq_weights_1" [label="[240, 64, 1, 1]", style=solid]; -"728 Constant_13372" -> "121 Transpose_5751/fq_output_0" [label="[]", style=solid]; -"729 Constant_13371" -> "121 Transpose_5751/fq_output_0" [label="[]", style=solid]; -"730 Constant_13370" -> "121 Transpose_5751/fq_output_0" [label="[]", style=solid]; -"731 Constant_13369" -> "121 Transpose_5751/fq_output_0" [label="[]", style=solid]; -"732 Transpose_5747" -> "110 Transpose_5749" [label="[1, 64, 1, 1]", style=solid]; -"733 Convolution_1242/fq_weights_1" -> "105 Convolution_1242" [label="[64, 240, 1, 1]", style=solid]; -"734 Constant_13367" -> "733 Convolution_1242/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"735 Constant_13366" -> "733 Convolution_1242/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"736 Constant_13365" -> "733 Convolution_1242/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"737 Constant_13364" -> "733 Convolution_1242/fq_weights_1" [label="[64, 1, 1, 1]", style=solid]; -"738 Transpose_1241" -> "733 Convolution_1242/fq_weights_1" [label="[64, 240, 1, 1]", style=solid]; -"739 Constant_13362" -> "101 Transpose_5743/fq_output_0" [label="[]", style=solid]; -"740 Constant_13361" -> "101 Transpose_5743/fq_output_0" [label="[]", style=solid]; -"741 Constant_13360" -> "101 Transpose_5743/fq_output_0" [label="[]", style=solid]; -"742 Constant_13359" -> "101 Transpose_5743/fq_output_0" [label="[]", style=solid]; -"743 Constant_5741" -> "97 Transpose_5743" [label="[2]", style=dashed]; -"744 Constant_13357" -> "94 Transpose_5739/fq_output_0" [label="[]", style=solid]; -"745 Constant_13356" -> "94 Transpose_5739/fq_output_0" [label="[]", style=solid]; -"746 Constant_13355" -> "94 Transpose_5739/fq_output_0" [label="[]", style=solid]; -"747 Constant_13354" -> "94 Transpose_5739/fq_output_0" [label="[]", style=solid]; -"748 Constant_9357" -> "88 Transpose_5721" [label="[1, 240, 1, 1]", style=solid]; -"749 Multiply_9349/fq_weights_1" -> "85 Multiply_9349" [label="[240, 1, 1, 5, 5]", style=solid]; -"750 Constant_13352" -> "749 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"751 Constant_13351" -> "749 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"752 Constant_13350" -> "749 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"753 Constant_13349" -> "749 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; -"754 Multiply_9717" -> "749 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 5, 5]", style=solid]; -"755 Constant_13347" -> "81 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"756 Constant_13346" -> "81 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"757 Constant_13345" -> "81 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"758 Constant_13344" -> "81 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; -"759 Constant_9343" -> "74 Transpose_5679" [label="[1, 240, 1, 1]", style=solid]; -"760 Multiply_9335/fq_weights_1" -> "71 Multiply_9335" [label="[240, 40, 1, 1]", style=solid]; -"761 Constant_13342" -> "760 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"762 Constant_13341" -> "760 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"763 Constant_13340" -> "760 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"764 Constant_13339" -> "760 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; -"765 Multiply_9711" -> "760 Multiply_9335/fq_weights_1" [label="[240, 40, 1, 1]", style=solid]; -"766 Constant_13337" -> "69 Transpose_5655/fq_output_0" [label="[]", style=solid]; -"767 Constant_13336" -> "69 Transpose_5655/fq_output_0" [label="[]", style=solid]; -"768 Constant_13335" -> "69 Transpose_5655/fq_output_0" [label="[]", style=solid]; -"769 Constant_13334" -> "69 Transpose_5655/fq_output_0" [label="[]", style=solid]; -"770 Constant_9329" -> "67 Transpose_5655" [label="[1, 40, 1, 1]", style=solid]; -"771 Multiply_9321/fq_weights_1" -> "65 Multiply_9321" [label="[40, 96, 1, 1]", style=solid]; -"772 Constant_13332" -> "771 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"773 Constant_13331" -> "771 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"774 Constant_13330" -> "771 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"775 Constant_13329" -> "771 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; -"776 Multiply_9705" -> "771 Multiply_9321/fq_weights_1" [label="[40, 96, 1, 1]", style=solid]; -"777 Constant_13327" -> "63 Transpose_5631/fq_output_0" [label="[]", style=solid]; -"778 Constant_13326" -> "63 Transpose_5631/fq_output_0" [label="[]", style=solid]; -"779 Constant_13325" -> "63 Transpose_5631/fq_output_0" [label="[]", style=solid]; -"780 Constant_13324" -> "63 Transpose_5631/fq_output_0" [label="[]", style=solid]; -"781 Constant_13322" -> "84 Transpose_5627/fq_output_0" [label="[]", style=solid]; -"782 Constant_13321" -> "84 Transpose_5627/fq_output_0" [label="[]", style=solid]; -"783 Constant_13320" -> "84 Transpose_5627/fq_output_0" [label="[]", style=solid]; -"784 Constant_13319" -> "84 Transpose_5627/fq_output_0" [label="[]", style=solid]; -"785 Transpose_5611" -> "76 Transpose_5613" [label="[1, 96, 1, 1]", style=solid]; -"786 Convolution_1141/fq_weights_1" -> "73 Convolution_1141" [label="[96, 24, 1, 1]", style=solid]; -"787 Constant_13317" -> "786 Convolution_1141/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"788 Constant_13316" -> "786 Convolution_1141/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"789 Constant_13315" -> "786 Convolution_1141/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"790 Constant_13314" -> "786 Convolution_1141/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"791 Transpose_1140" -> "786 Convolution_1141/fq_weights_1" [label="[96, 24, 1, 1]", style=solid]; -"792 Constant_13312" -> "70 Transpose_5607/fq_output_0" [label="[]", style=solid]; -"793 Constant_13311" -> "70 Transpose_5607/fq_output_0" [label="[]", style=solid]; -"794 Constant_13310" -> "70 Transpose_5607/fq_output_0" [label="[]", style=solid]; -"795 Constant_13309" -> "70 Transpose_5607/fq_output_0" [label="[]", style=solid]; -"796 Transpose_5603" -> "66 Transpose_5605" [label="[1, 24, 1, 1]", style=solid]; -"797 Convolution_1132/fq_weights_1" -> "64 Convolution_1132" [label="[24, 96, 1, 1]", style=solid]; -"798 Constant_13307" -> "797 Convolution_1132/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"799 Constant_13306" -> "797 Convolution_1132/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"800 Constant_13305" -> "797 Convolution_1132/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"801 Constant_13304" -> "797 Convolution_1132/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"802 Transpose_1131" -> "797 Convolution_1132/fq_weights_1" [label="[24, 96, 1, 1]", style=solid]; -"803 Constant_13302" -> "62 Transpose_5599/fq_output_0" [label="[]", style=solid]; -"804 Constant_13301" -> "62 Transpose_5599/fq_output_0" [label="[]", style=solid]; -"805 Constant_13300" -> "62 Transpose_5599/fq_output_0" [label="[]", style=solid]; -"806 Constant_13299" -> "62 Transpose_5599/fq_output_0" [label="[]", style=solid]; -"807 Constant_5597" -> "60 Transpose_5599" [label="[2]", style=dashed]; -"808 Constant_13297" -> "58 Transpose_5595/fq_output_0" [label="[]", style=solid]; -"809 Constant_13296" -> "58 Transpose_5595/fq_output_0" [label="[]", style=solid]; -"810 Constant_13295" -> "58 Transpose_5595/fq_output_0" [label="[]", style=solid]; -"811 Constant_13294" -> "58 Transpose_5595/fq_output_0" [label="[]", style=solid]; -"812 Constant_9315" -> "54 Transpose_5577" [label="[1, 96, 1, 1]", style=solid]; -"813 Multiply_9307/fq_weights_1" -> "52 Multiply_9307" [label="[96, 1, 1, 5, 5]", style=solid]; -"814 Constant_13292" -> "813 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; -"815 Constant_13291" -> "813 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; -"816 Constant_13290" -> "813 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; -"817 Constant_13289" -> "813 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; -"818 Multiply_9700" -> "813 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 5, 5]", style=solid]; -"819 Constant_13287" -> "50 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"820 Constant_13286" -> "50 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"821 Constant_13285" -> "50 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"822 Constant_13284" -> "50 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; -"823 Constant_9301" -> "46 Transpose_5508" [label="[1, 96, 1, 1]", style=solid]; -"824 Multiply_9293/fq_weights_1" -> "44 Multiply_9293" [label="[96, 24, 1, 1]", style=solid]; -"825 Constant_13282" -> "824 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"826 Constant_13281" -> "824 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"827 Constant_13280" -> "824 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"828 Constant_13279" -> "824 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; -"829 Multiply_9694" -> "824 Multiply_9293/fq_weights_1" [label="[96, 24, 1, 1]", style=solid]; -"830 Constant_13277" -> "42 Transpose_5484/fq_output_0" [label="[]", style=solid]; -"831 Constant_13276" -> "42 Transpose_5484/fq_output_0" [label="[]", style=solid]; -"832 Constant_13275" -> "42 Transpose_5484/fq_output_0" [label="[]", style=solid]; -"833 Constant_13274" -> "42 Transpose_5484/fq_output_0" [label="[]", style=solid]; -"834 Constant_13272" -> "59 Transpose_5480/fq_output_0" [label="[]", style=solid]; -"835 Constant_13271" -> "59 Transpose_5480/fq_output_0" [label="[]", style=solid]; -"836 Constant_13270" -> "59 Transpose_5480/fq_output_0" [label="[]", style=solid]; -"837 Constant_13269" -> "59 Transpose_5480/fq_output_0" [label="[]", style=solid]; -"838 Constant_9287" -> "57 Transpose_5480" [label="[1, 24, 1, 1]", style=solid]; -"839 Multiply_9279/fq_weights_1" -> "55 Multiply_9279" [label="[24, 88, 1, 1]", style=solid]; -"840 Constant_13267" -> "839 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"841 Constant_13266" -> "839 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"842 Constant_13265" -> "839 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"843 Constant_13264" -> "839 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"844 Multiply_9688" -> "839 Multiply_9279/fq_weights_1" [label="[24, 88, 1, 1]", style=solid]; -"845 Constant_13262" -> "53 Transpose_5456/fq_output_0" [label="[]", style=solid]; -"846 Constant_13261" -> "53 Transpose_5456/fq_output_0" [label="[]", style=solid]; -"847 Constant_13260" -> "53 Transpose_5456/fq_output_0" [label="[]", style=solid]; -"848 Constant_13259" -> "53 Transpose_5456/fq_output_0" [label="[]", style=solid]; -"849 Constant_9273" -> "49 Transpose_5454" [label="[1, 88, 1, 1]", style=solid]; -"850 Multiply_9265/fq_weights_1" -> "47 Multiply_9265" [label="[88, 1, 1, 3, 3]", style=solid]; -"851 Constant_13257" -> "850 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; -"852 Constant_13256" -> "850 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; -"853 Constant_13255" -> "850 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; -"854 Constant_13254" -> "850 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; -"855 Multiply_9683" -> "850 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 3, 3]", style=solid]; -"856 Constant_13252" -> "45 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; -"857 Constant_13251" -> "45 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; -"858 Constant_13250" -> "45 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; -"859 Constant_13249" -> "45 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; -"860 Constant_9259" -> "41 Transpose_5428" [label="[1, 88, 1, 1]", style=solid]; -"861 Multiply_9251/fq_weights_1" -> "39 Multiply_9251" [label="[88, 24, 1, 1]", style=solid]; -"862 Constant_13247" -> "861 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; -"863 Constant_13246" -> "861 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; -"864 Constant_13245" -> "861 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; -"865 Constant_13244" -> "861 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; -"866 Multiply_9677" -> "861 Multiply_9251/fq_weights_1" [label="[88, 24, 1, 1]", style=solid]; -"867 Constant_13242" -> "38 Transpose_5404/fq_output_0" [label="[]", style=solid]; -"868 Constant_13241" -> "38 Transpose_5404/fq_output_0" [label="[]", style=solid]; -"869 Constant_13240" -> "38 Transpose_5404/fq_output_0" [label="[]", style=solid]; -"870 Constant_13239" -> "38 Transpose_5404/fq_output_0" [label="[]", style=solid]; -"871 Constant_9245" -> "37 Transpose_5404" [label="[1, 24, 1, 1]", style=solid]; -"872 Multiply_9237/fq_weights_1" -> "36 Multiply_9237" [label="[24, 72, 1, 1]", style=solid]; -"873 Constant_13237" -> "872 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"874 Constant_13236" -> "872 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"875 Constant_13235" -> "872 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"876 Constant_13234" -> "872 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; -"877 Multiply_9671" -> "872 Multiply_9237/fq_weights_1" [label="[24, 72, 1, 1]", style=solid]; -"878 Constant_13232" -> "35 Transpose_5380/fq_output_0" [label="[]", style=solid]; -"879 Constant_13231" -> "35 Transpose_5380/fq_output_0" [label="[]", style=solid]; -"880 Constant_13230" -> "35 Transpose_5380/fq_output_0" [label="[]", style=solid]; -"881 Constant_13229" -> "35 Transpose_5380/fq_output_0" [label="[]", style=solid]; -"882 Constant_9231" -> "33 Transpose_5378" [label="[1, 72, 1, 1]", style=solid]; -"883 Multiply_9223/fq_weights_1" -> "32 Multiply_9223" [label="[72, 1, 1, 3, 3]", style=solid]; -"884 Constant_13227" -> "883 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; -"885 Constant_13226" -> "883 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; -"886 Constant_13225" -> "883 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; -"887 Constant_13224" -> "883 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; -"888 Multiply_9666" -> "883 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 3, 3]", style=solid]; -"889 Constant_13222" -> "30 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; -"890 Constant_13221" -> "30 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; -"891 Constant_13220" -> "30 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; -"892 Constant_13219" -> "30 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; -"893 Constant_9217" -> "26 Transpose_5325" [label="[1, 72, 1, 1]", style=solid]; -"894 Multiply_9209/fq_weights_1" -> "24 Multiply_9209" [label="[72, 16, 1, 1]", style=solid]; -"895 Constant_13217" -> "894 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"896 Constant_13216" -> "894 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"897 Constant_13215" -> "894 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"898 Constant_13214" -> "894 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; -"899 Multiply_9660" -> "894 Multiply_9209/fq_weights_1" [label="[72, 16, 1, 1]", style=solid]; -"900 Constant_13212" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; -"901 Constant_13211" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; -"902 Constant_13210" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; -"903 Constant_13209" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; -"904 Constant_9203" -> "20 Transpose_5301" [label="[1, 16, 1, 1]", style=solid]; -"905 Multiply_9195/fq_weights_1" -> "18 Multiply_9195" [label="[16, 16, 1, 1]", style=solid]; -"906 Constant_13207" -> "905 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"907 Constant_13206" -> "905 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"908 Constant_13205" -> "905 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"909 Constant_13204" -> "905 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"910 Multiply_9654" -> "905 Multiply_9195/fq_weights_1" [label="[16, 16, 1, 1]", style=solid]; -"911 Constant_13202" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; -"912 Constant_13201" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; -"913 Constant_13200" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; -"914 Constant_13199" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; -"915 Constant_13197" -> "31 Transpose_5273/fq_output_0" [label="[]", style=solid]; -"916 Constant_13196" -> "31 Transpose_5273/fq_output_0" [label="[]", style=solid]; -"917 Constant_13195" -> "31 Transpose_5273/fq_output_0" [label="[]", style=solid]; -"918 Constant_13194" -> "31 Transpose_5273/fq_output_0" [label="[]", style=solid]; -"919 Transpose_5257" -> "27 Transpose_5259" [label="[1, 16, 1, 1]", style=solid]; -"920 Convolution_810/fq_weights_1" -> "25 Convolution_810" [label="[16, 8, 1, 1]", style=solid]; -"921 Constant_13192" -> "920 Convolution_810/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"922 Constant_13191" -> "920 Convolution_810/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"923 Constant_13190" -> "920 Convolution_810/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"924 Constant_13189" -> "920 Convolution_810/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"925 Transpose_809" -> "920 Convolution_810/fq_weights_1" [label="[16, 8, 1, 1]", style=solid]; -"926 Constant_13187" -> "23 Transpose_5253/fq_output_0" [label="[]", style=solid]; -"927 Constant_13186" -> "23 Transpose_5253/fq_output_0" [label="[]", style=solid]; -"928 Constant_13185" -> "23 Transpose_5253/fq_output_0" [label="[]", style=solid]; -"929 Constant_13184" -> "23 Transpose_5253/fq_output_0" [label="[]", style=solid]; -"930 Transpose_5249" -> "19 Transpose_5251" [label="[1, 8, 1, 1]", style=solid]; -"931 Convolution_801/fq_weights_1" -> "17 Convolution_801" [label="[8, 16, 1, 1]", style=solid]; -"932 Constant_13182" -> "931 Convolution_801/fq_weights_1" [label="[8, 1, 1, 1]", style=solid]; -"933 Constant_13181" -> "931 Convolution_801/fq_weights_1" [label="[8, 1, 1, 1]", style=solid]; -"934 Constant_13180" -> "931 Convolution_801/fq_weights_1" [label="[8, 1, 1, 1]", style=solid]; -"935 Constant_13179" -> "931 Convolution_801/fq_weights_1" [label="[8, 1, 1, 1]", style=solid]; -"936 Transpose_800" -> "931 Convolution_801/fq_weights_1" [label="[8, 16, 1, 1]", style=solid]; -"937 Constant_13177" -> "15 Transpose_5245/fq_output_0" [label="[]", style=solid]; -"938 Constant_13176" -> "15 Transpose_5245/fq_output_0" [label="[]", style=solid]; -"939 Constant_13175" -> "15 Transpose_5245/fq_output_0" [label="[]", style=solid]; -"940 Constant_13174" -> "15 Transpose_5245/fq_output_0" [label="[]", style=solid]; -"941 Constant_5243" -> "13 Transpose_5245" [label="[2]", style=dashed]; -"942 Constant_13172" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; -"943 Constant_13171" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; -"944 Constant_13170" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; -"945 Constant_13169" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; -"946 Constant_9189" -> "10 Transpose_5239" [label="[1, 16, 1, 1]", style=solid]; -"947 Multiply_9181/fq_weights_1" -> "9 Multiply_9181" [label="[16, 1, 1, 3, 3]", style=solid]; -"948 Constant_13167" -> "947 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; -"949 Constant_13166" -> "947 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; -"950 Constant_13165" -> "947 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; -"951 Constant_13164" -> "947 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; -"952 Multiply_9649" -> "947 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 3, 3]", style=solid]; -"953 Constant_13162" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; -"954 Constant_13161" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; -"955 Constant_13160" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; -"956 Constant_13159" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; -"957 Constant_9175" -> "6 Transpose_5170" [label="[1, 16, 1, 1]", style=solid]; -"958 Multiply_9167/fq_weights_1" -> "5 Multiply_9167" [label="[16, 3, 3, 3]", style=solid]; -"959 Constant_13157" -> "958 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"960 Constant_13156" -> "958 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"961 Constant_13155" -> "958 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"962 Constant_13154" -> "958 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; -"963 Gather_10068" -> "958 Multiply_9167/fq_weights_1" [label="[16, 3, 3, 3]", style=solid]; -"964 Constant_13152" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; -"965 Constant_13151" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; -"966 Constant_13150" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; -"967 Constant_13149" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; -"968 Unsqueeze_7776" -> "3 Transpose_710" [label="[1, 1, 1, 1]", style=solid]; -"969 Unsqueeze_7782" -> "2 Transpose_7774" [label="[1, 1, 1, 1]", style=solid]; -"970 Constant_7779" -> "1 Transpose_7780" [label="[4]", style=dashed]; +"27 Transpose_5273/fq_output_0" -> "14 Transpose_5277" [label="[1, 16, 1, 1]", style=solid]; +"28 Transpose_5327" -> "29 Transpose_5327/fq_output_0" [label="[1, 72, 56, 56]", style=solid]; +"29 Transpose_5327/fq_output_0" -> "30 Multiply_9223" [label="[1, 72, 56, 56]", style=solid]; +"30 Multiply_9223" -> "31 Transpose_5378" [label="[1, 72, 28, 28]", style=solid]; +"31 Transpose_5378" -> "32 Transpose_5380" [label="[1, 72, 28, 28]", style=solid]; +"32 Transpose_5380" -> "33 Transpose_5380/fq_output_0" [label="[1, 72, 28, 28]", style=solid]; +"33 Transpose_5380/fq_output_0" -> "34 Multiply_9237" [label="[1, 72, 28, 28]", style=solid]; +"34 Multiply_9237" -> "35 Transpose_5404" [label="[1, 24, 28, 28]", style=solid]; +"35 Transpose_5404" -> "36 Transpose_5404/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; +"36 Transpose_5404/fq_output_0" -> "37 Multiply_9251" [label="[1, 24, 28, 28]", style=solid]; +"36 Transpose_5404/fq_output_0" -> "38 Transpose_5484" [label="[1, 24, 28, 28]", style=solid]; +"37 Multiply_9251" -> "39 Transpose_5428" [label="[1, 88, 28, 28]", style=solid]; +"38 Transpose_5484" -> "40 Transpose_5484/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; +"39 Transpose_5428" -> "41 Transpose_5430" [label="[1, 88, 28, 28]", style=solid]; +"40 Transpose_5484/fq_output_0" -> "42 Multiply_9293" [label="[1, 24, 28, 28]", style=solid]; +"41 Transpose_5430" -> "43 Transpose_5430/fq_output_0" [label="[1, 88, 28, 28]", style=solid]; +"42 Multiply_9293" -> "44 Transpose_5508" [label="[1, 96, 28, 28]", style=solid]; +"43 Transpose_5430/fq_output_0" -> "45 Multiply_9265" [label="[1, 88, 28, 28]", style=solid]; +"44 Transpose_5508" -> "46 Transpose_5526" [label="[1, 96, 28, 28]", style=solid]; +"45 Multiply_9265" -> "47 Transpose_5454" [label="[1, 88, 28, 28]", style=solid]; +"46 Transpose_5526" -> "48 Transpose_5526/fq_output_0" [label="[1, 96, 28, 28]", style=solid]; +"47 Transpose_5454" -> "49 Transpose_5456" [label="[1, 88, 28, 28]", style=solid]; +"48 Transpose_5526/fq_output_0" -> "50 Multiply_9307" [label="[1, 96, 28, 28]", style=solid]; +"49 Transpose_5456" -> "51 Transpose_5456/fq_output_0" [label="[1, 88, 28, 28]", style=solid]; +"50 Multiply_9307" -> "52 Transpose_5577" [label="[1, 96, 14, 14]", style=solid]; +"51 Transpose_5456/fq_output_0" -> "53 Multiply_9279" [label="[1, 88, 28, 28]", style=solid]; +"52 Transpose_5577" -> "54 Transpose_5595" [label="[1, 96, 14, 14]", style=solid]; +"53 Multiply_9279" -> "55 Transpose_5480" [label="[1, 24, 28, 28]", style=solid]; +"54 Transpose_5595" -> "56 Transpose_5595/fq_output_0" [label="[1, 96, 14, 14]", style=solid]; +"55 Transpose_5480" -> "57 Transpose_5480/fq_output_0" [label="[1, 24, 28, 28]", style=solid]; +"56 Transpose_5595/fq_output_0" -> "58 Transpose_5599" [label="[1, 96, 14, 14]", style=solid]; +"56 Transpose_5595/fq_output_0" -> "59 Transpose_5631" [label="[1, 96, 14, 14]", style=solid]; +"57 Transpose_5480/fq_output_0" -> "38 Transpose_5484" [label="[1, 24, 28, 28]", style=solid]; +"58 Transpose_5599" -> "60 Convolution_1132" [label="[1, 96, 1, 1]", style=solid]; +"59 Transpose_5631" -> "61 Transpose_5631/fq_output_0" [label="[1, 96, 14, 14]", style=solid]; +"60 Convolution_1132" -> "62 Transpose_5605" [label="[1, 24, 1, 1]", style=solid]; +"61 Transpose_5631/fq_output_0" -> "63 Multiply_9321" [label="[1, 96, 14, 14]", style=solid]; +"62 Transpose_5605" -> "64 Transpose_5607" [label="[1, 24, 1, 1]", style=solid]; +"63 Multiply_9321" -> "65 Transpose_5655" [label="[1, 40, 14, 14]", style=solid]; +"64 Transpose_5607" -> "66 Convolution_1141" [label="[1, 24, 1, 1]", style=solid]; +"65 Transpose_5655" -> "67 Transpose_5655/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; +"66 Convolution_1141" -> "68 Transpose_5613" [label="[1, 96, 1, 1]", style=solid]; +"67 Transpose_5655/fq_output_0" -> "69 Multiply_9335" [label="[1, 40, 14, 14]", style=solid]; +"67 Transpose_5655/fq_output_0" -> "70 Transpose_5803" [label="[1, 40, 14, 14]", style=solid]; +"68 Transpose_5613" -> "71 Transpose_5627" [label="[1, 96, 1, 1]", style=solid]; +"69 Multiply_9335" -> "72 Transpose_5679" [label="[1, 240, 14, 14]", style=solid]; +"70 Transpose_5803" -> "73 Transpose_5803/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; +"71 Transpose_5627" -> "74 Transpose_5627/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; +"72 Transpose_5679" -> "75 Transpose_5697" [label="[1, 240, 14, 14]", style=solid]; +"73 Transpose_5803/fq_output_0" -> "76 Multiply_9377" [label="[1, 40, 14, 14]", style=solid]; +"73 Transpose_5803/fq_output_0" -> "77 Transpose_5951" [label="[1, 40, 14, 14]", style=solid]; +"74 Transpose_5627/fq_output_0" -> "59 Transpose_5631" [label="[1, 96, 1, 1]", style=solid]; +"75 Transpose_5697" -> "78 Transpose_5697/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"76 Multiply_9377" -> "79 Transpose_5827" [label="[1, 240, 14, 14]", style=solid]; +"77 Transpose_5951" -> "80 Transpose_5951/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; +"78 Transpose_5697/fq_output_0" -> "81 Multiply_9349" [label="[1, 240, 14, 14]", style=solid]; +"79 Transpose_5827" -> "82 Transpose_5845" [label="[1, 240, 14, 14]", style=solid]; +"80 Transpose_5951/fq_output_0" -> "83 Multiply_9419" [label="[1, 40, 14, 14]", style=solid]; +"81 Multiply_9349" -> "84 Transpose_5721" [label="[1, 240, 14, 14]", style=solid]; +"82 Transpose_5845" -> "85 Transpose_5845/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"83 Multiply_9419" -> "86 Transpose_5975" [label="[1, 120, 14, 14]", style=solid]; +"84 Transpose_5721" -> "87 Transpose_5739" [label="[1, 240, 14, 14]", style=solid]; +"85 Transpose_5845/fq_output_0" -> "88 Multiply_9391" [label="[1, 240, 14, 14]", style=solid]; +"86 Transpose_5975" -> "89 Transpose_5993" [label="[1, 120, 14, 14]", style=solid]; +"87 Transpose_5739" -> "90 Transpose_5739/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"88 Multiply_9391" -> "91 Transpose_5869" [label="[1, 240, 14, 14]", style=solid]; +"89 Transpose_5993" -> "92 Transpose_5993/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; +"90 Transpose_5739/fq_output_0" -> "93 Transpose_5743" [label="[1, 240, 14, 14]", style=solid]; +"90 Transpose_5739/fq_output_0" -> "94 Transpose_5775" [label="[1, 240, 14, 14]", style=solid]; +"91 Transpose_5869" -> "95 Transpose_5887" [label="[1, 240, 14, 14]", style=solid]; +"92 Transpose_5993/fq_output_0" -> "96 Multiply_9433" [label="[1, 120, 14, 14]", style=solid]; +"93 Transpose_5743" -> "97 Convolution_1242" [label="[1, 240, 1, 1]", style=solid]; +"94 Transpose_5775" -> "98 Transpose_5775/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"95 Transpose_5887" -> "99 Transpose_5887/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"96 Multiply_9433" -> "100 Transpose_6017" [label="[1, 120, 14, 14]", style=solid]; +"97 Convolution_1242" -> "101 Transpose_5749" [label="[1, 64, 1, 1]", style=solid]; +"98 Transpose_5775/fq_output_0" -> "102 Multiply_9363" [label="[1, 240, 14, 14]", style=solid]; +"99 Transpose_5887/fq_output_0" -> "103 Transpose_5891" [label="[1, 240, 14, 14]", style=solid]; +"99 Transpose_5887/fq_output_0" -> "104 Transpose_5923" [label="[1, 240, 14, 14]", style=solid]; +"100 Transpose_6017" -> "105 Transpose_6035" [label="[1, 120, 14, 14]", style=solid]; +"101 Transpose_5749" -> "106 Transpose_5751" [label="[1, 64, 1, 1]", style=solid]; +"102 Multiply_9363" -> "107 Transpose_5799" [label="[1, 40, 14, 14]", style=solid]; +"103 Transpose_5891" -> "108 Convolution_1353" [label="[1, 240, 1, 1]", style=solid]; +"104 Transpose_5923" -> "109 Transpose_5923/fq_output_0" [label="[1, 240, 14, 14]", style=solid]; +"105 Transpose_6035" -> "110 Transpose_6035/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; +"106 Transpose_5751" -> "111 Convolution_1251" [label="[1, 64, 1, 1]", style=solid]; +"107 Transpose_5799" -> "112 Transpose_5799/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; +"108 Convolution_1353" -> "113 Transpose_5897" [label="[1, 64, 1, 1]", style=solid]; +"109 Transpose_5923/fq_output_0" -> "114 Multiply_9405" [label="[1, 240, 14, 14]", style=solid]; +"110 Transpose_6035/fq_output_0" -> "115 Transpose_6039" [label="[1, 120, 14, 14]", style=solid]; +"110 Transpose_6035/fq_output_0" -> "116 Transpose_6071" [label="[1, 120, 14, 14]", style=solid]; +"111 Convolution_1251" -> "117 Transpose_5757" [label="[1, 240, 1, 1]", style=solid]; +"112 Transpose_5799/fq_output_0" -> "70 Transpose_5803" [label="[1, 40, 14, 14]", style=solid]; +"113 Transpose_5897" -> "118 Transpose_5899" [label="[1, 64, 1, 1]", style=solid]; +"114 Multiply_9405" -> "119 Transpose_5947" [label="[1, 40, 14, 14]", style=solid]; +"115 Transpose_6039" -> "120 Convolution_1464" [label="[1, 120, 1, 1]", style=solid]; +"116 Transpose_6071" -> "121 Transpose_6071/fq_output_0" [label="[1, 120, 14, 14]", style=solid]; +"117 Transpose_5757" -> "122 Transpose_5771" [label="[1, 240, 1, 1]", style=solid]; +"118 Transpose_5899" -> "123 Convolution_1362" [label="[1, 64, 1, 1]", style=solid]; +"119 Transpose_5947" -> "124 Transpose_5947/fq_output_0" [label="[1, 40, 14, 14]", style=solid]; +"120 Convolution_1464" -> "125 Transpose_6045" [label="[1, 32, 1, 1]", style=solid]; +"121 Transpose_6071/fq_output_0" -> "126 Multiply_9447" [label="[1, 120, 14, 14]", style=solid]; +"122 Transpose_5771" -> "127 Transpose_5771/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"123 Convolution_1362" -> "128 Transpose_5905" [label="[1, 240, 1, 1]", style=solid]; +"124 Transpose_5947/fq_output_0" -> "77 Transpose_5951" [label="[1, 40, 14, 14]", style=solid]; +"125 Transpose_6045" -> "129 Transpose_6047" [label="[1, 32, 1, 1]", style=solid]; +"126 Multiply_9447" -> "130 Transpose_6095" [label="[1, 48, 14, 14]", style=solid]; +"127 Transpose_5771/fq_output_0" -> "94 Transpose_5775" [label="[1, 240, 1, 1]", style=solid]; +"128 Transpose_5905" -> "131 Transpose_5919" [label="[1, 240, 1, 1]", style=solid]; +"129 Transpose_6047" -> "132 Convolution_1473" [label="[1, 32, 1, 1]", style=solid]; +"130 Transpose_6095" -> "133 Transpose_6095/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; +"131 Transpose_5919" -> "134 Transpose_5919/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"132 Convolution_1473" -> "135 Transpose_6053" [label="[1, 120, 1, 1]", style=solid]; +"133 Transpose_6095/fq_output_0" -> "136 Multiply_9461" [label="[1, 48, 14, 14]", style=solid]; +"133 Transpose_6095/fq_output_0" -> "137 Transpose_6243" [label="[1, 48, 14, 14]", style=solid]; +"134 Transpose_5919/fq_output_0" -> "104 Transpose_5923" [label="[1, 240, 1, 1]", style=solid]; +"135 Transpose_6053" -> "138 Transpose_6067" [label="[1, 120, 1, 1]", style=solid]; +"136 Multiply_9461" -> "139 Transpose_6119" [label="[1, 144, 14, 14]", style=solid]; +"137 Transpose_6243" -> "140 Transpose_6243/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; +"138 Transpose_6067" -> "141 Transpose_6067/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; +"139 Transpose_6119" -> "142 Transpose_6137" [label="[1, 144, 14, 14]", style=solid]; +"140 Transpose_6243/fq_output_0" -> "143 Multiply_9503" [label="[1, 48, 14, 14]", style=solid]; +"141 Transpose_6067/fq_output_0" -> "116 Transpose_6071" [label="[1, 120, 1, 1]", style=solid]; +"142 Transpose_6137" -> "144 Transpose_6137/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; +"143 Multiply_9503" -> "145 Transpose_6267" [label="[1, 288, 14, 14]", style=solid]; +"144 Transpose_6137/fq_output_0" -> "146 Multiply_9475" [label="[1, 144, 14, 14]", style=solid]; +"145 Transpose_6267" -> "147 Transpose_6285" [label="[1, 288, 14, 14]", style=solid]; +"146 Multiply_9475" -> "148 Transpose_6161" [label="[1, 144, 14, 14]", style=solid]; +"147 Transpose_6285" -> "149 Transpose_6285/fq_output_0" [label="[1, 288, 14, 14]", style=solid]; +"148 Transpose_6161" -> "150 Transpose_6179" [label="[1, 144, 14, 14]", style=solid]; +"149 Transpose_6285/fq_output_0" -> "151 Multiply_9517" [label="[1, 288, 14, 14]", style=solid]; +"150 Transpose_6179" -> "152 Transpose_6179/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; +"151 Multiply_9517" -> "153 Transpose_6336" [label="[1, 288, 7, 7]", style=solid]; +"152 Transpose_6179/fq_output_0" -> "154 Transpose_6183" [label="[1, 144, 14, 14]", style=solid]; +"152 Transpose_6179/fq_output_0" -> "155 Transpose_6215" [label="[1, 144, 14, 14]", style=solid]; +"153 Transpose_6336" -> "156 Transpose_6354" [label="[1, 288, 7, 7]", style=solid]; +"154 Transpose_6183" -> "157 Convolution_1574" [label="[1, 144, 1, 1]", style=solid]; +"155 Transpose_6215" -> "158 Transpose_6215/fq_output_0" [label="[1, 144, 14, 14]", style=solid]; +"156 Transpose_6354" -> "159 Transpose_6354/fq_output_0" [label="[1, 288, 7, 7]", style=solid]; +"157 Convolution_1574" -> "160 Transpose_6189" [label="[1, 40, 1, 1]", style=solid]; +"158 Transpose_6215/fq_output_0" -> "161 Multiply_9489" [label="[1, 144, 14, 14]", style=solid]; +"159 Transpose_6354/fq_output_0" -> "162 Transpose_6358" [label="[1, 288, 7, 7]", style=solid]; +"159 Transpose_6354/fq_output_0" -> "163 Transpose_6390" [label="[1, 288, 7, 7]", style=solid]; +"160 Transpose_6189" -> "164 Transpose_6191" [label="[1, 40, 1, 1]", style=solid]; +"161 Multiply_9489" -> "165 Transpose_6239" [label="[1, 48, 14, 14]", style=solid]; +"162 Transpose_6358" -> "166 Convolution_1713" [label="[1, 288, 1, 1]", style=solid]; +"163 Transpose_6390" -> "167 Transpose_6390/fq_output_0" [label="[1, 288, 7, 7]", style=solid]; +"164 Transpose_6191" -> "168 Convolution_1583" [label="[1, 40, 1, 1]", style=solid]; +"165 Transpose_6239" -> "169 Transpose_6239/fq_output_0" [label="[1, 48, 14, 14]", style=solid]; +"166 Convolution_1713" -> "170 Transpose_6364" [label="[1, 72, 1, 1]", style=solid]; +"167 Transpose_6390/fq_output_0" -> "171 Multiply_9531" [label="[1, 288, 7, 7]", style=solid]; +"168 Convolution_1583" -> "172 Transpose_6197" [label="[1, 144, 1, 1]", style=solid]; +"169 Transpose_6239/fq_output_0" -> "137 Transpose_6243" [label="[1, 48, 14, 14]", style=solid]; +"170 Transpose_6364" -> "173 Transpose_6366" [label="[1, 72, 1, 1]", style=solid]; +"171 Multiply_9531" -> "174 Transpose_6414" [label="[1, 96, 7, 7]", style=solid]; +"172 Transpose_6197" -> "175 Transpose_6211" [label="[1, 144, 1, 1]", style=solid]; +"173 Transpose_6366" -> "176 Convolution_1722" [label="[1, 72, 1, 1]", style=solid]; +"174 Transpose_6414" -> "177 Transpose_6414/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; +"175 Transpose_6211" -> "178 Transpose_6211/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; +"176 Convolution_1722" -> "179 Transpose_6372" [label="[1, 288, 1, 1]", style=solid]; +"177 Transpose_6414/fq_output_0" -> "180 Multiply_9545" [label="[1, 96, 7, 7]", style=solid]; +"177 Transpose_6414/fq_output_0" -> "181 Transpose_6562" [label="[1, 96, 7, 7]", style=solid]; +"178 Transpose_6211/fq_output_0" -> "155 Transpose_6215" [label="[1, 144, 1, 1]", style=solid]; +"179 Transpose_6372" -> "182 Transpose_6386" [label="[1, 288, 1, 1]", style=solid]; +"180 Multiply_9545" -> "183 Transpose_6438" [label="[1, 576, 7, 7]", style=solid]; +"181 Transpose_6562" -> "184 Transpose_6562/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; +"182 Transpose_6386" -> "185 Transpose_6386/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; +"183 Transpose_6438" -> "186 Transpose_6456" [label="[1, 576, 7, 7]", style=solid]; +"184 Transpose_6562/fq_output_0" -> "187 Multiply_9587" [label="[1, 96, 7, 7]", style=solid]; +"184 Transpose_6562/fq_output_0" -> "188 Transpose_6710" [label="[1, 96, 7, 7]", style=solid]; +"185 Transpose_6386/fq_output_0" -> "163 Transpose_6390" [label="[1, 288, 1, 1]", style=solid]; +"186 Transpose_6456" -> "189 Transpose_6456/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"187 Multiply_9587" -> "190 Transpose_6586" [label="[1, 576, 7, 7]", style=solid]; +"188 Transpose_6710" -> "191 Transpose_6710/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; +"189 Transpose_6456/fq_output_0" -> "192 Multiply_9559" [label="[1, 576, 7, 7]", style=solid]; +"190 Transpose_6586" -> "193 Transpose_6604" [label="[1, 576, 7, 7]", style=solid]; +"191 Transpose_6710/fq_output_0" -> "194 Multiply_9629" [label="[1, 96, 7, 7]", style=solid]; +"192 Multiply_9559" -> "195 Transpose_6480" [label="[1, 576, 7, 7]", style=solid]; +"193 Transpose_6604" -> "196 Transpose_6604/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"194 Multiply_9629" -> "197 Transpose_6734" [label="[1, 576, 7, 7]", style=solid]; +"195 Transpose_6480" -> "198 Transpose_6498" [label="[1, 576, 7, 7]", style=solid]; +"196 Transpose_6604/fq_output_0" -> "199 Multiply_9601" [label="[1, 576, 7, 7]", style=solid]; +"197 Transpose_6734" -> "200 Transpose_6752" [label="[1, 576, 7, 7]", style=solid]; +"198 Transpose_6498" -> "201 Transpose_6498/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"199 Multiply_9601" -> "202 Transpose_6628" [label="[1, 576, 7, 7]", style=solid]; +"200 Transpose_6752" -> "203 Transpose_6752/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"201 Transpose_6498/fq_output_0" -> "204 Transpose_6502" [label="[1, 576, 7, 7]", style=solid]; +"201 Transpose_6498/fq_output_0" -> "205 Transpose_6534" [label="[1, 576, 7, 7]", style=solid]; +"202 Transpose_6628" -> "206 Transpose_6646" [label="[1, 576, 7, 7]", style=solid]; +"203 Transpose_6752/fq_output_0" -> "207 Transpose_6756" [label="[1, 576, 7, 7]", style=solid]; +"204 Transpose_6502" -> "208 Convolution_1823" [label="[1, 576, 1, 1]", style=solid]; +"205 Transpose_6534" -> "209 Transpose_6534/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"206 Transpose_6646" -> "210 Transpose_6646/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"207 Transpose_6756" -> "211 Transpose_6756/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"208 Convolution_1823" -> "212 Transpose_6508" [label="[1, 144, 1, 1]", style=solid]; +"209 Transpose_6534/fq_output_0" -> "213 Multiply_9573" [label="[1, 576, 7, 7]", style=solid]; +"210 Transpose_6646/fq_output_0" -> "214 Transpose_6650" [label="[1, 576, 7, 7]", style=solid]; +"210 Transpose_6646/fq_output_0" -> "215 Transpose_6682" [label="[1, 576, 7, 7]", style=solid]; +"211 Transpose_6756/fq_output_0" -> "216 Convolution_2013" [label="[1, 576, 1, 1]", style=solid]; +"212 Transpose_6508" -> "217 Transpose_6510" [label="[1, 144, 1, 1]", style=solid]; +"213 Multiply_9573" -> "218 Transpose_6558" [label="[1, 96, 7, 7]", style=solid]; +"214 Transpose_6650" -> "219 Convolution_1934" [label="[1, 576, 1, 1]", style=solid]; +"215 Transpose_6682" -> "220 Transpose_6682/fq_output_0" [label="[1, 576, 7, 7]", style=solid]; +"216 Convolution_2013" -> "221 Transpose_6762" [label="[1, 1024, 1, 1]", style=solid]; +"217 Transpose_6510" -> "222 Convolution_1832" [label="[1, 144, 1, 1]", style=solid]; +"218 Transpose_6558" -> "223 Transpose_6558/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; +"219 Convolution_1934" -> "224 Transpose_6656" [label="[1, 144, 1, 1]", style=solid]; +"220 Transpose_6682/fq_output_0" -> "225 Multiply_9615" [label="[1, 576, 7, 7]", style=solid]; +"221 Transpose_6762" -> "226 Transpose_6780" [label="[1, 1024, 1, 1]", style=solid]; +"222 Convolution_1832" -> "227 Transpose_6516" [label="[1, 576, 1, 1]", style=solid]; +"223 Transpose_6558/fq_output_0" -> "181 Transpose_6562" [label="[1, 96, 7, 7]", style=solid]; +"224 Transpose_6656" -> "228 Transpose_6658" [label="[1, 144, 1, 1]", style=solid]; +"225 Multiply_9615" -> "229 Transpose_6706" [label="[1, 96, 7, 7]", style=solid]; +"226 Transpose_6780" -> "230 Transpose_6780/fq_output_0" [label="[1, 1024, 1, 1]", style=solid]; +"227 Transpose_6516" -> "231 Transpose_6530" [label="[1, 576, 1, 1]", style=solid]; +"228 Transpose_6658" -> "232 Convolution_1943" [label="[1, 144, 1, 1]", style=solid]; +"229 Transpose_6706" -> "233 Transpose_6706/fq_output_0" [label="[1, 96, 7, 7]", style=solid]; +"230 Transpose_6780/fq_output_0" -> "234 Convolution_2025" [label="[1, 1024, 1, 1]", style=solid]; +"231 Transpose_6530" -> "235 Transpose_6530/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"232 Convolution_1943" -> "236 Transpose_6664" [label="[1, 576, 1, 1]", style=solid]; +"233 Transpose_6706/fq_output_0" -> "188 Transpose_6710" [label="[1, 96, 7, 7]", style=solid]; +"234 Convolution_2025" -> "237 Transpose_6786" [label="[1, 1000, 1, 1]", style=solid]; +"235 Transpose_6530/fq_output_0" -> "205 Transpose_6534" [label="[1, 576, 1, 1]", style=solid]; +"236 Transpose_6664" -> "238 Transpose_6678" [label="[1, 576, 1, 1]", style=solid]; +"237 Transpose_6786" -> "239 MobilenetV3small/Logits/BiasAdd" [label="[1, 1000, 1, 1]", style=solid]; +"238 Transpose_6678" -> "240 Transpose_6678/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"239 MobilenetV3small/Logits/BiasAdd" -> "241 MobilenetV3small/flatten/Reshape" [label="[1, 1, 1, 1000]", style=solid]; +"240 Transpose_6678/fq_output_0" -> "215 Transpose_6682" [label="[1, 576, 1, 1]", style=solid]; +"241 MobilenetV3small/flatten/Reshape" -> "242 MobilenetV3small/Predictions/Softmax" [label="[1, 1000]", style=solid]; +"242 MobilenetV3small/Predictions/Softmax" -> "243 Predictions" [label="[1, 1000]", style=solid]; +"244 MobilenetV3small/flatten/Const" -> "241 MobilenetV3small/flatten/Reshape" [label="[2]", style=dashed]; +"245 Constant_8887" -> "239 MobilenetV3small/Logits/BiasAdd" [label="[4]", style=dashed]; +"246 Transpose_6784" -> "237 Transpose_6786" [label="[1, 1000, 1, 1]", style=solid]; +"247 Convolution_2025/fq_weights_1" -> "234 Convolution_2025" [label="[1000, 1024, 1, 1]", style=solid]; +"248 Constant_11502" -> "247 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; +"249 Constant_11501" -> "247 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; +"250 Constant_11500" -> "247 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; +"251 Constant_11499" -> "247 Convolution_2025/fq_weights_1" [label="[1000, 1, 1, 1]", style=solid]; +"252 Transpose_2024" -> "247 Convolution_2025/fq_weights_1" [label="[1000, 1024, 1, 1]", style=solid]; +"253 Constant_11497" -> "230 Transpose_6780/fq_output_0" [label="[]", style=solid]; +"254 Constant_11496" -> "230 Transpose_6780/fq_output_0" [label="[]", style=solid]; +"255 Constant_11495" -> "230 Transpose_6780/fq_output_0" [label="[]", style=solid]; +"256 Constant_11494" -> "230 Transpose_6780/fq_output_0" [label="[]", style=solid]; +"257 Transpose_6760" -> "221 Transpose_6762" [label="[1, 1024, 1, 1]", style=solid]; +"258 Convolution_2013/fq_weights_1" -> "216 Convolution_2013" [label="[1024, 576, 1, 1]", style=solid]; +"259 Constant_11492" -> "258 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; +"260 Constant_11491" -> "258 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; +"261 Constant_11490" -> "258 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; +"262 Constant_11489" -> "258 Convolution_2013/fq_weights_1" [label="[1024, 1, 1, 1]", style=solid]; +"263 Transpose_2012" -> "258 Convolution_2013/fq_weights_1" [label="[1024, 576, 1, 1]", style=solid]; +"264 Constant_11487" -> "211 Transpose_6756/fq_output_0" [label="[]", style=solid]; +"265 Constant_11486" -> "211 Transpose_6756/fq_output_0" [label="[]", style=solid]; +"266 Constant_11485" -> "211 Transpose_6756/fq_output_0" [label="[]", style=solid]; +"267 Constant_11484" -> "211 Transpose_6756/fq_output_0" [label="[]", style=solid]; +"268 Constant_6754" -> "207 Transpose_6756" [label="[2]", style=dashed]; +"269 Constant_11482" -> "203 Transpose_6752/fq_output_0" [label="[]", style=solid]; +"270 Constant_11481" -> "203 Transpose_6752/fq_output_0" [label="[]", style=solid]; +"271 Constant_11480" -> "203 Transpose_6752/fq_output_0" [label="[]", style=solid]; +"272 Constant_11479" -> "203 Transpose_6752/fq_output_0" [label="[]", style=solid]; +"273 Constant_9637" -> "197 Transpose_6734" [label="[1, 576, 1, 1]", style=solid]; +"274 Multiply_9629/fq_weights_1" -> "194 Multiply_9629" [label="[576, 96, 1, 1]", style=solid]; +"275 Constant_11477" -> "274 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"276 Constant_11476" -> "274 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"277 Constant_11475" -> "274 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"278 Constant_11474" -> "274 Multiply_9629/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"279 Multiply_9830" -> "274 Multiply_9629/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; +"280 Constant_11472" -> "191 Transpose_6710/fq_output_0" [label="[]", style=solid]; +"281 Constant_11471" -> "191 Transpose_6710/fq_output_0" [label="[]", style=solid]; +"282 Constant_11470" -> "191 Transpose_6710/fq_output_0" [label="[]", style=solid]; +"283 Constant_11469" -> "191 Transpose_6710/fq_output_0" [label="[]", style=solid]; +"284 Constant_11467" -> "233 Transpose_6706/fq_output_0" [label="[]", style=solid]; +"285 Constant_11466" -> "233 Transpose_6706/fq_output_0" [label="[]", style=solid]; +"286 Constant_11465" -> "233 Transpose_6706/fq_output_0" [label="[]", style=solid]; +"287 Constant_11464" -> "233 Transpose_6706/fq_output_0" [label="[]", style=solid]; +"288 Constant_9623" -> "229 Transpose_6706" [label="[1, 96, 1, 1]", style=solid]; +"289 Multiply_9615/fq_weights_1" -> "225 Multiply_9615" [label="[96, 576, 1, 1]", style=solid]; +"290 Constant_11462" -> "289 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"291 Constant_11461" -> "289 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"292 Constant_11460" -> "289 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"293 Constant_11459" -> "289 Multiply_9615/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"294 Multiply_9824" -> "289 Multiply_9615/fq_weights_1" [label="[96, 576, 1, 1]", style=solid]; +"295 Constant_11457" -> "220 Transpose_6682/fq_output_0" [label="[]", style=solid]; +"296 Constant_11456" -> "220 Transpose_6682/fq_output_0" [label="[]", style=solid]; +"297 Constant_11455" -> "220 Transpose_6682/fq_output_0" [label="[]", style=solid]; +"298 Constant_11454" -> "220 Transpose_6682/fq_output_0" [label="[]", style=solid]; +"299 Constant_11452" -> "240 Transpose_6678/fq_output_0" [label="[]", style=solid]; +"300 Constant_11451" -> "240 Transpose_6678/fq_output_0" [label="[]", style=solid]; +"301 Constant_11450" -> "240 Transpose_6678/fq_output_0" [label="[]", style=solid]; +"302 Constant_11449" -> "240 Transpose_6678/fq_output_0" [label="[]", style=solid]; +"303 Transpose_6662" -> "236 Transpose_6664" [label="[1, 576, 1, 1]", style=solid]; +"304 Transpose_1942" -> "232 Convolution_1943" [label="[576, 144, 1, 1]", style=solid]; +"305 Transpose_6654" -> "224 Transpose_6656" [label="[1, 144, 1, 1]", style=solid]; +"306 Transpose_1933" -> "219 Convolution_1934" [label="[144, 576, 1, 1]", style=solid]; +"307 Constant_6648" -> "214 Transpose_6650" [label="[2]", style=dashed]; +"308 Constant_11447" -> "210 Transpose_6646/fq_output_0" [label="[]", style=solid]; +"309 Constant_11446" -> "210 Transpose_6646/fq_output_0" [label="[]", style=solid]; +"310 Constant_11445" -> "210 Transpose_6646/fq_output_0" [label="[]", style=solid]; +"311 Constant_11444" -> "210 Transpose_6646/fq_output_0" [label="[]", style=solid]; +"312 Constant_9609" -> "202 Transpose_6628" [label="[1, 576, 1, 1]", style=solid]; +"313 Multiply_9601/fq_weights_1" -> "199 Multiply_9601" [label="[576, 1, 1, 5, 5]", style=solid]; +"314 Constant_11442" -> "313 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"315 Constant_11441" -> "313 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"316 Constant_11440" -> "313 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"317 Constant_11439" -> "313 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"318 Multiply_9819" -> "313 Multiply_9601/fq_weights_1" [label="[576, 1, 1, 5, 5]", style=solid]; +"319 Constant_11437" -> "196 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"320 Constant_11436" -> "196 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"321 Constant_11435" -> "196 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"322 Constant_11434" -> "196 Transpose_6604/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"323 Constant_9595" -> "190 Transpose_6586" [label="[1, 576, 1, 1]", style=solid]; +"324 Multiply_9587/fq_weights_1" -> "187 Multiply_9587" [label="[576, 96, 1, 1]", style=solid]; +"325 Constant_11432" -> "324 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"326 Constant_11431" -> "324 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"327 Constant_11430" -> "324 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"328 Constant_11429" -> "324 Multiply_9587/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"329 Multiply_9813" -> "324 Multiply_9587/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; +"330 Constant_11427" -> "184 Transpose_6562/fq_output_0" [label="[]", style=solid]; +"331 Constant_11426" -> "184 Transpose_6562/fq_output_0" [label="[]", style=solid]; +"332 Constant_11425" -> "184 Transpose_6562/fq_output_0" [label="[]", style=solid]; +"333 Constant_11424" -> "184 Transpose_6562/fq_output_0" [label="[]", style=solid]; +"334 Constant_11422" -> "223 Transpose_6558/fq_output_0" [label="[]", style=solid]; +"335 Constant_11421" -> "223 Transpose_6558/fq_output_0" [label="[]", style=solid]; +"336 Constant_11420" -> "223 Transpose_6558/fq_output_0" [label="[]", style=solid]; +"337 Constant_11419" -> "223 Transpose_6558/fq_output_0" [label="[]", style=solid]; +"338 Constant_9581" -> "218 Transpose_6558" [label="[1, 96, 1, 1]", style=solid]; +"339 Multiply_9573/fq_weights_1" -> "213 Multiply_9573" [label="[96, 576, 1, 1]", style=solid]; +"340 Constant_11417" -> "339 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"341 Constant_11416" -> "339 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"342 Constant_11415" -> "339 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"343 Constant_11414" -> "339 Multiply_9573/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"344 Multiply_9807" -> "339 Multiply_9573/fq_weights_1" [label="[96, 576, 1, 1]", style=solid]; +"345 Constant_11412" -> "209 Transpose_6534/fq_output_0" [label="[]", style=solid]; +"346 Constant_11411" -> "209 Transpose_6534/fq_output_0" [label="[]", style=solid]; +"347 Constant_11410" -> "209 Transpose_6534/fq_output_0" [label="[]", style=solid]; +"348 Constant_11409" -> "209 Transpose_6534/fq_output_0" [label="[]", style=solid]; +"349 Constant_11407" -> "235 Transpose_6530/fq_output_0" [label="[]", style=solid]; +"350 Constant_11406" -> "235 Transpose_6530/fq_output_0" [label="[]", style=solid]; +"351 Constant_11405" -> "235 Transpose_6530/fq_output_0" [label="[]", style=solid]; +"352 Constant_11404" -> "235 Transpose_6530/fq_output_0" [label="[]", style=solid]; +"353 Transpose_6514" -> "227 Transpose_6516" [label="[1, 576, 1, 1]", style=solid]; +"354 Transpose_1831" -> "222 Convolution_1832" [label="[576, 144, 1, 1]", style=solid]; +"355 Transpose_6506" -> "212 Transpose_6508" [label="[1, 144, 1, 1]", style=solid]; +"356 Transpose_1822" -> "208 Convolution_1823" [label="[144, 576, 1, 1]", style=solid]; +"357 Constant_6500" -> "204 Transpose_6502" [label="[2]", style=dashed]; +"358 Constant_11402" -> "201 Transpose_6498/fq_output_0" [label="[]", style=solid]; +"359 Constant_11401" -> "201 Transpose_6498/fq_output_0" [label="[]", style=solid]; +"360 Constant_11400" -> "201 Transpose_6498/fq_output_0" [label="[]", style=solid]; +"361 Constant_11399" -> "201 Transpose_6498/fq_output_0" [label="[]", style=solid]; +"362 Constant_9567" -> "195 Transpose_6480" [label="[1, 576, 1, 1]", style=solid]; +"363 Multiply_9559/fq_weights_1" -> "192 Multiply_9559" [label="[576, 1, 1, 5, 5]", style=solid]; +"364 Constant_11397" -> "363 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"365 Constant_11396" -> "363 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"366 Constant_11395" -> "363 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"367 Constant_11394" -> "363 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 1, 1]", style=solid]; +"368 Multiply_9802" -> "363 Multiply_9559/fq_weights_1" [label="[576, 1, 1, 5, 5]", style=solid]; +"369 Constant_11392" -> "189 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"370 Constant_11391" -> "189 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"371 Constant_11390" -> "189 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"372 Constant_11389" -> "189 Transpose_6456/fq_output_0" [label="[1, 576, 1, 1]", style=solid]; +"373 Constant_9553" -> "183 Transpose_6438" [label="[1, 576, 1, 1]", style=solid]; +"374 Multiply_9545/fq_weights_1" -> "180 Multiply_9545" [label="[576, 96, 1, 1]", style=solid]; +"375 Constant_11387" -> "374 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"376 Constant_11386" -> "374 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"377 Constant_11385" -> "374 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"378 Constant_11384" -> "374 Multiply_9545/fq_weights_1" [label="[576, 1, 1, 1]", style=solid]; +"379 Multiply_9796" -> "374 Multiply_9545/fq_weights_1" [label="[576, 96, 1, 1]", style=solid]; +"380 Constant_11382" -> "177 Transpose_6414/fq_output_0" [label="[]", style=solid]; +"381 Constant_11381" -> "177 Transpose_6414/fq_output_0" [label="[]", style=solid]; +"382 Constant_11380" -> "177 Transpose_6414/fq_output_0" [label="[]", style=solid]; +"383 Constant_11379" -> "177 Transpose_6414/fq_output_0" [label="[]", style=solid]; +"384 Constant_9539" -> "174 Transpose_6414" [label="[1, 96, 1, 1]", style=solid]; +"385 Multiply_9531/fq_weights_1" -> "171 Multiply_9531" [label="[96, 288, 1, 1]", style=solid]; +"386 Constant_11377" -> "385 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"387 Constant_11376" -> "385 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"388 Constant_11375" -> "385 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"389 Constant_11374" -> "385 Multiply_9531/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"390 Multiply_9790" -> "385 Multiply_9531/fq_weights_1" [label="[96, 288, 1, 1]", style=solid]; +"391 Constant_11372" -> "167 Transpose_6390/fq_output_0" [label="[]", style=solid]; +"392 Constant_11371" -> "167 Transpose_6390/fq_output_0" [label="[]", style=solid]; +"393 Constant_11370" -> "167 Transpose_6390/fq_output_0" [label="[]", style=solid]; +"394 Constant_11369" -> "167 Transpose_6390/fq_output_0" [label="[]", style=solid]; +"395 Constant_11367" -> "185 Transpose_6386/fq_output_0" [label="[]", style=solid]; +"396 Constant_11366" -> "185 Transpose_6386/fq_output_0" [label="[]", style=solid]; +"397 Constant_11365" -> "185 Transpose_6386/fq_output_0" [label="[]", style=solid]; +"398 Constant_11364" -> "185 Transpose_6386/fq_output_0" [label="[]", style=solid]; +"399 Transpose_6370" -> "179 Transpose_6372" [label="[1, 288, 1, 1]", style=solid]; +"400 Transpose_1721" -> "176 Convolution_1722" [label="[288, 72, 1, 1]", style=solid]; +"401 Transpose_6362" -> "170 Transpose_6364" [label="[1, 72, 1, 1]", style=solid]; +"402 Transpose_1712" -> "166 Convolution_1713" [label="[72, 288, 1, 1]", style=solid]; +"403 Constant_6356" -> "162 Transpose_6358" [label="[2]", style=dashed]; +"404 Constant_11362" -> "159 Transpose_6354/fq_output_0" [label="[]", style=solid]; +"405 Constant_11361" -> "159 Transpose_6354/fq_output_0" [label="[]", style=solid]; +"406 Constant_11360" -> "159 Transpose_6354/fq_output_0" [label="[]", style=solid]; +"407 Constant_11359" -> "159 Transpose_6354/fq_output_0" [label="[]", style=solid]; +"408 Constant_9525" -> "153 Transpose_6336" [label="[1, 288, 1, 1]", style=solid]; +"409 Multiply_9517/fq_weights_1" -> "151 Multiply_9517" [label="[288, 1, 1, 5, 5]", style=solid]; +"410 Constant_11357" -> "409 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; +"411 Constant_11356" -> "409 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; +"412 Constant_11355" -> "409 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; +"413 Constant_11354" -> "409 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 1, 1]", style=solid]; +"414 Multiply_9785" -> "409 Multiply_9517/fq_weights_1" [label="[288, 1, 1, 5, 5]", style=solid]; +"415 Constant_11352" -> "149 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; +"416 Constant_11351" -> "149 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; +"417 Constant_11350" -> "149 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; +"418 Constant_11349" -> "149 Transpose_6285/fq_output_0" [label="[1, 288, 1, 1]", style=solid]; +"419 Constant_9511" -> "145 Transpose_6267" [label="[1, 288, 1, 1]", style=solid]; +"420 Multiply_9503/fq_weights_1" -> "143 Multiply_9503" [label="[288, 48, 1, 1]", style=solid]; +"421 Constant_11347" -> "420 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; +"422 Constant_11346" -> "420 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; +"423 Constant_11345" -> "420 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; +"424 Constant_11344" -> "420 Multiply_9503/fq_weights_1" [label="[288, 1, 1, 1]", style=solid]; +"425 Multiply_9779" -> "420 Multiply_9503/fq_weights_1" [label="[288, 48, 1, 1]", style=solid]; +"426 Constant_11342" -> "140 Transpose_6243/fq_output_0" [label="[]", style=solid]; +"427 Constant_11341" -> "140 Transpose_6243/fq_output_0" [label="[]", style=solid]; +"428 Constant_11340" -> "140 Transpose_6243/fq_output_0" [label="[]", style=solid]; +"429 Constant_11339" -> "140 Transpose_6243/fq_output_0" [label="[]", style=solid]; +"430 Constant_11337" -> "169 Transpose_6239/fq_output_0" [label="[]", style=solid]; +"431 Constant_11336" -> "169 Transpose_6239/fq_output_0" [label="[]", style=solid]; +"432 Constant_11335" -> "169 Transpose_6239/fq_output_0" [label="[]", style=solid]; +"433 Constant_11334" -> "169 Transpose_6239/fq_output_0" [label="[]", style=solid]; +"434 Constant_9497" -> "165 Transpose_6239" [label="[1, 48, 1, 1]", style=solid]; +"435 Multiply_9489/fq_weights_1" -> "161 Multiply_9489" [label="[48, 144, 1, 1]", style=solid]; +"436 Constant_11332" -> "435 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"437 Constant_11331" -> "435 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"438 Constant_11330" -> "435 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"439 Constant_11329" -> "435 Multiply_9489/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"440 Multiply_9773" -> "435 Multiply_9489/fq_weights_1" [label="[48, 144, 1, 1]", style=solid]; +"441 Constant_11327" -> "158 Transpose_6215/fq_output_0" [label="[]", style=solid]; +"442 Constant_11326" -> "158 Transpose_6215/fq_output_0" [label="[]", style=solid]; +"443 Constant_11325" -> "158 Transpose_6215/fq_output_0" [label="[]", style=solid]; +"444 Constant_11324" -> "158 Transpose_6215/fq_output_0" [label="[]", style=solid]; +"445 Constant_11322" -> "178 Transpose_6211/fq_output_0" [label="[]", style=solid]; +"446 Constant_11321" -> "178 Transpose_6211/fq_output_0" [label="[]", style=solid]; +"447 Constant_11320" -> "178 Transpose_6211/fq_output_0" [label="[]", style=solid]; +"448 Constant_11319" -> "178 Transpose_6211/fq_output_0" [label="[]", style=solid]; +"449 Transpose_6195" -> "172 Transpose_6197" [label="[1, 144, 1, 1]", style=solid]; +"450 Transpose_1582" -> "168 Convolution_1583" [label="[144, 40, 1, 1]", style=solid]; +"451 Transpose_6187" -> "160 Transpose_6189" [label="[1, 40, 1, 1]", style=solid]; +"452 Transpose_1573" -> "157 Convolution_1574" [label="[40, 144, 1, 1]", style=solid]; +"453 Constant_6181" -> "154 Transpose_6183" [label="[2]", style=dashed]; +"454 Constant_11317" -> "152 Transpose_6179/fq_output_0" [label="[]", style=solid]; +"455 Constant_11316" -> "152 Transpose_6179/fq_output_0" [label="[]", style=solid]; +"456 Constant_11315" -> "152 Transpose_6179/fq_output_0" [label="[]", style=solid]; +"457 Constant_11314" -> "152 Transpose_6179/fq_output_0" [label="[]", style=solid]; +"458 Constant_9483" -> "148 Transpose_6161" [label="[1, 144, 1, 1]", style=solid]; +"459 Multiply_9475/fq_weights_1" -> "146 Multiply_9475" [label="[144, 1, 1, 5, 5]", style=solid]; +"460 Constant_11312" -> "459 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; +"461 Constant_11311" -> "459 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; +"462 Constant_11310" -> "459 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; +"463 Constant_11309" -> "459 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 1, 1]", style=solid]; +"464 Multiply_9768" -> "459 Multiply_9475/fq_weights_1" [label="[144, 1, 1, 5, 5]", style=solid]; +"465 Constant_11307" -> "144 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; +"466 Constant_11306" -> "144 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; +"467 Constant_11305" -> "144 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; +"468 Constant_11304" -> "144 Transpose_6137/fq_output_0" [label="[1, 144, 1, 1]", style=solid]; +"469 Constant_9469" -> "139 Transpose_6119" [label="[1, 144, 1, 1]", style=solid]; +"470 Multiply_9461/fq_weights_1" -> "136 Multiply_9461" [label="[144, 48, 1, 1]", style=solid]; +"471 Constant_11302" -> "470 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; +"472 Constant_11301" -> "470 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; +"473 Constant_11300" -> "470 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; +"474 Constant_11299" -> "470 Multiply_9461/fq_weights_1" [label="[144, 1, 1, 1]", style=solid]; +"475 Multiply_9762" -> "470 Multiply_9461/fq_weights_1" [label="[144, 48, 1, 1]", style=solid]; +"476 Constant_11297" -> "133 Transpose_6095/fq_output_0" [label="[]", style=solid]; +"477 Constant_11296" -> "133 Transpose_6095/fq_output_0" [label="[]", style=solid]; +"478 Constant_11295" -> "133 Transpose_6095/fq_output_0" [label="[]", style=solid]; +"479 Constant_11294" -> "133 Transpose_6095/fq_output_0" [label="[]", style=solid]; +"480 Constant_9455" -> "130 Transpose_6095" [label="[1, 48, 1, 1]", style=solid]; +"481 Multiply_9447/fq_weights_1" -> "126 Multiply_9447" [label="[48, 120, 1, 1]", style=solid]; +"482 Constant_11292" -> "481 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"483 Constant_11291" -> "481 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"484 Constant_11290" -> "481 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"485 Constant_11289" -> "481 Multiply_9447/fq_weights_1" [label="[48, 1, 1, 1]", style=solid]; +"486 Multiply_9756" -> "481 Multiply_9447/fq_weights_1" [label="[48, 120, 1, 1]", style=solid]; +"487 Constant_11287" -> "121 Transpose_6071/fq_output_0" [label="[]", style=solid]; +"488 Constant_11286" -> "121 Transpose_6071/fq_output_0" [label="[]", style=solid]; +"489 Constant_11285" -> "121 Transpose_6071/fq_output_0" [label="[]", style=solid]; +"490 Constant_11284" -> "121 Transpose_6071/fq_output_0" [label="[]", style=solid]; +"491 Constant_11282" -> "141 Transpose_6067/fq_output_0" [label="[]", style=solid]; +"492 Constant_11281" -> "141 Transpose_6067/fq_output_0" [label="[]", style=solid]; +"493 Constant_11280" -> "141 Transpose_6067/fq_output_0" [label="[]", style=solid]; +"494 Constant_11279" -> "141 Transpose_6067/fq_output_0" [label="[]", style=solid]; +"495 Transpose_6051" -> "135 Transpose_6053" [label="[1, 120, 1, 1]", style=solid]; +"496 Transpose_1472" -> "132 Convolution_1473" [label="[120, 32, 1, 1]", style=solid]; +"497 Transpose_6043" -> "125 Transpose_6045" [label="[1, 32, 1, 1]", style=solid]; +"498 Transpose_1463" -> "120 Convolution_1464" [label="[32, 120, 1, 1]", style=solid]; +"499 Constant_6037" -> "115 Transpose_6039" [label="[2]", style=dashed]; +"500 Constant_11277" -> "110 Transpose_6035/fq_output_0" [label="[]", style=solid]; +"501 Constant_11276" -> "110 Transpose_6035/fq_output_0" [label="[]", style=solid]; +"502 Constant_11275" -> "110 Transpose_6035/fq_output_0" [label="[]", style=solid]; +"503 Constant_11274" -> "110 Transpose_6035/fq_output_0" [label="[]", style=solid]; +"504 Constant_9441" -> "100 Transpose_6017" [label="[1, 120, 1, 1]", style=solid]; +"505 Multiply_9433/fq_weights_1" -> "96 Multiply_9433" [label="[120, 1, 1, 5, 5]", style=solid]; +"506 Constant_11272" -> "505 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; +"507 Constant_11271" -> "505 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; +"508 Constant_11270" -> "505 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; +"509 Constant_11269" -> "505 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 1, 1]", style=solid]; +"510 Multiply_9751" -> "505 Multiply_9433/fq_weights_1" [label="[120, 1, 1, 5, 5]", style=solid]; +"511 Constant_11267" -> "92 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; +"512 Constant_11266" -> "92 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; +"513 Constant_11265" -> "92 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; +"514 Constant_11264" -> "92 Transpose_5993/fq_output_0" [label="[1, 120, 1, 1]", style=solid]; +"515 Constant_9427" -> "86 Transpose_5975" [label="[1, 120, 1, 1]", style=solid]; +"516 Multiply_9419/fq_weights_1" -> "83 Multiply_9419" [label="[120, 40, 1, 1]", style=solid]; +"517 Constant_11262" -> "516 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; +"518 Constant_11261" -> "516 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; +"519 Constant_11260" -> "516 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; +"520 Constant_11259" -> "516 Multiply_9419/fq_weights_1" [label="[120, 1, 1, 1]", style=solid]; +"521 Multiply_9745" -> "516 Multiply_9419/fq_weights_1" [label="[120, 40, 1, 1]", style=solid]; +"522 Constant_11257" -> "80 Transpose_5951/fq_output_0" [label="[]", style=solid]; +"523 Constant_11256" -> "80 Transpose_5951/fq_output_0" [label="[]", style=solid]; +"524 Constant_11255" -> "80 Transpose_5951/fq_output_0" [label="[]", style=solid]; +"525 Constant_11254" -> "80 Transpose_5951/fq_output_0" [label="[]", style=solid]; +"526 Constant_11252" -> "124 Transpose_5947/fq_output_0" [label="[]", style=solid]; +"527 Constant_11251" -> "124 Transpose_5947/fq_output_0" [label="[]", style=solid]; +"528 Constant_11250" -> "124 Transpose_5947/fq_output_0" [label="[]", style=solid]; +"529 Constant_11249" -> "124 Transpose_5947/fq_output_0" [label="[]", style=solid]; +"530 Constant_9413" -> "119 Transpose_5947" [label="[1, 40, 1, 1]", style=solid]; +"531 Multiply_9405/fq_weights_1" -> "114 Multiply_9405" [label="[40, 240, 1, 1]", style=solid]; +"532 Constant_11247" -> "531 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"533 Constant_11246" -> "531 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"534 Constant_11245" -> "531 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"535 Constant_11244" -> "531 Multiply_9405/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"536 Multiply_9739" -> "531 Multiply_9405/fq_weights_1" [label="[40, 240, 1, 1]", style=solid]; +"537 Constant_11242" -> "109 Transpose_5923/fq_output_0" [label="[]", style=solid]; +"538 Constant_11241" -> "109 Transpose_5923/fq_output_0" [label="[]", style=solid]; +"539 Constant_11240" -> "109 Transpose_5923/fq_output_0" [label="[]", style=solid]; +"540 Constant_11239" -> "109 Transpose_5923/fq_output_0" [label="[]", style=solid]; +"541 Constant_11237" -> "134 Transpose_5919/fq_output_0" [label="[]", style=solid]; +"542 Constant_11236" -> "134 Transpose_5919/fq_output_0" [label="[]", style=solid]; +"543 Constant_11235" -> "134 Transpose_5919/fq_output_0" [label="[]", style=solid]; +"544 Constant_11234" -> "134 Transpose_5919/fq_output_0" [label="[]", style=solid]; +"545 Transpose_5903" -> "128 Transpose_5905" [label="[1, 240, 1, 1]", style=solid]; +"546 Transpose_1361" -> "123 Convolution_1362" [label="[240, 64, 1, 1]", style=solid]; +"547 Transpose_5895" -> "113 Transpose_5897" [label="[1, 64, 1, 1]", style=solid]; +"548 Transpose_1352" -> "108 Convolution_1353" [label="[64, 240, 1, 1]", style=solid]; +"549 Constant_5889" -> "103 Transpose_5891" [label="[2]", style=dashed]; +"550 Constant_11232" -> "99 Transpose_5887/fq_output_0" [label="[]", style=solid]; +"551 Constant_11231" -> "99 Transpose_5887/fq_output_0" [label="[]", style=solid]; +"552 Constant_11230" -> "99 Transpose_5887/fq_output_0" [label="[]", style=solid]; +"553 Constant_11229" -> "99 Transpose_5887/fq_output_0" [label="[]", style=solid]; +"554 Constant_9399" -> "91 Transpose_5869" [label="[1, 240, 1, 1]", style=solid]; +"555 Multiply_9391/fq_weights_1" -> "88 Multiply_9391" [label="[240, 1, 1, 5, 5]", style=solid]; +"556 Constant_11227" -> "555 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"557 Constant_11226" -> "555 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"558 Constant_11225" -> "555 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"559 Constant_11224" -> "555 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"560 Multiply_9734" -> "555 Multiply_9391/fq_weights_1" [label="[240, 1, 1, 5, 5]", style=solid]; +"561 Constant_11222" -> "85 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"562 Constant_11221" -> "85 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"563 Constant_11220" -> "85 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"564 Constant_11219" -> "85 Transpose_5845/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"565 Constant_9385" -> "79 Transpose_5827" [label="[1, 240, 1, 1]", style=solid]; +"566 Multiply_9377/fq_weights_1" -> "76 Multiply_9377" [label="[240, 40, 1, 1]", style=solid]; +"567 Constant_11217" -> "566 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"568 Constant_11216" -> "566 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"569 Constant_11215" -> "566 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"570 Constant_11214" -> "566 Multiply_9377/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"571 Multiply_9728" -> "566 Multiply_9377/fq_weights_1" [label="[240, 40, 1, 1]", style=solid]; +"572 Constant_11212" -> "73 Transpose_5803/fq_output_0" [label="[]", style=solid]; +"573 Constant_11211" -> "73 Transpose_5803/fq_output_0" [label="[]", style=solid]; +"574 Constant_11210" -> "73 Transpose_5803/fq_output_0" [label="[]", style=solid]; +"575 Constant_11209" -> "73 Transpose_5803/fq_output_0" [label="[]", style=solid]; +"576 Constant_11207" -> "112 Transpose_5799/fq_output_0" [label="[]", style=solid]; +"577 Constant_11206" -> "112 Transpose_5799/fq_output_0" [label="[]", style=solid]; +"578 Constant_11205" -> "112 Transpose_5799/fq_output_0" [label="[]", style=solid]; +"579 Constant_11204" -> "112 Transpose_5799/fq_output_0" [label="[]", style=solid]; +"580 Constant_9371" -> "107 Transpose_5799" [label="[1, 40, 1, 1]", style=solid]; +"581 Multiply_9363/fq_weights_1" -> "102 Multiply_9363" [label="[40, 240, 1, 1]", style=solid]; +"582 Constant_11202" -> "581 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"583 Constant_11201" -> "581 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"584 Constant_11200" -> "581 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"585 Constant_11199" -> "581 Multiply_9363/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"586 Multiply_9722" -> "581 Multiply_9363/fq_weights_1" [label="[40, 240, 1, 1]", style=solid]; +"587 Constant_11197" -> "98 Transpose_5775/fq_output_0" [label="[]", style=solid]; +"588 Constant_11196" -> "98 Transpose_5775/fq_output_0" [label="[]", style=solid]; +"589 Constant_11195" -> "98 Transpose_5775/fq_output_0" [label="[]", style=solid]; +"590 Constant_11194" -> "98 Transpose_5775/fq_output_0" [label="[]", style=solid]; +"591 Constant_11192" -> "127 Transpose_5771/fq_output_0" [label="[]", style=solid]; +"592 Constant_11191" -> "127 Transpose_5771/fq_output_0" [label="[]", style=solid]; +"593 Constant_11190" -> "127 Transpose_5771/fq_output_0" [label="[]", style=solid]; +"594 Constant_11189" -> "127 Transpose_5771/fq_output_0" [label="[]", style=solid]; +"595 Transpose_5755" -> "117 Transpose_5757" [label="[1, 240, 1, 1]", style=solid]; +"596 Transpose_1250" -> "111 Convolution_1251" [label="[240, 64, 1, 1]", style=solid]; +"597 Transpose_5747" -> "101 Transpose_5749" [label="[1, 64, 1, 1]", style=solid]; +"598 Transpose_1241" -> "97 Convolution_1242" [label="[64, 240, 1, 1]", style=solid]; +"599 Constant_5741" -> "93 Transpose_5743" [label="[2]", style=dashed]; +"600 Constant_11187" -> "90 Transpose_5739/fq_output_0" [label="[]", style=solid]; +"601 Constant_11186" -> "90 Transpose_5739/fq_output_0" [label="[]", style=solid]; +"602 Constant_11185" -> "90 Transpose_5739/fq_output_0" [label="[]", style=solid]; +"603 Constant_11184" -> "90 Transpose_5739/fq_output_0" [label="[]", style=solid]; +"604 Constant_9357" -> "84 Transpose_5721" [label="[1, 240, 1, 1]", style=solid]; +"605 Multiply_9349/fq_weights_1" -> "81 Multiply_9349" [label="[240, 1, 1, 5, 5]", style=solid]; +"606 Constant_11182" -> "605 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"607 Constant_11181" -> "605 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"608 Constant_11180" -> "605 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"609 Constant_11179" -> "605 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 1, 1]", style=solid]; +"610 Multiply_9717" -> "605 Multiply_9349/fq_weights_1" [label="[240, 1, 1, 5, 5]", style=solid]; +"611 Constant_11177" -> "78 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"612 Constant_11176" -> "78 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"613 Constant_11175" -> "78 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"614 Constant_11174" -> "78 Transpose_5697/fq_output_0" [label="[1, 240, 1, 1]", style=solid]; +"615 Constant_9343" -> "72 Transpose_5679" [label="[1, 240, 1, 1]", style=solid]; +"616 Multiply_9335/fq_weights_1" -> "69 Multiply_9335" [label="[240, 40, 1, 1]", style=solid]; +"617 Constant_11172" -> "616 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"618 Constant_11171" -> "616 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"619 Constant_11170" -> "616 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"620 Constant_11169" -> "616 Multiply_9335/fq_weights_1" [label="[240, 1, 1, 1]", style=solid]; +"621 Multiply_9711" -> "616 Multiply_9335/fq_weights_1" [label="[240, 40, 1, 1]", style=solid]; +"622 Constant_11167" -> "67 Transpose_5655/fq_output_0" [label="[]", style=solid]; +"623 Constant_11166" -> "67 Transpose_5655/fq_output_0" [label="[]", style=solid]; +"624 Constant_11165" -> "67 Transpose_5655/fq_output_0" [label="[]", style=solid]; +"625 Constant_11164" -> "67 Transpose_5655/fq_output_0" [label="[]", style=solid]; +"626 Constant_9329" -> "65 Transpose_5655" [label="[1, 40, 1, 1]", style=solid]; +"627 Multiply_9321/fq_weights_1" -> "63 Multiply_9321" [label="[40, 96, 1, 1]", style=solid]; +"628 Constant_11162" -> "627 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"629 Constant_11161" -> "627 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"630 Constant_11160" -> "627 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"631 Constant_11159" -> "627 Multiply_9321/fq_weights_1" [label="[40, 1, 1, 1]", style=solid]; +"632 Multiply_9705" -> "627 Multiply_9321/fq_weights_1" [label="[40, 96, 1, 1]", style=solid]; +"633 Constant_11157" -> "61 Transpose_5631/fq_output_0" [label="[]", style=solid]; +"634 Constant_11156" -> "61 Transpose_5631/fq_output_0" [label="[]", style=solid]; +"635 Constant_11155" -> "61 Transpose_5631/fq_output_0" [label="[]", style=solid]; +"636 Constant_11154" -> "61 Transpose_5631/fq_output_0" [label="[]", style=solid]; +"637 Constant_11152" -> "74 Transpose_5627/fq_output_0" [label="[]", style=solid]; +"638 Constant_11151" -> "74 Transpose_5627/fq_output_0" [label="[]", style=solid]; +"639 Constant_11150" -> "74 Transpose_5627/fq_output_0" [label="[]", style=solid]; +"640 Constant_11149" -> "74 Transpose_5627/fq_output_0" [label="[]", style=solid]; +"641 Transpose_5611" -> "68 Transpose_5613" [label="[1, 96, 1, 1]", style=solid]; +"642 Transpose_1140" -> "66 Convolution_1141" [label="[96, 24, 1, 1]", style=solid]; +"643 Transpose_5603" -> "62 Transpose_5605" [label="[1, 24, 1, 1]", style=solid]; +"644 Transpose_1131" -> "60 Convolution_1132" [label="[24, 96, 1, 1]", style=solid]; +"645 Constant_5597" -> "58 Transpose_5599" [label="[2]", style=dashed]; +"646 Constant_11147" -> "56 Transpose_5595/fq_output_0" [label="[]", style=solid]; +"647 Constant_11146" -> "56 Transpose_5595/fq_output_0" [label="[]", style=solid]; +"648 Constant_11145" -> "56 Transpose_5595/fq_output_0" [label="[]", style=solid]; +"649 Constant_11144" -> "56 Transpose_5595/fq_output_0" [label="[]", style=solid]; +"650 Constant_9315" -> "52 Transpose_5577" [label="[1, 96, 1, 1]", style=solid]; +"651 Multiply_9307/fq_weights_1" -> "50 Multiply_9307" [label="[96, 1, 1, 5, 5]", style=solid]; +"652 Constant_11142" -> "651 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; +"653 Constant_11141" -> "651 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; +"654 Constant_11140" -> "651 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; +"655 Constant_11139" -> "651 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 1, 1]", style=solid]; +"656 Multiply_9700" -> "651 Multiply_9307/fq_weights_1" [label="[96, 1, 1, 5, 5]", style=solid]; +"657 Constant_11137" -> "48 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; +"658 Constant_11136" -> "48 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; +"659 Constant_11135" -> "48 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; +"660 Constant_11134" -> "48 Transpose_5526/fq_output_0" [label="[1, 96, 1, 1]", style=solid]; +"661 Constant_9301" -> "44 Transpose_5508" [label="[1, 96, 1, 1]", style=solid]; +"662 Multiply_9293/fq_weights_1" -> "42 Multiply_9293" [label="[96, 24, 1, 1]", style=solid]; +"663 Constant_11132" -> "662 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"664 Constant_11131" -> "662 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"665 Constant_11130" -> "662 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"666 Constant_11129" -> "662 Multiply_9293/fq_weights_1" [label="[96, 1, 1, 1]", style=solid]; +"667 Multiply_9694" -> "662 Multiply_9293/fq_weights_1" [label="[96, 24, 1, 1]", style=solid]; +"668 Constant_11127" -> "40 Transpose_5484/fq_output_0" [label="[]", style=solid]; +"669 Constant_11126" -> "40 Transpose_5484/fq_output_0" [label="[]", style=solid]; +"670 Constant_11125" -> "40 Transpose_5484/fq_output_0" [label="[]", style=solid]; +"671 Constant_11124" -> "40 Transpose_5484/fq_output_0" [label="[]", style=solid]; +"672 Constant_11122" -> "57 Transpose_5480/fq_output_0" [label="[]", style=solid]; +"673 Constant_11121" -> "57 Transpose_5480/fq_output_0" [label="[]", style=solid]; +"674 Constant_11120" -> "57 Transpose_5480/fq_output_0" [label="[]", style=solid]; +"675 Constant_11119" -> "57 Transpose_5480/fq_output_0" [label="[]", style=solid]; +"676 Constant_9287" -> "55 Transpose_5480" [label="[1, 24, 1, 1]", style=solid]; +"677 Multiply_9279/fq_weights_1" -> "53 Multiply_9279" [label="[24, 88, 1, 1]", style=solid]; +"678 Constant_11117" -> "677 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"679 Constant_11116" -> "677 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"680 Constant_11115" -> "677 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"681 Constant_11114" -> "677 Multiply_9279/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"682 Multiply_9688" -> "677 Multiply_9279/fq_weights_1" [label="[24, 88, 1, 1]", style=solid]; +"683 Constant_11112" -> "51 Transpose_5456/fq_output_0" [label="[]", style=solid]; +"684 Constant_11111" -> "51 Transpose_5456/fq_output_0" [label="[]", style=solid]; +"685 Constant_11110" -> "51 Transpose_5456/fq_output_0" [label="[]", style=solid]; +"686 Constant_11109" -> "51 Transpose_5456/fq_output_0" [label="[]", style=solid]; +"687 Constant_9273" -> "47 Transpose_5454" [label="[1, 88, 1, 1]", style=solid]; +"688 Multiply_9265/fq_weights_1" -> "45 Multiply_9265" [label="[88, 1, 1, 3, 3]", style=solid]; +"689 Constant_11107" -> "688 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; +"690 Constant_11106" -> "688 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; +"691 Constant_11105" -> "688 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; +"692 Constant_11104" -> "688 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 1, 1]", style=solid]; +"693 Multiply_9683" -> "688 Multiply_9265/fq_weights_1" [label="[88, 1, 1, 3, 3]", style=solid]; +"694 Constant_11102" -> "43 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; +"695 Constant_11101" -> "43 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; +"696 Constant_11100" -> "43 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; +"697 Constant_11099" -> "43 Transpose_5430/fq_output_0" [label="[1, 88, 1, 1]", style=solid]; +"698 Constant_9259" -> "39 Transpose_5428" [label="[1, 88, 1, 1]", style=solid]; +"699 Multiply_9251/fq_weights_1" -> "37 Multiply_9251" [label="[88, 24, 1, 1]", style=solid]; +"700 Constant_11097" -> "699 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; +"701 Constant_11096" -> "699 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; +"702 Constant_11095" -> "699 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; +"703 Constant_11094" -> "699 Multiply_9251/fq_weights_1" [label="[88, 1, 1, 1]", style=solid]; +"704 Multiply_9677" -> "699 Multiply_9251/fq_weights_1" [label="[88, 24, 1, 1]", style=solid]; +"705 Constant_11092" -> "36 Transpose_5404/fq_output_0" [label="[]", style=solid]; +"706 Constant_11091" -> "36 Transpose_5404/fq_output_0" [label="[]", style=solid]; +"707 Constant_11090" -> "36 Transpose_5404/fq_output_0" [label="[]", style=solid]; +"708 Constant_11089" -> "36 Transpose_5404/fq_output_0" [label="[]", style=solid]; +"709 Constant_9245" -> "35 Transpose_5404" [label="[1, 24, 1, 1]", style=solid]; +"710 Multiply_9237/fq_weights_1" -> "34 Multiply_9237" [label="[24, 72, 1, 1]", style=solid]; +"711 Constant_11087" -> "710 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"712 Constant_11086" -> "710 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"713 Constant_11085" -> "710 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"714 Constant_11084" -> "710 Multiply_9237/fq_weights_1" [label="[24, 1, 1, 1]", style=solid]; +"715 Multiply_9671" -> "710 Multiply_9237/fq_weights_1" [label="[24, 72, 1, 1]", style=solid]; +"716 Constant_11082" -> "33 Transpose_5380/fq_output_0" [label="[]", style=solid]; +"717 Constant_11081" -> "33 Transpose_5380/fq_output_0" [label="[]", style=solid]; +"718 Constant_11080" -> "33 Transpose_5380/fq_output_0" [label="[]", style=solid]; +"719 Constant_11079" -> "33 Transpose_5380/fq_output_0" [label="[]", style=solid]; +"720 Constant_9231" -> "31 Transpose_5378" [label="[1, 72, 1, 1]", style=solid]; +"721 Multiply_9223/fq_weights_1" -> "30 Multiply_9223" [label="[72, 1, 1, 3, 3]", style=solid]; +"722 Constant_11077" -> "721 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; +"723 Constant_11076" -> "721 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; +"724 Constant_11075" -> "721 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; +"725 Constant_11074" -> "721 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 1, 1]", style=solid]; +"726 Multiply_9666" -> "721 Multiply_9223/fq_weights_1" [label="[72, 1, 1, 3, 3]", style=solid]; +"727 Constant_11072" -> "29 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; +"728 Constant_11071" -> "29 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; +"729 Constant_11070" -> "29 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; +"730 Constant_11069" -> "29 Transpose_5327/fq_output_0" [label="[1, 72, 1, 1]", style=solid]; +"731 Constant_9217" -> "26 Transpose_5325" [label="[1, 72, 1, 1]", style=solid]; +"732 Multiply_9209/fq_weights_1" -> "24 Multiply_9209" [label="[72, 16, 1, 1]", style=solid]; +"733 Constant_11067" -> "732 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; +"734 Constant_11066" -> "732 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; +"735 Constant_11065" -> "732 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; +"736 Constant_11064" -> "732 Multiply_9209/fq_weights_1" [label="[72, 1, 1, 1]", style=solid]; +"737 Multiply_9660" -> "732 Multiply_9209/fq_weights_1" [label="[72, 16, 1, 1]", style=solid]; +"738 Constant_11062" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; +"739 Constant_11061" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; +"740 Constant_11060" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; +"741 Constant_11059" -> "22 Transpose_5301/fq_output_0" [label="[]", style=solid]; +"742 Constant_9203" -> "20 Transpose_5301" [label="[1, 16, 1, 1]", style=solid]; +"743 Multiply_9195/fq_weights_1" -> "18 Multiply_9195" [label="[16, 16, 1, 1]", style=solid]; +"744 Constant_11057" -> "743 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"745 Constant_11056" -> "743 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"746 Constant_11055" -> "743 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"747 Constant_11054" -> "743 Multiply_9195/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"748 Multiply_9654" -> "743 Multiply_9195/fq_weights_1" [label="[16, 16, 1, 1]", style=solid]; +"749 Constant_11052" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; +"750 Constant_11051" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; +"751 Constant_11050" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; +"752 Constant_11049" -> "16 Transpose_5277/fq_output_0" [label="[]", style=solid]; +"753 Constant_11047" -> "27 Transpose_5273/fq_output_0" [label="[]", style=solid]; +"754 Constant_11046" -> "27 Transpose_5273/fq_output_0" [label="[]", style=solid]; +"755 Constant_11045" -> "27 Transpose_5273/fq_output_0" [label="[]", style=solid]; +"756 Constant_11044" -> "27 Transpose_5273/fq_output_0" [label="[]", style=solid]; +"757 Transpose_5257" -> "23 Transpose_5259" [label="[1, 16, 1, 1]", style=solid]; +"758 Transpose_809" -> "21 Convolution_810" [label="[16, 8, 1, 1]", style=solid]; +"759 Transpose_5249" -> "17 Transpose_5251" [label="[1, 8, 1, 1]", style=solid]; +"760 Transpose_800" -> "15 Convolution_801" [label="[8, 16, 1, 1]", style=solid]; +"761 Constant_5243" -> "13 Transpose_5245" [label="[2]", style=dashed]; +"762 Constant_11042" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; +"763 Constant_11041" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; +"764 Constant_11040" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; +"765 Constant_11039" -> "12 Transpose_5241/fq_output_0" [label="[]", style=solid]; +"766 Constant_9189" -> "10 Transpose_5239" [label="[1, 16, 1, 1]", style=solid]; +"767 Multiply_9181/fq_weights_1" -> "9 Multiply_9181" [label="[16, 1, 1, 3, 3]", style=solid]; +"768 Constant_11037" -> "767 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; +"769 Constant_11036" -> "767 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; +"770 Constant_11035" -> "767 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; +"771 Constant_11034" -> "767 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 1, 1]", style=solid]; +"772 Multiply_9649" -> "767 Multiply_9181/fq_weights_1" [label="[16, 1, 1, 3, 3]", style=solid]; +"773 Constant_11032" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; +"774 Constant_11031" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; +"775 Constant_11030" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; +"776 Constant_11029" -> "8 Transpose_5188/fq_output_0" [label="[1, 16, 1, 1]", style=solid]; +"777 Constant_9175" -> "6 Transpose_5170" [label="[1, 16, 1, 1]", style=solid]; +"778 Multiply_9167/fq_weights_1" -> "5 Multiply_9167" [label="[16, 3, 3, 3]", style=solid]; +"779 Constant_11027" -> "778 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"780 Constant_11026" -> "778 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"781 Constant_11025" -> "778 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"782 Constant_11024" -> "778 Multiply_9167/fq_weights_1" [label="[16, 1, 1, 1]", style=solid]; +"783 Gather_10068" -> "778 Multiply_9167/fq_weights_1" [label="[16, 3, 3, 3]", style=solid]; +"784 Constant_11022" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; +"785 Constant_11021" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; +"786 Constant_11020" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; +"787 Constant_11019" -> "4 Transpose_710/fq_output_0" [label="[]", style=solid]; +"788 Unsqueeze_7776" -> "3 Transpose_710" [label="[1, 1, 1, 1]", style=solid]; +"789 Unsqueeze_7782" -> "2 Transpose_7774" [label="[1, 1, 1, 1]", style=solid]; +"790 Constant_7779" -> "1 Transpose_7780" [label="[4]", style=dashed]; } diff --git a/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_mixed.json b/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_mixed.json index 01a0d229a04..cd816f7b3be 100644 --- a/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_mixed.json +++ b/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_mixed.json @@ -43,6 +43,12 @@ "output_low": 0.0, "output_high": 2.4107847213745117 }, + "Sigmoid/fq_output_0": { + "input_low": 0.0, + "input_high": 0.9998180866241455, + "output_low": 0.0, + "output_high": 0.9998180866241455 + }, "Add0/fq_output_0": { "input_low": 0.0, "input_high": 2.4112234115600586, diff --git a/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_performance.json b/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_performance.json index 01a0d229a04..cd816f7b3be 100644 --- a/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_performance.json +++ b/tests/openvino/native/data/2023.1/reference_scales/SeBlockModel_performance.json @@ -43,6 +43,12 @@ "output_low": 0.0, "output_high": 2.4107847213745117 }, + "Sigmoid/fq_output_0": { + "input_low": 0.0, + "input_high": 0.9998180866241455, + "output_low": 0.0, + "output_high": 0.9998180866241455 + }, "Add0/fq_output_0": { "input_low": 0.0, "input_high": 2.4112234115600586, diff --git a/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_mixed.json b/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_mixed.json index f452fd9ab28..c589abba014 100644 --- a/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_mixed.json +++ b/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_mixed.json @@ -7149,13 +7149,13 @@ ] ] }, - "Transpose_1760/fq_output_0": { + "Transpose_2267/fq_output_0": { "input_low": -0.3571314811706543, "input_high": 4.435948848724365, "output_low": -0.3571314811706543, "output_high": 4.435948848724365 }, - "Multiply_3985/fq_weights_1": { + "Multiply_4809/fq_weights_1": { "input_low": [ [ [ @@ -14333,13 +14333,13 @@ ] ] }, - "Transpose_1630/fq_output_0": { + "Transpose_2025/fq_output_0": { "input_low": -0.7855930924415588, "input_high": 3.5693252086639404, "output_low": -0.7855930924415588, "output_high": 3.5693252086639404 }, - "Multiply_3929/fq_weights_1": { + "Multiply_4753/fq_weights_1": { "input_low": [ [ [ @@ -21517,13 +21517,13 @@ ] ] }, - "Transpose_1566/fq_output_0": { + "Transpose_1905/fq_output_0": { "input_low": -0.5701775550842285, - "input_high": 4.62251091003418, + "input_high": 4.6225104331970215, "output_low": -0.5701775550842285, - "output_high": 4.62251091003418 + "output_high": 4.6225104331970215 }, - "Multiply_3901/fq_weights_1": { + "Multiply_4725/fq_weights_1": { "input_low": [ [ [ @@ -25117,13 +25117,13 @@ ] ] }, - "Transpose_1531/fq_output_0": { + "Transpose_1842/fq_output_0": { "input_low": -0.7855930924415588, "input_high": 3.5693252086639404, "output_low": -0.7855930924415588, "output_high": 3.5693252086639404 }, - "Multiply_3887/fq_weights_1": { + "Multiply_4711/fq_weights_1": { "input_low": [ [ [ @@ -32301,13 +32301,13 @@ ] ] }, - "Transpose_1497/fq_output_0": { - "input_low": -0.9937790632247925, + "Transpose_1780/fq_output_0": { + "input_low": -0.9937791228294373, "input_high": 5.855238914489746, - "output_low": -0.9937790632247925, + "output_low": -0.9937791228294373, "output_high": 5.855238914489746 }, - "Multiply_3873/fq_weights_1": { + "Multiply_4697/fq_weights_1": { "input_low": [ [ [ @@ -35901,13 +35901,13 @@ ] ] }, - "Transpose_1433/fq_output_0": { + "Transpose_1660/fq_output_0": { "input_low": -0.7652094960212708, "input_high": 9.504707336425781, "output_low": -0.7652094960212708, "output_high": 9.504707336425781 }, - "Multiply_3845/fq_weights_1": { + "Multiply_4669/fq_weights_1": { "input_low": [ [ [ @@ -37709,13 +37709,13 @@ ] ] }, - "Transpose_1398/fq_output_0": { - "input_low": -0.9937790632247925, + "Transpose_1597/fq_output_0": { + "input_low": -0.9937791228294373, "input_high": 5.855238914489746, - "output_low": -0.9937790632247925, + "output_low": -0.9937791228294373, "output_high": 5.855238914489746 }, - "Multiply_3831/fq_weights_1": { + "Multiply_4655/fq_weights_1": { "input_low": [ [ [ @@ -41309,13 +41309,13 @@ ] ] }, - "Transpose_1364/fq_output_0": { + "Transpose_1535/fq_output_0": { "input_low": -1.2554621696472168, - "input_high": 10.178211212158203, + "input_high": 10.178210258483887, "output_low": -1.2554621696472168, - "output_high": 10.178211212158203 + "output_high": 10.178210258483887 }, - "Multiply_3817/fq_weights_1": { + "Multiply_4641/fq_weights_1": { "input_low": [ [ [ @@ -43117,13 +43117,13 @@ ] ] }, - "Transpose_1300/fq_output_0": { + "Transpose_1415/fq_output_0": { "input_low": -0.791810154914856, - "input_high": 6.170658588409424, + "input_high": 6.170658111572266, "output_low": -0.791810154914856, - "output_high": 6.170658588409424 + "output_high": 6.170658111572266 }, - "Multiply_3789/fq_weights_1": { + "Multiply_4613/fq_weights_1": { "input_low": [ [ [ @@ -44029,13 +44029,13 @@ ] ] }, - "Transpose_1265/fq_output_0": { + "Transpose_1352/fq_output_0": { "input_low": -1.2554621696472168, - "input_high": 10.178211212158203, + "input_high": 10.178210258483887, "output_low": -1.2554621696472168, - "output_high": 10.178211212158203 + "output_high": 10.178210258483887 }, - "Multiply_3775/fq_weights_1": { + "Multiply_4599/fq_weights_1": { "input_low": [ [ [ @@ -45837,13 +45837,13 @@ ] ] }, - "Transpose_1235/fq_output_0": { + "Transpose_1294/fq_output_0": { "input_low": -0.5645939111709595, "input_high": 12.523719787597656, "output_low": -0.5645939111709595, "output_high": 12.523719787597656 }, - "Multiply_3761/fq_weights_1": { + "Multiply_4585/fq_weights_1": { "input_low": [ [ [ @@ -47645,13 +47645,13 @@ ] ] }, - "Transpose_1178/fq_output_0": { + "Transpose_1209/fq_output_0": { "input_low": -1.0276108980178833, "input_high": 2.375516176223755, "output_low": -1.0276108980178833, "output_high": 2.375516176223755 }, - "Multiply_3747/fq_weights_1": { + "Multiply_4571/fq_weights_1": { "input_low": [ [ [ @@ -48563,13 +48563,13 @@ "output_low": 0.0, "output_high": 0.9999967813491821 }, - "Transpose_1330/fq_output_0": { + "Transpose_1473/fq_output_0": { "input_low": -0.791810154914856, - "input_high": 6.170658588409424, + "input_high": 6.170658111572266, "output_low": -0.791810154914856, - "output_high": 6.170658588409424 + "output_high": 6.170658111572266 }, - "Multiply_3803/fq_weights_1": { + "Multiply_4627/fq_weights_1": { "input_low": [ [ [ @@ -49475,13 +49475,13 @@ ] ] }, - "Transpose_1463/fq_output_0": { + "Transpose_1718/fq_output_0": { "input_low": -0.7652094960212708, "input_high": 9.504707336425781, "output_low": -0.7652094960212708, "output_high": 9.504707336425781 }, - "Multiply_3859/fq_weights_1": { + "Multiply_4683/fq_weights_1": { "input_low": [ [ [ @@ -51283,13 +51283,13 @@ ] ] }, - "Transpose_1596/fq_output_0": { + "Transpose_1963/fq_output_0": { "input_low": -0.5701775550842285, - "input_high": 4.62251091003418, + "input_high": 4.6225104331970215, "output_low": -0.5701775550842285, - "output_high": 4.62251091003418 + "output_high": 4.6225104331970215 }, - "Multiply_3915/fq_weights_1": { + "Multiply_4739/fq_weights_1": { "input_low": [ [ [ @@ -54889,13 +54889,13 @@ "output_low": -0.7855930924415588, "output_high": 3.5693252086639404 }, - "Transpose_1724/fq_output_0": { + "Transpose_2203/fq_output_0": { "input_low": -0.4952194392681122, - "input_high": 3.578359842300415, + "input_high": 3.578359603881836, "output_low": -0.4952194392681122, - "output_high": 3.578359842300415 + "output_high": 3.578359603881836 }, - "Multiply_3971/fq_weights_1": { + "Multiply_4795/fq_weights_1": { "input_low": [ [ [ @@ -58489,13 +58489,13 @@ ] ] }, - "Transpose_1694/fq_output_0": { + "Transpose_2145/fq_output_0": { "input_low": -0.6254710555076599, "input_high": 2.1244447231292725, "output_low": -0.6254710555076599, "output_high": 2.1244447231292725 }, - "Multiply_3957/fq_weights_1": { + "Multiply_4781/fq_weights_1": { "input_low": [ [ [ @@ -65673,13 +65673,13 @@ ] ] }, - "Transpose_1664/fq_output_0": { + "Transpose_2087/fq_output_0": { "input_low": -0.5939716100692749, "input_high": 1.480860710144043, "output_low": -0.5939716100692749, "output_high": 1.480860710144043 }, - "Multiply_3943/fq_weights_1": { + "Multiply_4767/fq_weights_1": { "input_low": [ [ [ @@ -87175,13 +87175,13 @@ ] ] }, - "Transpose_1796/fq_output_0": { + "Transpose_2331/fq_output_0": { "input_low": -0.6007991433143616, "input_high": 4.870764255523682, "output_low": -0.6007991433143616, "output_high": 4.870764255523682 }, - "Multiply_3999/fq_weights_1": { + "Multiply_4823/fq_weights_1": { "input_low": [ [ [ diff --git a/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_performance.json b/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_performance.json index 89c067cdfb6..1a79f4cebd1 100644 --- a/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_performance.json +++ b/tests/openvino/native/data/2023.2/reference_scales/yolo-v4-tiny-tf_performance.json @@ -7149,13 +7149,13 @@ ] ] }, - "Transpose_1760/fq_output_0": { + "Transpose_2267/fq_output_0": { "input_low": -4.470877647399902, "input_high": 4.435948848724365, "output_low": -4.470877647399902, "output_high": 4.435948848724365 }, - "Multiply_3985/fq_weights_1": { + "Multiply_4809/fq_weights_1": { "input_low": [ [ [ @@ -14333,13 +14333,13 @@ ] ] }, - "Transpose_1630/fq_output_0": { + "Transpose_2025/fq_output_0": { "input_low": -3.5974302291870117, "input_high": 3.5693252086639404, "output_low": -3.5974302291870117, "output_high": 3.5693252086639404 }, - "Multiply_3929/fq_weights_1": { + "Multiply_4753/fq_weights_1": { "input_low": [ [ [ @@ -21517,13 +21517,13 @@ ] ] }, - "Transpose_1566/fq_output_0": { + "Transpose_1905/fq_output_0": { "input_low": -4.5784101486206055, "input_high": 4.5426411628723145, "output_low": -4.5784101486206055, "output_high": 4.5426411628723145 }, - "Multiply_3901/fq_weights_1": { + "Multiply_4725/fq_weights_1": { "input_low": [ [ [ @@ -25117,13 +25117,13 @@ ] ] }, - "Transpose_1531/fq_output_0": { + "Transpose_1842/fq_output_0": { "input_low": -3.5974302291870117, "input_high": 3.5693252086639404, "output_low": -3.5974302291870117, "output_high": 3.5693252086639404 }, - "Multiply_3887/fq_weights_1": { + "Multiply_4711/fq_weights_1": { "input_low": [ [ [ @@ -32301,13 +32301,13 @@ ] ] }, - "Transpose_1497/fq_output_0": { + "Transpose_1780/fq_output_0": { "input_low": -5.90134334564209, "input_high": 5.855238914489746, "output_low": -5.90134334564209, "output_high": 5.855238914489746 }, - "Multiply_3873/fq_weights_1": { + "Multiply_4697/fq_weights_1": { "input_low": [ [ [ @@ -35901,13 +35901,13 @@ ] ] }, - "Transpose_1433/fq_output_0": { + "Transpose_1660/fq_output_0": { "input_low": -9.338682174682617, "input_high": 9.265724182128906, "output_low": -9.338682174682617, "output_high": 9.265724182128906 }, - "Multiply_3845/fq_weights_1": { + "Multiply_4669/fq_weights_1": { "input_low": [ [ [ @@ -37709,13 +37709,13 @@ ] ] }, - "Transpose_1398/fq_output_0": { + "Transpose_1597/fq_output_0": { "input_low": -5.90134334564209, "input_high": 5.855238914489746, "output_low": -5.90134334564209, "output_high": 5.855238914489746 }, - "Multiply_3831/fq_weights_1": { + "Multiply_4655/fq_weights_1": { "input_low": [ [ [ @@ -41309,13 +41309,13 @@ ] ] }, - "Transpose_1364/fq_output_0": { + "Transpose_1535/fq_output_0": { "input_low": -10.120508193969727, "input_high": 10.041441917419434, "output_low": -10.120508193969727, "output_high": 10.041441917419434 }, - "Multiply_3817/fq_weights_1": { + "Multiply_4641/fq_weights_1": { "input_low": [ [ [ @@ -43117,13 +43117,13 @@ ] ] }, - "Transpose_1300/fq_output_0": { + "Transpose_1415/fq_output_0": { "input_low": -6.1309123039245605, "input_high": 6.083014488220215, "output_low": -6.1309123039245605, "output_high": 6.083014488220215 }, - "Multiply_3789/fq_weights_1": { + "Multiply_4613/fq_weights_1": { "input_low": [ [ [ @@ -44029,13 +44029,13 @@ ] ] }, - "Transpose_1265/fq_output_0": { + "Transpose_1352/fq_output_0": { "input_low": -10.120508193969727, "input_high": 10.041441917419434, "output_low": -10.120508193969727, "output_high": 10.041441917419434 }, - "Multiply_3775/fq_weights_1": { + "Multiply_4599/fq_weights_1": { "input_low": [ [ [ @@ -45837,13 +45837,13 @@ ] ] }, - "Transpose_1235/fq_output_0": { + "Transpose_1294/fq_output_0": { "input_low": -12.622331619262695, "input_high": 12.523719787597656, "output_low": -12.622331619262695, "output_high": 12.523719787597656 }, - "Multiply_3761/fq_weights_1": { + "Multiply_4585/fq_weights_1": { "input_low": [ [ [ @@ -47645,13 +47645,13 @@ ] ] }, - "Transpose_1178/fq_output_0": { + "Transpose_1209/fq_output_0": { "input_low": -2.385321617126465, "input_high": 2.3666863441467285, "output_low": -2.385321617126465, "output_high": 2.3666863441467285 }, - "Multiply_3747/fq_weights_1": { + "Multiply_4571/fq_weights_1": { "input_low": [ [ [ @@ -48563,13 +48563,13 @@ "output_low": 0.0, "output_high": 0.9999967813491821 }, - "Transpose_1330/fq_output_0": { + "Transpose_1473/fq_output_0": { "input_low": -6.1309123039245605, "input_high": 6.083014488220215, "output_low": -6.1309123039245605, "output_high": 6.083014488220215 }, - "Multiply_3803/fq_weights_1": { + "Multiply_4627/fq_weights_1": { "input_low": [ [ [ @@ -49475,13 +49475,13 @@ ] ] }, - "Transpose_1463/fq_output_0": { + "Transpose_1718/fq_output_0": { "input_low": -9.338682174682617, "input_high": 9.265724182128906, "output_low": -9.338682174682617, "output_high": 9.265724182128906 }, - "Multiply_3859/fq_weights_1": { + "Multiply_4683/fq_weights_1": { "input_low": [ [ [ @@ -51283,13 +51283,13 @@ ] ] }, - "Transpose_1596/fq_output_0": { + "Transpose_1963/fq_output_0": { "input_low": -4.5784101486206055, "input_high": 4.5426411628723145, "output_low": -4.5784101486206055, "output_high": 4.5426411628723145 }, - "Multiply_3915/fq_weights_1": { + "Multiply_4739/fq_weights_1": { "input_low": [ [ [ @@ -54889,13 +54889,13 @@ "output_low": -3.5974302291870117, "output_high": 3.5693252086639404 }, - "Transpose_1724/fq_output_0": { + "Transpose_2203/fq_output_0": { "input_low": -3.5974302291870117, "input_high": 3.5693252086639404, "output_low": -3.5974302291870117, "output_high": 3.5693252086639404 }, - "Multiply_3971/fq_weights_1": { + "Multiply_4795/fq_weights_1": { "input_low": [ [ [ @@ -58489,13 +58489,13 @@ ] ] }, - "Transpose_1694/fq_output_0": { + "Transpose_2145/fq_output_0": { "input_low": -2.1335461139678955, "input_high": 2.116877794265747, "output_low": -2.1335461139678955, "output_high": 2.116877794265747 }, - "Multiply_3957/fq_weights_1": { + "Multiply_4781/fq_weights_1": { "input_low": [ [ [ @@ -65673,13 +65673,13 @@ ] ] }, - "Transpose_1664/fq_output_0": { + "Transpose_2087/fq_output_0": { "input_low": -1.492521047592163, "input_high": 1.480860710144043, "output_low": -1.492521047592163, "output_high": 1.480860710144043 }, - "Multiply_3943/fq_weights_1": { + "Multiply_4767/fq_weights_1": { "input_low": [ [ [ @@ -87175,13 +87175,13 @@ ] ] }, - "Transpose_1796/fq_output_0": { + "Transpose_2331/fq_output_0": { "input_low": -4.909116744995117, "input_high": 4.870764255523682, "output_low": -4.909116744995117, "output_high": 4.870764255523682 }, - "Multiply_3999/fq_weights_1": { + "Multiply_4823/fq_weights_1": { "input_low": [ [ [ diff --git a/tests/openvino/native/quantization/test_fq_params_calculation.py b/tests/openvino/native/quantization/test_fq_params_calculation.py index 180eb7190c9..16e9a9fc59b 100644 --- a/tests/openvino/native/quantization/test_fq_params_calculation.py +++ b/tests/openvino/native/quantization/test_fq_params_calculation.py @@ -56,7 +56,6 @@ def get_fq_nodes_stats_algo(model): return nodes -# pylint: disable=protected-access def quantize_model(ov_model, q_params): dataset = get_dataset_for_test(ov_model) graph = GraphConverter.create_nncf_graph(ov_model) @@ -133,8 +132,8 @@ def test_overflow_fix_scales(overflow_fix): ids=[QuantizationPreset.PERFORMANCE.value, QuantizationPreset.MIXED.value], ) @pytest.mark.parametrize("model_name", OMZ_MODELS) -def test_omz_models_fq_scales(model_name, preset, inplace_statistics, tmp_path): - download_model(model_name, tmp_path) +def test_omz_models_fq_scales(model_name, preset, inplace_statistics, tmp_path, omz_cache_dir): + download_model(model_name, tmp_path, omz_cache_dir) convert_model(model_name, tmp_path) model_path = tmp_path / "public" / model_name / "FP32" / f"{model_name}.xml" model = ov.Core().read_model(model_path) diff --git a/tests/openvino/native/quantization/test_graphs.py b/tests/openvino/native/quantization/test_graphs.py index 9073a4bb581..b65986b2956 100644 --- a/tests/openvino/native/quantization/test_graphs.py +++ b/tests/openvino/native/quantization/test_graphs.py @@ -77,11 +77,11 @@ def test_depthwise_models_fq_placement(model_creator_func): @pytest.mark.parametrize("model_name_params", OMZ_MODELS_QUANTIZE_PARAMS.items(), ids=list(OMZ_MODELS_QUANTIZE_PARAMS)) -def test_omz_models_fq_placement(model_name_params, tmp_path): +def test_omz_models_fq_placement(model_name_params, tmp_path, omz_cache_dir): model_name, q_params = model_name_params params_str = "_".join([param.value for param in q_params.values()]) q_params.update({"inplace_statistics": True}) - download_model(model_name, tmp_path) + download_model(model_name, tmp_path, omz_cache_dir) convert_model(model_name, tmp_path) model_path = tmp_path / "public" / model_name / "FP32" / f"{model_name}.xml" model = ov.Core().read_model(model_path) @@ -116,10 +116,10 @@ def test_transformer_models_fq_placement(model_creator_func, tmp_path): @pytest.mark.parametrize("model_name_params", OMZ_MODELS_SQ_PARAMS.items(), ids=list(OMZ_MODELS_SQ_PARAMS)) -def test_omz_models_sq_placement(model_name_params, tmp_path): +def test_omz_models_sq_placement(model_name_params, tmp_path, omz_cache_dir): model_name, q_params = model_name_params q_params.update({"inplace_statistics": True}) - download_model(model_name, tmp_path) + download_model(model_name, tmp_path, omz_cache_dir) convert_model(model_name, tmp_path) model_path = tmp_path / "public" / model_name / "FP32" / f"{model_name}.xml" model = ov.Core().read_model(model_path) @@ -133,7 +133,6 @@ def test_omz_models_sq_placement(model_name_params, tmp_path): compare_nncf_graphs(quantized_model, path_ref_graph) -# pylint: disable=protected-access def smooth_quant_model(ov_model: ov.Model, q_params: Dict, quantize=True): dataset = get_dataset_for_test(ov_model) graph = GraphConverter.create_nncf_graph(ov_model) diff --git a/tests/openvino/native/quantization/test_ptq_params.py b/tests/openvino/native/quantization/test_ptq_params.py index e1d170b72b4..192d3b5b008 100644 --- a/tests/openvino/native/quantization/test_ptq_params.py +++ b/tests/openvino/native/quantization/test_ptq_params.py @@ -46,7 +46,6 @@ def get_ignored_patterns(device: TargetDevice = TargetDevice.ANY) -> GraphPatter return PatternsManager.get_full_ignored_pattern_graph(backend=BackendType.OPENVINO, device=device) -# pylint: disable=protected-access @pytest.mark.parametrize("target_device", [TargetDevice.CPU, TargetDevice.GPU, TargetDevice.VPU]) def test_target_device(target_device): min_max_algo = MinMaxQuantization(target_device=target_device) diff --git a/tests/openvino/native/quantization/test_quantization_pipeline.py b/tests/openvino/native/quantization/test_quantization_pipeline.py index 915f15f8b4f..34cc986e048 100644 --- a/tests/openvino/native/quantization/test_quantization_pipeline.py +++ b/tests/openvino/native/quantization/test_quantization_pipeline.py @@ -98,7 +98,7 @@ def test_meta_information(model_creator_func, ignored_options): def check_parameters(quantized_model, parameters, path): for key, value in parameters.items(): rt_path = path + [key] - if isinstance(value, (QuantizationPreset, TargetDevice)): + if isinstance(value, TargetDevice): value = value.value if isinstance(value, IgnoredScope): check_parameters(quantized_model, value.__dict__, rt_path) diff --git a/tests/openvino/native/quantization/test_quantizer_config.py b/tests/openvino/native/quantization/test_quantizer_config.py index 773f5996604..f1774cf89e8 100644 --- a/tests/openvino/native/quantization/test_quantizer_config.py +++ b/tests/openvino/native/quantization/test_quantizer_config.py @@ -31,9 +31,6 @@ ParamsCls = TemplateTestQuantizerConfig.TestGetStatisticsCollectorParameters -# pylint: disable=protected-access - - class TestQuantizerConfig(TemplateTestQuantizerConfig): def get_algo_backend(self): return OVMinMaxAlgoBackend() diff --git a/tests/openvino/native/quantization/test_sanity.py b/tests/openvino/native/quantization/test_sanity.py index 2bbe4ad38d5..911ce9a3854 100644 --- a/tests/openvino/native/quantization/test_sanity.py +++ b/tests/openvino/native/quantization/test_sanity.py @@ -46,11 +46,11 @@ @pytest.mark.parametrize( "model, dataset, ref_metrics, advanced_params", OMZ_MODELS, ids=[model[0] for model in OMZ_MODELS] ) -def test_compression(data_dir, tmp_path, model, dataset, ref_metrics, advanced_params): +def test_compression(data_dir, tmp_path, model, dataset, ref_metrics, advanced_params, omz_cache_dir): extracted_data_dir = os.path.dirname(get_dataset_for_test(dataset, data_dir)) config_path = AC_CONFIGS_DIR / f"{model}.yml" - download_model(model, tmp_path) + download_model(model, tmp_path, omz_cache_dir) convert_model(model, tmp_path) model_path = tmp_path / "public" / model / "FP32" / f"{model}.xml" diff --git a/tests/openvino/native/test_model_utils.py b/tests/openvino/native/test_model_utils.py index 75992fc24e3..28d2bbe6694 100644 --- a/tests/openvino/native/test_model_utils.py +++ b/tests/openvino/native/test_model_utils.py @@ -18,8 +18,6 @@ from tests.common.quantization.mock_graphs import create_mock_graph from tests.common.quantization.mock_graphs import get_nncf_graph_from_mock_nx_graph -# pylint:disable=protected-access - def get_nncf_graph_for_test(edge_shape, dtype): nodes = [ diff --git a/tests/openvino/native/test_nncf_graph_builder.py b/tests/openvino/native/test_nncf_graph_builder.py index 8b21431aa67..1f75de1f084 100644 --- a/tests/openvino/native/test_nncf_graph_builder.py +++ b/tests/openvino/native/test_nncf_graph_builder.py @@ -45,8 +45,8 @@ def test_compare_nncf_graph_synthetic_models(model_cls_to_test): @pytest.mark.parametrize("model_name", OMZ_MODELS) -def test_compare_nncf_graph_omz_models(tmp_path, model_name): - download_model(model_name, tmp_path) +def test_compare_nncf_graph_omz_models(tmp_path, omz_cache_dir, model_name): + download_model(model_name, tmp_path, omz_cache_dir) convert_model(model_name, tmp_path) model_path = tmp_path / "public" / model_name / "FP32" / f"{model_name}.xml" model = ov.Core().read_model(model_path) diff --git a/tests/openvino/omz_helpers.py b/tests/openvino/omz_helpers.py index 713f84be5ba..77787fd6aa7 100644 --- a/tests/openvino/omz_helpers.py +++ b/tests/openvino/omz_helpers.py @@ -25,8 +25,8 @@ def run_command(command: List[str]): return cmd_output -def download_model(name, path): - com_line = ["omz_downloader", "--name", name, "-o", str(path)] +def download_model(name, path, omz_cache_dir): + com_line = ["omz_downloader", "--name", name, "-o", str(path), "--cache_dir", str(omz_cache_dir)] _ = run_command(com_line) diff --git a/tests/openvino/pot/quantization/test_sanity.py b/tests/openvino/pot/quantization/test_sanity.py index dc413236d39..36ad34d9b66 100644 --- a/tests/openvino/pot/quantization/test_sanity.py +++ b/tests/openvino/pot/quantization/test_sanity.py @@ -32,11 +32,11 @@ @pytest.mark.parametrize("model, dataset, ref_metrics", OMZ_MODELS, ids=[model[0] for model in OMZ_MODELS]) -def test_compression(data_dir, tmp_path, model, dataset, ref_metrics): +def test_compression(data_dir, tmp_path, omz_cache_dir, model, dataset, ref_metrics): extracted_data_dir = os.path.dirname(get_dataset_for_test(dataset, data_dir)) config_path = AC_CONFIGS_DIR / f"{model}.yml" - download_model(model, tmp_path) + download_model(model, tmp_path, omz_cache_dir) convert_model(model, tmp_path) model_path = tmp_path / "public" / model / "FP32" / f"{model}.xml" diff --git a/tests/openvino/tools/calibrate.py b/tests/openvino/tools/calibrate.py index 59e793ac1e3..ecb589aa1ca 100644 --- a/tests/openvino/tools/calibrate.py +++ b/tests/openvino/tools/calibrate.py @@ -8,7 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=too-many-lines + import functools import json @@ -733,7 +733,6 @@ def get_allow_reshape_input(accuracy_checker_config) -> bool: return False -# pylint:disable=too-many-branches def maybe_reshape_model(model, dataset, subset_size, input_to_tensor_name): dataset_inputs_shapes = defaultdict(set) for input_dict in islice(dataset.get_inference_data(), subset_size): @@ -801,7 +800,6 @@ def maybe_reshape_model(model, dataset, subset_size, input_to_tensor_name): return model, model_inputs_shapes -# pylint: disable=protected-access def get_transform_fn(model_evaluator: ModelEvaluator, ov_model): if model_evaluator.launcher._lstm_inputs: compiled_original_model = ov.Core().compile_model(ov_model) diff --git a/tests/post_training/pipelines/base.py b/tests/post_training/pipelines/base.py index bc97a6a1b4b..99ee92d0017 100644 --- a/tests/post_training/pipelines/base.py +++ b/tests/post_training/pipelines/base.py @@ -294,7 +294,7 @@ def cleanup_torchscript_cache(): After run torch.jit.trace in convert_model, PyTorch does not clear the trace cache automatically. """ - # pylint: disable=protected-access + torch._C._jit_clear_class_registry() torch.jit._recursive.concrete_type_store = torch.jit._recursive.ConcreteTypeStore() torch.jit._state._clear_class_state() diff --git a/tests/post_training/reference_data.yaml b/tests/post_training/reference_data.yaml index 250bfa3546b..2f961c3cfd9 100644 --- a/tests/post_training/reference_data.yaml +++ b/tests/post_training/reference_data.yaml @@ -24,7 +24,7 @@ hf/hf-internal-testing/tiny-random-GPTNeoXForCausalLM_backend_OPTIMUM: # Timm timm/crossvit_9_240_backend_TORCH: - metric_value: 0.68136 + metric_value: 0.689 metric_value_fp32: 0.69966 timm/crossvit_9_240_backend_ONNX: metric_value: 0.68906 @@ -56,7 +56,7 @@ timm/deit3_small_patch16_224_backend_OLD_TORCH: metric_value: 0.76514 metric_value_fp32: 0.76974 timm/deit3_small_patch16_224_backend_TORCH: - metric_value: 0.7621 + metric_value: 0.76816 metric_value_fp32: 0.76974 timm/deit3_small_patch16_224_backend_ONNX: metric_value: 0.76806 @@ -104,20 +104,20 @@ timm/efficientnet_b0_backend_OLD_TORCH: metric_value: 0.75538 metric_value_fp32: 0.77292 timm/efficientnet_b0_backend_TORCH: - metric_value: 0.76476 + metric_value: 0.7680 metric_value_fp32: 0.77292 timm/efficientnet_b0_backend_ONNX: - metric_value: 0.76582 + metric_value: 0.7686 metric_value_fp32: 0.77292 timm/efficientnet_b0_backend_OV: - metric_value: 0.76796 + metric_value: 0.7688 metric_value_fp32: 0.77292 timm/efficientnet_b0_backend_POT: metric_value: 0.76866 metric_value_fp32: 0.77292 timm/efficientnet_b0_BC_backend_ONNX: - metric_value: 0.76446 + metric_value: 0.7686 metric_value_fp32: 0.77292 timm/efficientnet_b0_BC_backend_OV: metric_value: 0.76794 @@ -215,10 +215,10 @@ timm/mobilenetv3_small_050_backend_TORCH: metric_value: 0.39514 metric_value_fp32: 0.56338 timm/mobilenetv3_small_050_backend_ONNX: - metric_value: 0.53962 + metric_value: 0.5456 metric_value_fp32: 0.56338 timm/mobilenetv3_small_050_backend_OV: - metric_value: 0.38638 + metric_value: 0.413 metric_value_fp32: 0.56338 timm/mobilenetv3_small_050_backend_POT: metric_value: 0.54104 @@ -276,7 +276,7 @@ timm/swin_base_patch4_window7_224_backend_OLD_TORCH: metric_value: 0.81376 metric_value_fp32: 0.81462 timm/swin_base_patch4_window7_224_backend_TORCH: - metric_value: 0.80696 + metric_value: 0.8131 metric_value_fp32: 0.81462 timm/swin_base_patch4_window7_224_backend_ONNX: metric_value: 0.81294 diff --git a/tests/post_training/requirements.txt b/tests/post_training/requirements.txt index b86d947d391..b516ca9ec75 100644 --- a/tests/post_training/requirements.txt +++ b/tests/post_training/requirements.txt @@ -1,7 +1,7 @@ --extra-index-url https://download.pytorch.org/whl/cpu -torch==2.0.1 +torch==2.1.0 --extra-index-url https://download.pytorch.org/whl/cpu -torchvision==0.15.2 +torchvision==0.16.0 transformers==4.30.0 onnx==1.13.1 onnxruntime==1.14.1 diff --git a/tests/post_training/test_quantize_conformance.py b/tests/post_training/test_quantize_conformance.py index 34327625ba4..fa62eafd77b 100644 --- a/tests/post_training/test_quantize_conformance.py +++ b/tests/post_training/test_quantize_conformance.py @@ -85,7 +85,7 @@ def test_ptq_quantization(test_case_name, data, output, result, no_eval): pipeline = pipeline_cls(**pipeline_kwargs) pipeline.run() - # pylint:disable=broad-except + except Exception as e: err_msg = str(e) traceback.print_exc() diff --git a/tests/post_training/test_templates/models.py b/tests/post_training/test_templates/models.py index 86d258066b4..5d83db95117 100644 --- a/tests/post_training/test_templates/models.py +++ b/tests/post_training/test_templates/models.py @@ -10,6 +10,7 @@ # limitations under the License. from nncf.common.graph import NNCFGraph +from nncf.common.graph.layer_attributes import Dtype from nncf.common.graph.operator_metatypes import InputNoopMetatype from nncf.common.graph.operator_metatypes import OutputNoopMetatype from tests.common.quantization.metatypes import ConstantTestMetatype @@ -18,7 +19,6 @@ from tests.common.quantization.test_filter_constant_nodes import get_nncf_graph_from_mock_nx_graph -# pylint: disable=protected-access class NNCFGraphToTest: def __init__( self, @@ -218,3 +218,82 @@ def __init__( node_edges.extend([("Conv_2", "Output_1")]) original_mock_graph = create_mock_graph(nodes, node_edges) self.nncf_graph = get_nncf_graph_from_mock_nx_graph(original_mock_graph, nncf_graph_cls) + + +class NNCFGraphDropoutRemovingCase: + def __init__( + self, + dropout_metatype, + wrong_dropout_node: bool = False, + wrong_parallel_edges: bool = False, + nncf_graph_cls=NNCFGraph, + ): + nodes = [ + NodeWithType("Input_1", InputNoopMetatype), + NodeWithType("Split_1", None), + NodeWithType( + "Dropout_1", + dropout_metatype, + ), + NodeWithType("Output_1", OutputNoopMetatype), + NodeWithType( + "Dropout_2", + dropout_metatype, + ), + NodeWithType("Output_2_1", OutputNoopMetatype), + NodeWithType("Output_2_2", OutputNoopMetatype), + NodeWithType("Output_2_3", OutputNoopMetatype), + NodeWithType( + "Dropout_3", + dropout_metatype, + ), + NodeWithType("Output_3", OutputNoopMetatype), + ] + node_edges = [ + ("Input_1", "Split_1"), + ("Split_1", "Dropout_1"), + ("Dropout_1", "Output_1"), + ("Split_1", "Dropout_2"), + ("Dropout_2", "Output_2_1"), + ("Dropout_2", "Output_2_2"), + ("Dropout_2", "Output_2_3"), + ("Split_1", "Dropout_3"), + ("Dropout_3", "Output_3"), + ] + original_mock_graph = create_mock_graph(nodes, node_edges) + self.nncf_graph = get_nncf_graph_from_mock_nx_graph(original_mock_graph, nncf_graph_cls) + + dropout_2 = self.nncf_graph.get_node_by_key("3 /Dropout_2_0") + output = self.nncf_graph.add_nncf_node("/Output_2_4_0", "output", OutputNoopMetatype) + tensor_shape = [1, 2, 1, 1] if wrong_dropout_node else [1, 1, 1, 1] + self.nncf_graph.add_edge_between_nncf_nodes( + dropout_2.node_id, + output.node_id, + tensor_shape=tensor_shape, + input_port_id=15, + output_port_id=1, + dtype=Dtype.FLOAT, + ) + + dropout_2 = self.nncf_graph.get_node_by_key("4 /Dropout_3_0") + output = self.nncf_graph.add_nncf_node("/Output_3_1_0", "output", OutputNoopMetatype) + self.nncf_graph.add_edge_between_nncf_nodes( + dropout_2.node_id, + output.node_id, + tensor_shape=tensor_shape, + input_port_id=1, + output_port_id=1, + dtype=Dtype.FLOAT, + parallel_input_port_ids=list(range(2, 10)), + ) + if wrong_parallel_edges: + dropout_4 = self.nncf_graph.add_nncf_node("100 /dropout", "dropout", dropout_metatype) + self.nncf_graph.add_edge_between_nncf_nodes( + self.nncf_graph.get_node_by_key("0 /Input_1_0").node_id, + dropout_4.node_id, + tensor_shape=[1, 1, 1, 1], + input_port_id=0, + output_port_id=0, + dtype=Dtype.FLOAT, + parallel_input_port_ids=list(range(1, 10)), + ) diff --git a/tests/post_training/test_templates/test_bias_correction.py b/tests/post_training/test_templates/test_bias_correction.py index 68c72301707..b8146cf0827 100644 --- a/tests/post_training/test_templates/test_bias_correction.py +++ b/tests/post_training/test_templates/test_bias_correction.py @@ -30,7 +30,6 @@ TTensor = TypeVar("TTensor") -# pylint: disable=protected-access class TemplateTestBCAlgorithm: @staticmethod @abstractmethod diff --git a/tests/post_training/test_templates/test_channel_alignment.py b/tests/post_training/test_templates/test_channel_alignment.py index 0ad51ff76c7..950852ef3c2 100644 --- a/tests/post_training/test_templates/test_channel_alignment.py +++ b/tests/post_training/test_templates/test_channel_alignment.py @@ -32,8 +32,6 @@ from tests.post_training.test_templates.models import NNCFGraphCA from tests.post_training.test_templates.models import NNCFGraphCAWithBias -# pylint: disable=protected-access - EPS = 1e-3 VALID_CONV_LAYER_ATTR = ConvolutionLayerAttributes( @@ -285,8 +283,6 @@ def _get_nncf_graph(self, num_biases: int) -> NNCFGraph: @pytest.mark.parametrize("empty_statistics", [False, True]) @pytest.mark.parametrize("num_biases", [0, 1, 2]) - # pylint: disable=too-many-statements - # pylint: disable=too-many-branches def test_transformation_layout(self, empty_statistics, num_biases, mocker): mocked_transformer = mocker.MagicMock() self.mock_model_transformer_factory(mocker, mocked_transformer) diff --git a/tests/post_training/test_templates/test_fast_bias_correction.py b/tests/post_training/test_templates/test_fast_bias_correction.py index c4ea71d6551..d60ba274902 100644 --- a/tests/post_training/test_templates/test_fast_bias_correction.py +++ b/tests/post_training/test_templates/test_fast_bias_correction.py @@ -65,7 +65,7 @@ def test_reshape_bias_shift(self, bias_value: list, bias_shift: list, channel_ax bias_shift = self.list_to_backend_type(data=bias_shift) algo = FastBiasCorrection(subset_size=1, inplace_statistics=False) - # pylint: disable=protected-access + algo._backend_entity = self.get_backend() new_bias_shift = algo._reshape_bias_shift(bias_shift, bias_value, channel_axis) assert list(new_bias_shift.shape) == ref_shape diff --git a/tests/post_training/test_templates/test_ptq_params.py b/tests/post_training/test_templates/test_ptq_params.py index 8de8ce10451..4dbc05a5492 100644 --- a/tests/post_training/test_templates/test_ptq_params.py +++ b/tests/post_training/test_templates/test_ptq_params.py @@ -86,9 +86,6 @@ def __init__(self, metatypes: Dict[TestMetatype, OperatorMetatype]): self.weight_quantization_target_point_names.append(node.node_name) -# pylint: disable=protected-access - - class TemplateTestPTQParams: @abstractmethod def get_algo_backend(self): @@ -165,6 +162,7 @@ def test_quantize_outputs(self, test_params, quantize_outputs): inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) q_setup = min_max_algo._get_quantizer_setup(nncf_graph, inference_nncf_graph, hw_patterns, ignored_patterns) @@ -189,6 +187,7 @@ def test_ignored_scopes(self, test_params, ignored_scopes_data): inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) q_setup = min_max_algo._get_quantizer_setup(nncf_graph, inference_nncf_graph, hw_patterns, ignored_patterns) @@ -213,6 +212,7 @@ def test_model_type_pass(self, test_params, model_type): inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) q_setup = min_max_algo._get_quantizer_setup(nncf_graph, inference_nncf_graph, hw_patterns, ignored_patterns) @@ -276,7 +276,7 @@ def test_quantization_points_overflow_fix(self, overflow_fix, affected_target_po @pytest.mark.parametrize("validate_scopes", (True, False)) def test_validate_scope(self, test_params, validate_scopes): nncf_graph = test_params["test_model_type_pass"]["nncf_graph"] - inference_nncf_graph = transform_to_inference_graph(deepcopy(nncf_graph), []) + inference_nncf_graph = transform_to_inference_graph(deepcopy(nncf_graph), [], []) ignored_patterns = test_params["test_model_type_pass"]["ignored_patterns"] algo = MinMaxQuantization( ignored_scope=IgnoredScope(names=["some_node"], validate=validate_scopes), diff --git a/tests/post_training/test_templates/test_quantizer_config.py b/tests/post_training/test_templates/test_quantizer_config.py index 033b35377f5..8afbeae00a2 100644 --- a/tests/post_training/test_templates/test_quantizer_config.py +++ b/tests/post_training/test_templates/test_quantizer_config.py @@ -39,7 +39,6 @@ from tests.post_training.test_templates.models import NNCFGraphToTestSumAggregation -# pylint: disable=protected-access,too-many-branches class TemplateTestQuantizerConfig: @abstractmethod def get_algo_backend(self): @@ -91,6 +90,7 @@ def test_default_quantizer_config(self, single_conv_nncf_graph): inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) q_setup = min_max_algo._get_quantizer_setup( @@ -144,6 +144,7 @@ def test_quantizer_config_from_ptq_params_for_CPU( inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) if signed_weights is False or signed_activations in [True, False]: # Incompatible with HW CPU config @@ -185,6 +186,7 @@ def test_depthwise_conv_default_quantizer_config(self, depthwise_conv_nncf_graph inference_nncf_graph = transform_to_inference_graph( deepcopy(nncf_graph), min_max_algo._backend_entity.shapeof_metatypes, + min_max_algo._backend_entity.dropout_metatypes, min_max_algo._backend_entity.read_variable_metatypes, ) q_setup = min_max_algo._get_quantizer_setup( diff --git a/tests/post_training/test_templates/test_smooth_quant.py b/tests/post_training/test_templates/test_smooth_quant.py index 5ea93677f66..119acc31726 100644 --- a/tests/post_training/test_templates/test_smooth_quant.py +++ b/tests/post_training/test_templates/test_smooth_quant.py @@ -125,7 +125,6 @@ def test_smooth_quant_algo(self, model_cls, reference_values, tmpdir): self.check_scales(quantized_model, reference_values) - # pylint:disable=protected-access def test_get_abs_max_channel_collector(self): backend = self.get_backend() reduction_axes = (3, 2, 1) @@ -167,7 +166,6 @@ def test_get_abs_max_channel_collector(self): ), ), ) - # pylint:disable=protected-access def test__get_nodes_to_smooth_data(self, model_cls, references, tmpdir): model = self.backend_specific_model(model_cls(), tmpdir) nncf_graph = NNCFGraphFactory.create(model) @@ -218,7 +216,6 @@ def test_get_activation_channel_axis(self, node_metatype, layer_attributes, port node = NNCFNode(attributes) try: - # pylint: disable=protected-access activation_channel_axis = backend.get_activation_channel_axis(node, port_id) except RuntimeError as e: if isinstance(e, reference_value): @@ -238,7 +235,6 @@ def test_get_weight_channel_axis(self, node_metatype, layer_attributes, port_id, node = NNCFNode(attributes) try: - # pylint: disable=protected-access activation_channel_axis = backend.get_weight_channel_axis(node, port_id) except RuntimeError as e: if isinstance(e, reference_value): diff --git a/tests/shared/command.py b/tests/shared/command.py index 1a82f77dd69..99f94f5789e 100644 --- a/tests/shared/command.py +++ b/tests/shared/command.py @@ -79,7 +79,7 @@ def target(): self.process.wait() self.exec_time = time.time() - start_time - except Exception as e: # pylint:disable=broad-except + except Exception as e: self.thread_exc = e thread = threading.Thread(target=target) diff --git a/tests/shared/helpers.py b/tests/shared/helpers.py index ddcf96a82c0..1fc87b46672 100644 --- a/tests/shared/helpers.py +++ b/tests/shared/helpers.py @@ -172,8 +172,6 @@ def load_json(stats_path: Path): class NumpyEncoder(json.JSONEncoder): """Special json encoder for numpy types""" - # pylint: disable=W0221, E0202 - def default(self, o): if isinstance(o, np.integer): return int(o) diff --git a/tests/shared/install_fixtures.py b/tests/shared/install_fixtures.py index 079ba293901..5cdefe52722 100644 --- a/tests/shared/install_fixtures.py +++ b/tests/shared/install_fixtures.py @@ -16,8 +16,6 @@ @pytest.fixture(scope="function") -def tmp_venv_with_nncf( - tmp_path, package_type: str, venv_type: str, extras: Set[str] -): # pylint:disable=redefined-outer-name +def tmp_venv_with_nncf(tmp_path, package_type: str, venv_type: str, extras: Set[str]): venv_path = create_venv_with_nncf(tmp_path, package_type, venv_type, extra_reqs=extras) return venv_path diff --git a/tests/shared/nx_graph.py b/tests/shared/nx_graph.py index 1387a90207a..eaef4c96974 100644 --- a/tests/shared/nx_graph.py +++ b/tests/shared/nx_graph.py @@ -55,7 +55,6 @@ def __init__( self.edge_end_id = edge_end_id def __lt__(self, other: "LineOrder"): - # pylint:disable=too-many-return-statements if self.node_id is not None: if other.node_id is None: return True diff --git a/tests/shared/paths.py b/tests/shared/paths.py index 61d4aade112..feac4cae35f 100644 --- a/tests/shared/paths.py +++ b/tests/shared/paths.py @@ -14,7 +14,7 @@ from pathlib import Path TEST_ROOT = Path(__file__).absolute().parents[1] -PROJECT_ROOT = TEST_ROOT.parent.absolute() # pylint:disable=no-member +PROJECT_ROOT = TEST_ROOT.parent.absolute() EXAMPLES_DIR = PROJECT_ROOT / "examples" GITHUB_REPO_URL = "https://github.com/openvinotoolkit/nncf/" diff --git a/tests/shared/patterns.py b/tests/shared/patterns.py index 274e4c59394..ffb9711d5e3 100644 --- a/tests/shared/patterns.py +++ b/tests/shared/patterns.py @@ -15,8 +15,6 @@ from nncf.common.graph.patterns.manager import PatternsManager from nncf.common.utils.backend import BackendType -# pylint: disable=protected-access - def check_hw_patterns(backend: BackendType, reasons: Dict[HWFusedPatternNames, str]): backend_patterns = PatternsManager._get_backend_hw_patterns_map(backend) diff --git a/tests/shared/test_templates/template_test_nncf_tensor.py b/tests/shared/test_templates/template_test_nncf_tensor.py index 461deb14fce..ca6104c7f62 100644 --- a/tests/shared/test_templates/template_test_nncf_tensor.py +++ b/tests/shared/test_templates/template_test_nncf_tensor.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=too-many-function-args import operator from abc import abstractmethod @@ -47,7 +46,6 @@ } -# pylint: disable=too-many-public-methods class TemplateTestNNCFTensorOperators: @staticmethod @abstractmethod @@ -217,36 +215,95 @@ def test_flatten(self, val, ref): assert res.device == nncf_tensor.device @pytest.mark.parametrize( - "val, axis, ref", + "val, axis, keepdims, ref", ( - (1, None, 1), - ([1], None, 1), - ([[[[1], [2]], [[3], [4]]]], None, 4), - ([[1, 2], [3, 4]], 1, [2, 4]), + (1, None, False, 1), + (1, None, True, 1), + ([1], None, False, 1), + ([1], None, True, 1), + ([[[[1], [2]], [[3], [4]]]], None, False, 4), + ([[[[1], [2]], [[3], [4]]]], None, True, 4), + ([[1, 2], [3, 4]], 1, False, [2, 4]), + ([[1, 2], [3, 4]], 1, True, [[2], [4]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), False, [[3], [4]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), True, [[[[3], [4]]]]), ), ) - def test_fn_max(self, val, axis, ref): + def test_fn_max(self, val, axis, keepdims, ref): tensor = self.to_tensor(val) nncf_tensor = Tensor(tensor) ref_tensor = self.to_tensor(ref) - res = fns.max(nncf_tensor, axis=axis) + res = fns.max(nncf_tensor, axis=axis, keepdims=keepdims) assert isinstance(res, Tensor) assert fns.allclose(res, ref_tensor) assert res.device == nncf_tensor.device @pytest.mark.parametrize( - "val, axis, ref", + "val, axis, keepdims, ref", ( - (1, None, 1), - ([1], None, 1), - ([[[[1], [2]], [[3], [4]]]], None, 1), - ([[1, 2], [3, 4]], 1, [1, 3]), + (1, None, False, 1), + (1, None, True, 1), + ([1], None, False, 1), + ([1], None, True, 1), + ([[[[1], [2]], [[3], [4]]]], None, False, 1), + ([[[[1], [2]], [[3], [4]]]], None, True, 1), + ([[1, 2], [3, 4]], 1, False, [1, 3]), + ([[1, 2], [3, 4]], 1, True, [[1], [3]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), False, [[1], [2]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), True, [[[[1], [2]]]]), + ), + ) + def test_fn_min(self, val, axis, keepdims, ref): + tensor = self.to_tensor(val) + nncf_tensor = Tensor(tensor) + ref_tensor = self.to_tensor(ref) + res = fns.min(nncf_tensor, axis=axis, keepdims=keepdims) + assert isinstance(res, Tensor) + assert fns.allclose(res, ref_tensor) + assert res.device == nncf_tensor.device + + @pytest.mark.parametrize( + "val, axis, keepdims, ref", + ( + (1, None, False, 1), + (1, None, True, 1), + ([1], None, False, 1), + ([1], None, True, 1), + ([[[[1], [2]], [[3], [4]]]], None, False, 1), + ([[[[1], [2]], [[3], [4]]]], None, True, 1), + ([[1, 2], [3, 4]], 1, False, [1, 3]), + ([[1, 2], [3, 4]], 1, True, [[1], [3]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), False, [[1], [2]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), True, [[[[1], [2]]]]), + ), + ) + def test_min(self, val, axis, keepdims, ref): + nncf_tensor = Tensor(self.to_tensor(val)) + ref_tensor = self.to_tensor(ref) + res = nncf_tensor.min(axis=axis, keepdims=keepdims) + assert isinstance(res, Tensor) + assert fns.allclose(res, ref_tensor) + assert res.device == nncf_tensor.device + + @pytest.mark.parametrize( + "val, axis, keepdims, ref", + ( + (1, None, False, 1), + (1, None, True, 1), + ([1], None, False, 1), + ([1], None, True, 1), + ([[[[1], [2]], [[3], [4]]]], None, False, 4), + ([[[[1], [2]], [[3], [4]]]], None, True, 4), + ([[1, 2], [3, 4]], 1, False, [2, 4]), + ([[1, 2], [3, 4]], 1, True, [[2], [4]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), False, [[3], [4]]), + ([[[[1], [2]], [[3], [4]]]], (0, 1), True, [[[[3], [4]]]]), ), ) - def test_min(self, val, axis, ref): + def test_max(self, val, axis, keepdims, ref): nncf_tensor = Tensor(self.to_tensor(val)) ref_tensor = self.to_tensor(ref) - res = nncf_tensor.min(axis=axis) + res = nncf_tensor.max(axis=axis, keepdims=keepdims) assert isinstance(res, Tensor) assert fns.allclose(res, ref_tensor) assert res.device == nncf_tensor.device diff --git a/tests/tensorflow/experimental/test_models/resnet.py b/tests/tensorflow/experimental/test_models/resnet.py index 938ea10d8ea..be6468eb8b6 100644 --- a/tests/tensorflow/experimental/test_models/resnet.py +++ b/tests/tensorflow/experimental/test_models/resnet.py @@ -14,9 +14,6 @@ import tensorflow as tf -# pylint:disable=too-many-lines -# pylint:disable=too-many-statements -# pylint:disable=abstract-method def make_divisible( value: float, divisor: int, diff --git a/tests/tensorflow/helpers.py b/tests/tensorflow/helpers.py index a1ef3a4bcaf..91904bb311d 100644 --- a/tests/tensorflow/helpers.py +++ b/tests/tensorflow/helpers.py @@ -220,7 +220,7 @@ def remove_node_by_name(node_name: str, tf_graph: tf.Graph) -> tf.Graph: graph_def.node[idx].input.pop(port_idx) graph_def.node[idx].input.extend(incoming_edges) - with tf.Graph().as_default() as graph: # pylint:disable=not-context-manager + with tf.Graph().as_default() as graph: tf.graph_util.import_graph_def(graph_def, name="") return graph diff --git a/tests/tensorflow/pruning/test_algorithm.py b/tests/tensorflow/pruning/test_algorithm.py index 151b2342331..b82a373198c 100644 --- a/tests/tensorflow/pruning/test_algorithm.py +++ b/tests/tensorflow/pruning/test_algorithm.py @@ -126,6 +126,6 @@ def test_collect_output_shapes(model_fn, ref_output_shapes): model = model_fn(input_shape) model.compile() _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) - # pylint:disable=protected-access + output_shapes = collect_output_shapes(compression_ctrl.model, compression_ctrl._original_graph) assert output_shapes == ref_output_shapes diff --git a/tests/tensorflow/pruning/test_flops_pruning.py b/tests/tensorflow/pruning/test_flops_pruning.py index 893afc9834c..7d5c9c69863 100644 --- a/tests/tensorflow/pruning/test_flops_pruning.py +++ b/tests/tensorflow/pruning/test_flops_pruning.py @@ -128,7 +128,7 @@ def test_flops_calulation_for_spec_layers( assert compression_ctrl.full_params_num == ref_full_params assert compression_ctrl.current_flops == ref_current_flops assert compression_ctrl.current_params_num == ref_current_params - # pylint:disable=protected-access + original_graph = compression_ctrl._original_graph pruning_groups = compression_ctrl._pruned_layer_groups_info shape_pruner = ShapePruningProcessor( diff --git a/tests/tensorflow/pruning/test_tensor_processor.py b/tests/tensorflow/pruning/test_tensor_processor.py index 0ec75d388ba..b917eef0cb6 100644 --- a/tests/tensorflow/pruning/test_tensor_processor.py +++ b/tests/tensorflow/pruning/test_tensor_processor.py @@ -74,7 +74,6 @@ def test_elementwise_mask_propagation(all_close): def test_split(): - # pylint: disable=E1120 tensor_data = [0.0, 1.0, 2.0, 3.0] tf_variable = tf.Variable(tensor_data) tf_output = tf.split(tf_variable, 2) diff --git a/tests/tensorflow/quantization/test_algorithm_quantization.py b/tests/tensorflow/quantization/test_algorithm_quantization.py index ee50ca40b63..b26438ca564 100644 --- a/tests/tensorflow/quantization/test_algorithm_quantization.py +++ b/tests/tensorflow/quantization/test_algorithm_quantization.py @@ -42,12 +42,10 @@ def compare_qspecs(qspec: TFQuantizerSpec, quantizer): assert qspec.half_range == quantizer.half_range assert isinstance(quantizer, NNCF_QUANTIZATION_OPERATIONS.get(qspec.mode)) if qspec.mode == QuantizationMode.SYMMETRIC: - # pylint: disable=protected-access assert qspec.signedness_to_force == quantizer.signedness_to_force def get_quantizers(model): - # pylint: disable=protected-access activation_quantizers = [layer._quantizer for layer in model.layers if isinstance(layer, FakeQuantize)] weight_quantizers = [] for layer in model.layers: @@ -253,7 +251,7 @@ def get_quantize_inputs_test_model(input_shapes): inputs = [] for i, input_shape in enumerate(input_shapes): inputs.append(tf.keras.Input(shape=input_shape[1:], name="input_{}".format(i + 1))) - # pylint: disable=unbalanced-tuple-unpacking + input_1, input_2, input_3, input_4, input_5 = inputs conv1 = layers.Conv2D(filters=8, kernel_size=3) @@ -292,7 +290,7 @@ def get_quantize_inputs_test_model(input_shapes): x_45 = conv6(x_45) x_45 = layers.Flatten()(x_45) in_5_flat = layers.Flatten()(input_5) - # pylint: disable=E1120 + x_45 = tf.pad(x_45, [[0, 0], [0, in_5_flat.shape[1] - x_45.shape[1]]]) x_45 += in_5_flat x = tf.concat([x_1, x_2, x_3, x_45], -1) @@ -637,7 +635,7 @@ def test_quantize_pre_post_processing(layer_name, input_type, data_type): channel_axes = get_channel_axis(layer_desk.input_type, layer_name, layer_desk.layer) q.setup_input_transformation(layer_desk.shape, channel_axes) - # pylint: disable=protected-access + preprocess = q._pre_processing_fn(layer_desk.inputs) postprocess = q._post_processing_fn(preprocess) assert tf.math.reduce_all(preprocess == layer_desk.inputs_transformed) diff --git a/tests/tensorflow/quantization/test_builder_state.py b/tests/tensorflow/quantization/test_builder_state.py index 639cae509b2..70b01b0221d 100644 --- a/tests/tensorflow/quantization/test_builder_state.py +++ b/tests/tensorflow/quantization/test_builder_state.py @@ -74,7 +74,7 @@ def test_quantization_configs__on_resume_with_compression_state(tmp_path, mocker builder = QuantizationBuilder(config) builder.load_state(compression_state_to_load["builder_state"]) - # pylint:disable=protected-access + loaded_quantizer_setup = builder._quantizer_setup assert _quantization_setup_cmp(loaded_quantizer_setup, saved_quantizer_setup) @@ -151,7 +151,7 @@ def test_checkpoint_callback_make_checkpoints(mocker, tmp_path): builder = QuantizationBuilder(config) builder.load_state(new_compression_state["builder_state"]) - # pylint:disable=protected-access + new_quantizer_setup = builder._quantizer_setup assert _quantization_setup_cmp(quantizer_setup, new_quantizer_setup) diff --git a/tests/tensorflow/quantization/test_overflow_issue.py b/tests/tensorflow/quantization/test_overflow_issue.py index 672961f5f37..83cd2df8728 100644 --- a/tests/tensorflow/quantization/test_overflow_issue.py +++ b/tests/tensorflow/quantization/test_overflow_issue.py @@ -46,7 +46,7 @@ def check_quantized_values_equals(y_train, y_val, eps, range_len, narrow_range): ids=["full_range", "narrow_range"], ) def test_min_adj(bits, low, range_, narrow_range, ref): - res = Quantizer._min_adj(bits, low, range_, narrow_range).numpy() # pylint: disable=protected-access + res = Quantizer._min_adj(bits, low, range_, narrow_range).numpy() assert abs(res - ref) < EPS @@ -61,7 +61,7 @@ def get_weights_for_overflow_issue_test(low, range_len, narrow_range, init_w_as_ mid_points = [-(i + 1 / 2) * quant_len for i in range(127)] else: # Range with zero - min_adj = Quantizer._min_adj(7, low, range_len, narrow_range).numpy() # pylint: disable=protected-access + min_adj = Quantizer._min_adj(7, low, range_len, narrow_range).numpy() mid_points = [min_adj + (i + 1 / 2) * quant_len for i in range(127)] new_w = mid_points * int(np.round(0.5 + DIM_SPLIT / 128)) @@ -115,7 +115,7 @@ def test_symmetric_quantized_weights_equal_after_fix_applied( assert (np.abs(np.abs(w_int7 - new_w) - quant_len / 2) < 1e-6).all(), "Middle points calculated incorrectly" apply_overflow_fix_to_layer(layer, "kernel", quantizer) - assert not quantizer._half_range # pylint: disable=protected-access + assert not quantizer._half_range w_int8 = layer(tf.ones((1, 1))).numpy() check_quantized_values_equals(w_int7, w_int8, EPS, range_len, narrow_range) @@ -159,7 +159,7 @@ def test_asymmetric_quantized_weights_equal_after_fix_applied( assert (np.abs(np.abs(w_int7 - new_w) - quant_len / 2) < EPS).all(), "Middle points calculated incorrectly" apply_overflow_fix_to_layer(layer, "kernel", quantizer) - assert not quantizer._half_range # pylint: disable=protected-access + assert not quantizer._half_range w_int8 = layer(tf.ones((1, 1))).numpy() check_quantized_values_equals(w_int7, w_int8, EPS, range_len, narrow_range) diff --git a/tests/tensorflow/quantization/test_unified_scales.py b/tests/tensorflow/quantization/test_unified_scales.py index dd35e981b98..8702271ba11 100644 --- a/tests/tensorflow/quantization/test_unified_scales.py +++ b/tests/tensorflow/quantization/test_unified_scales.py @@ -25,7 +25,7 @@ def get_single_concat_test_model(input_shapes): inputs = [] for i, input_shape in enumerate(input_shapes): inputs.append(tf.keras.Input(shape=input_shape[1:], name="input_{}".format(i + 1))) - # pylint: disable=unbalanced-tuple-unpacking + input_1, input_2 = inputs x_1 = layers.Multiply()([input_1, input_1]) @@ -40,7 +40,7 @@ def get_double_concat_test_model(input_shapes): inputs = [] for i, input_shape in enumerate(input_shapes): inputs.append(tf.keras.Input(shape=input_shape[1:], name="input_{}".format(i + 1))) - # pylint: disable=unbalanced-tuple-unpacking + input_1, input_2 = inputs x_1 = input_1 * input_1 @@ -56,7 +56,7 @@ def get_unet_like_test_model(input_shapes): inputs = [] for i, input_shape in enumerate(input_shapes): inputs.append(tf.keras.Input(shape=input_shape[1:], name="input_{}".format(i + 1))) - # pylint: disable=unbalanced-tuple-unpacking + input_1, _ = inputs conv_1 = layers.Conv2D(filters=8, kernel_size=1)(input_1) @@ -168,7 +168,7 @@ def get_eltwise_quantizer_linking_test_model(input_shapes): inputs = [] for i, input_shape in enumerate(input_shapes): inputs.append(tf.keras.Input(shape=input_shape[1:], name="input_{}".format(i + 1))) - # pylint: disable=unbalanced-tuple-unpacking + input_1, input_2 = inputs def path(input_1, input_2): diff --git a/tests/tensorflow/sparsity/magnitude/test_algorithm.py b/tests/tensorflow/sparsity/magnitude/test_algorithm.py index edbcc46aa35..1da2c93a031 100644 --- a/tests/tensorflow/sparsity/magnitude/test_algorithm.py +++ b/tests/tensorflow/sparsity/magnitude/test_algorithm.py @@ -46,8 +46,8 @@ def test_can_create_magnitude_sparse_algo__with_defaults(): assert len(conv_names) == len(wrappers) assert len(conv_names) == len(correct_wrappers) - assert compression_ctrl._threshold == approx(0.24, 0.1) # pylint: disable=protected-access - # pylint: disable=protected-access + assert compression_ctrl._threshold == approx(0.24, 0.1) + assert isinstance(compression_ctrl._weight_importance_fn, type(normed_magnitude)) for i, wrapper in enumerate(wrappers): @@ -103,7 +103,7 @@ def test_magnitude_sparse_algo_sets_threshold(weight_importance, sparsity_level, _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) if sparsity_level: compression_ctrl.set_sparsity_level(sparsity_level) - assert compression_ctrl._threshold == pytest.approx(threshold, 0.01) # pylint: disable=protected-access + assert compression_ctrl._threshold == pytest.approx(threshold, 0.01) def test_can_create_magnitude_algo__without_levels(): diff --git a/tests/tensorflow/sparsity/rb/test_algorithm.py b/tests/tensorflow/sparsity/rb/test_algorithm.py index bd2a7ad7430..5808f2e2dfd 100644 --- a/tests/tensorflow/sparsity/rb/test_algorithm.py +++ b/tests/tensorflow/sparsity/rb/test_algorithm.py @@ -126,7 +126,7 @@ def test_can_set_sparse_layers_to_loss(): _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) loss = compression_ctrl.loss assert isinstance(loss, SparseLoss) - # pylint: disable=protected-access + for op, _ in loss._target_ops: assert isinstance(op, RBSparsifyingWeight) @@ -142,7 +142,7 @@ def test_loss_has_correct_ops(): config = get_basic_sparsity_config() compress_model, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) wrappers = collect_wrapped_layers(compress_model) - # pylint: disable=protected-access + target_ops = {op[0].name: op for op in compression_ctrl.loss._target_ops} for wrapper in wrappers: for ops in wrapper.weights_attr_ops.values(): @@ -164,7 +164,7 @@ def test_sparse_algo_does_not_replace_not_conv_layer(): config = get_basic_sparsity_config() _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) assert isinstance(compression_ctrl, RBSparsityController) - # pylint: disable=protected-access + target_ops = compression_ctrl.loss._target_ops assert len(target_ops) == 1 assert isinstance(target_ops[0][0], RBSparsifyingWeight) @@ -197,7 +197,6 @@ def test_sparse_algo_can_collect_sparse_ops(): config = get_basic_sparsity_config() _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) - # pylint: disable=protected-access assert len(compression_ctrl.loss._target_ops) == 2 @@ -222,7 +221,6 @@ def test_scheduler_can_do_epoch_step__with_rb_algo(): assert not loss.disabled - # pylint: disable=protected-access for op, op_weights in loss._target_ops: assert op.get_trainable_weight(op_weights) diff --git a/tests/tensorflow/sparsity/rb/test_components.py b/tests/tensorflow/sparsity/rb/test_components.py index f96f5eb120b..6404589051a 100644 --- a/tests/tensorflow/sparsity/rb/test_components.py +++ b/tests/tensorflow/sparsity/rb/test_components.py @@ -65,7 +65,6 @@ def wrapper(*args, **kwargs): else: thread_id = "dummy" - # pylint: disable=redundant-keyword-arg tf.print(thread_id, args[1], output_stream=f"file://{MASKS_SEEDS_PATH}") mask = fn(*args, **kwargs) return mask @@ -180,7 +179,7 @@ def test_calc_loss(self, model_name, frozen, raising, local_mode): trainable = model.layers[1].ops_weights[op.name]["trainable"] assert tf.equal(trainable, tf.constant(not frozen)) cls = SparseLoss - # pylint: disable=protected-access + loss = cls(algo.loss._target_ops) try: assert loss() == 0 diff --git a/tests/tensorflow/test_api_behavior.py b/tests/tensorflow/test_api_behavior.py index 100e90a6395..63332344b54 100644 --- a/tests/tensorflow/test_api_behavior.py +++ b/tests/tensorflow/test_api_behavior.py @@ -12,7 +12,6 @@ from nncf.tensorflow.loss import TFZeroCompressionLoss -# pylint: disable=use-implicit-booleaness-not-comparison def test_tf_zero_loss_state(): loss = TFZeroCompressionLoss() assert loss.get_state() == {} diff --git a/tests/tensorflow/test_init.py b/tests/tensorflow/test_init.py index 602f306a89c..190d5277784 100644 --- a/tests/tensorflow/test_init.py +++ b/tests/tensorflow/test_init.py @@ -64,7 +64,6 @@ def make_table_row(expected, metric, diff, error_message, metrics_type_, key): @pytest.mark.init @pytest.mark.parametrize("eval_test_struct", RunTest.param_list, ids=RunTest.ids_list) def test_init(self, sota_checkpoints_dir, sota_data_dir, eval_test_struct: EvalRunParamsStruct): - # pylint: disable=too-many-branches if sota_data_dir is None: pytest.skip("Path to datasets is not set") diff --git a/tests/tensorflow/test_model_converter.py b/tests/tensorflow/test_model_converter.py index 04b67569492..d39997b3a8e 100644 --- a/tests/tensorflow/test_model_converter.py +++ b/tests/tensorflow/test_model_converter.py @@ -94,7 +94,7 @@ def get_model_with_reshapes_and_concats(batch_size=None): x = layers.Reshape((16, -1))(x) ones = tf.ones_like(x) t1 = layers.concatenate([x, ones]) - # pylint: disable=E1120,E1123 + t2 = tf.concat([x, ones], axis=-1) y = tf.concat([t1, t2], axis=-1) y = tf.transpose(y, [2, 0, 1]) diff --git a/tests/tensorflow/test_models/inception_v3.py b/tests/tensorflow/test_models/inception_v3.py index 09043353870..bb4e0a30b23 100644 --- a/tests/tensorflow/test_models/inception_v3.py +++ b/tests/tensorflow/test_models/inception_v3.py @@ -18,7 +18,6 @@ NUM_CLASSES = 1000 -# pylint: disable=R0915 def InceptionV3(input_shape=None): input_shape = imagenet_utils.obtain_input_shape( input_shape, default_size=299, min_size=75, data_format=backend.image_data_format(), require_flatten=True diff --git a/tests/tensorflow/test_models/maskrcnn.py b/tests/tensorflow/test_models/maskrcnn.py index 1835052a38b..b309988c23b 100644 --- a/tests/tensorflow/test_models/maskrcnn.py +++ b/tests/tensorflow/test_models/maskrcnn.py @@ -15,7 +15,7 @@ from tests.shared.paths import PROJECT_ROOT -def MaskRCNN(input_shape=None): # pylint: disable=W0613 +def MaskRCNN(input_shape=None): path_to_config = PROJECT_ROOT / "examples" / "tensorflow" / "segmentation" / "configs" / "mask_rcnn_coco.json" config_from_json = SampleConfig.from_json(path_to_config) diff --git a/tests/tensorflow/test_models/retinanet.py b/tests/tensorflow/test_models/retinanet.py index 96fa92cdcfb..be618a740e0 100644 --- a/tests/tensorflow/test_models/retinanet.py +++ b/tests/tensorflow/test_models/retinanet.py @@ -15,7 +15,7 @@ from tests.shared.paths import PROJECT_ROOT -def RetinaNet(input_shape=None): # pylint: disable=W0613 +def RetinaNet(input_shape=None): path_to_config = PROJECT_ROOT / "examples" / "tensorflow" / "object_detection" / "configs" / "retinanet_coco.json" config_from_json = SampleConfig.from_json(path_to_config) diff --git a/tests/tensorflow/test_models/sequential_model.py b/tests/tensorflow/test_models/sequential_model.py index 07c445a59bb..fb30c2b97a5 100644 --- a/tests/tensorflow/test_models/sequential_model.py +++ b/tests/tensorflow/test_models/sequential_model.py @@ -11,7 +11,7 @@ from tensorflow.keras import Sequential from tensorflow.keras import layers -from tensorflow.keras.initializers import Constant # pylint: disable=no-name-in-module +from tensorflow.keras.initializers import Constant def SequentialModel(**kwargs): diff --git a/tests/tensorflow/test_models/shared_layers_model.py b/tests/tensorflow/test_models/shared_layers_model.py index d4f86b7494d..ddbdb498be1 100644 --- a/tests/tensorflow/test_models/shared_layers_model.py +++ b/tests/tensorflow/test_models/shared_layers_model.py @@ -16,7 +16,7 @@ def SharedLayersModel(input_shape): inputs = tf.keras.Input(input_shape) x0 = layers.Conv2D(8, 3, name="c0")(inputs) - # pylint: disable=E1124, E1120 + x0s1, x0s2 = tf.split(x0, 2, axis=-1) x1 = layers.Conv2D(2, 3, name="c1")(x0s1) x2 = layers.Conv2D(2, 3, name="c2")(x0s2) diff --git a/tests/tensorflow/test_models/xception.py b/tests/tensorflow/test_models/xception.py index 89ccbf75d12..e10bbdada18 100644 --- a/tests/tensorflow/test_models/xception.py +++ b/tests/tensorflow/test_models/xception.py @@ -18,7 +18,6 @@ NUM_CLASSES = 1000 -# pylint: disable=R0915 def Xception(input_shape=None): input_shape = imagenet_utils.obtain_input_shape( input_shape, default_size=299, min_size=71, data_format=backend.image_data_format(), require_flatten=True diff --git a/tests/tensorflow/test_sota_checkpoints.py b/tests/tensorflow/test_sota_checkpoints.py index c26fd981983..99ae82190db 100644 --- a/tests/tensorflow/test_sota_checkpoints.py +++ b/tests/tensorflow/test_sota_checkpoints.py @@ -474,7 +474,6 @@ def make_table_row( @pytest.mark.eval @pytest.mark.parametrize("eval_test_struct", RunTest.param_list, ids=RunTest.ids_list) def test_eval(self, sota_checkpoints_dir, sota_data_dir, eval_test_struct: EvalRunParamsStruct): - # pylint: disable=too-many-branches if sota_data_dir is None: pytest.skip("Path to datasets is not set") @@ -574,7 +573,6 @@ def test_eval(self, sota_checkpoints_dir, sota_data_dir, eval_test_struct: EvalR @pytest.mark.oveval @pytest.mark.parametrize("eval_test_struct", RunTest.ov_param_list, ids=RunTest.ov_ids_list) def test_openvino_eval(self, eval_test_struct: EvalRunParamsStruct, sota_checkpoints_dir, ov_data_dir, openvino): - # pylint: disable=too-many-branches if not openvino: pytest.skip() # WA to avoid OS error diff --git a/tests/torch/accuracy_aware_training/test_training_loop.py b/tests/torch/accuracy_aware_training/test_training_loop.py index 30e51d56a3f..aa0f4dbbebf 100644 --- a/tests/torch/accuracy_aware_training/test_training_loop.py +++ b/tests/torch/accuracy_aware_training/test_training_loop.py @@ -227,7 +227,7 @@ def configure_optimizers_fn(): validate_fn=partial(mock_validate_fn, init_step=False), configure_optimizers_fn=configure_optimizers_fn, ) - assert len(acc_aware_training_loop.runner._best_checkpoints) == 0 # pylint: disable=protected-access + assert len(acc_aware_training_loop.runner._best_checkpoints) == 0 possible_checkpoint_compression_rates = ( acc_aware_training_loop.runner.get_compression_rates_with_positive_acc_budget() @@ -552,7 +552,7 @@ def configure_optimizers_fn(): early_stopping_training_loop = EarlyExitCompressionTrainingLoop( config, compression_ctrl, uncompressed_model_accuracy=original_metric, dump_checkpoints=False ) - assert early_stopping_training_loop.runner._best_checkpoint is None # pylint: disable=protected-access + assert early_stopping_training_loop.runner._best_checkpoint is None model = early_stopping_training_loop.run( model, @@ -560,7 +560,7 @@ def configure_optimizers_fn(): validate_fn=partial(mock_validate_fn, init_step=False), configure_optimizers_fn=configure_optimizers_fn, ) - assert early_stopping_training_loop.runner._best_checkpoint is not None # pylint: disable=protected-access + assert early_stopping_training_loop.runner._best_checkpoint is not None @pytest.mark.parametrize( diff --git a/tests/torch/binarization/test_timeout_extension_loader.py b/tests/torch/binarization/test_timeout_extension_loader.py index 7f74c511b0b..5aeccbcf9e6 100644 --- a/tests/torch/binarization/test_timeout_extension_loader.py +++ b/tests/torch/binarization/test_timeout_extension_loader.py @@ -33,7 +33,6 @@ def test_timeout_extension_loader_isolated(tmp_path, use_cuda): os.environ[EXTENSION_LOAD_TIMEOUT_ENV_VAR] = "1" os.environ["TORCH_EXTENSIONS_DIR"] = tmp_path.as_posix() - # pylint: disable=protected-access build_dir = Path(quant_func._loader.get_build_dir()) lock_file = build_dir / "lock" lock_file.touch() diff --git a/tests/torch/conftest.py b/tests/torch/conftest.py index 390af04bf7c..a75b519847a 100644 --- a/tests/torch/conftest.py +++ b/tests/torch/conftest.py @@ -15,13 +15,13 @@ try: import torch -except: # pylint: disable=bare-except # noqa: E722 +except: # noqa: E722 torch = None from nncf.common.quantization.structs import QuantizationMode from tests.shared.case_collection import COMMON_SCOPE_MARKS_VS_OPTIONS from tests.shared.case_collection import skip_marked_cases_if_options_not_specified -from tests.shared.install_fixtures import tmp_venv_with_nncf # pylint:disable=unused-import # noqa: F401 -from tests.shared.logging import nncf_caplog # pylint:disable=unused-import # noqa: F401 +from tests.shared.install_fixtures import tmp_venv_with_nncf # noqa: F401 +from tests.shared.logging import nncf_caplog # noqa: F401 pytest.register_assert_rewrite("tests.torch.helpers") @@ -242,7 +242,7 @@ def runs_subprocess_in_precommit(): # memory which has not been cached (and thus remains reserved) in the owning pytest process by PyTorch, # and the tests below may fail with an OOM. To avoid this, need to call torch.cuda.empty_cache() # each time a GPU-powered subprocess is executed during a test. - # pylint: disable=W0702,W0621 + try: import torch diff --git a/tests/torch/data/reference_graphs/quantized/ptq/symmetric/mobilenet_v3_small.dot b/tests/torch/data/reference_graphs/quantized/ptq/symmetric/mobilenet_v3_small.dot index c922641d1e1..41264e4a2b3 100644 --- a/tests/torch/data/reference_graphs/quantized/ptq/symmetric/mobilenet_v3_small.dot +++ b/tests/torch/data/reference_graphs/quantized/ptq/symmetric/mobilenet_v3_small.dot @@ -12,285 +12,249 @@ strict digraph { "10 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" [id=10, type=relu_]; "11 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=11, type=symmetric_quantize]; "12 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/adaptive_avg_pool2d_0" [id=12, type=adaptive_avg_pool2d]; -"13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0" [id=13, type=symmetric_quantize]; -"14 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=14, type=symmetric_quantize]; -"15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0" [id=15, type=conv2d]; -"16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0" [id=16, type=relu_]; -"17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=17, type=symmetric_quantize]; -"18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=18, type=symmetric_quantize]; -"19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0" [id=19, type=conv2d]; -"20 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0" [id=20, type=hardsigmoid]; -"21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1" [id=21, type=symmetric_quantize]; -"22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0" [id=22, type=__mul__]; -"23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_2" [id=23, type=symmetric_quantize]; -"24 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=24, type=symmetric_quantize]; -"25 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=25, type=conv2d]; -"26 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=26, type=batch_norm]; -"27 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=27, type=symmetric_quantize]; -"28 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=28, type=symmetric_quantize]; -"29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=29, type=conv2d]; -"30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=30, type=batch_norm]; -"31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" [id=31, type=relu_]; -"32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=32, type=symmetric_quantize]; -"33 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=33, type=symmetric_quantize]; -"34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=34, type=conv2d]; -"35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=35, type=batch_norm]; -"36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" [id=36, type=relu_]; -"37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=37, type=symmetric_quantize]; -"38 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=38, type=symmetric_quantize]; -"39 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=39, type=conv2d]; -"40 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=40, type=batch_norm]; -"41 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=41, type=symmetric_quantize]; -"42 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=42, type=symmetric_quantize]; -"43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=43, type=conv2d]; -"44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=44, type=batch_norm]; -"45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" [id=45, type=relu_]; -"46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=46, type=symmetric_quantize]; -"47 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=47, type=symmetric_quantize]; -"48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=48, type=conv2d]; -"49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=49, type=batch_norm]; -"50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" [id=50, type=relu_]; -"51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=51, type=symmetric_quantize]; -"52 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=52, type=symmetric_quantize]; -"53 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=53, type=conv2d]; -"54 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=54, type=batch_norm]; -"55 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=55, type=symmetric_quantize]; -"56 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0" [id=56, type=__iadd__]; -"57 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0" [id=57, type=symmetric_quantize]; -"58 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=58, type=symmetric_quantize]; -"59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=59, type=conv2d]; -"60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=60, type=batch_norm]; -"61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=61, type=hardswish]; -"62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=62, type=symmetric_quantize]; -"63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=63, type=symmetric_quantize]; -"64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=64, type=conv2d]; -"65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=65, type=batch_norm]; -"66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=66, type=hardswish]; -"67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=67, type=symmetric_quantize]; -"68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=68, type=adaptive_avg_pool2d]; +"13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0" [id=13, type=conv2d]; +"14 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0" [id=14, type=relu_]; +"15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0" [id=15, type=conv2d]; +"16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0" [id=16, type=hardsigmoid]; +"17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0" [id=17, type=symmetric_quantize]; +"18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0" [id=18, type=__mul__]; +"19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1" [id=19, type=symmetric_quantize]; +"20 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=20, type=symmetric_quantize]; +"21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=21, type=conv2d]; +"22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=22, type=batch_norm]; +"23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=23, type=symmetric_quantize]; +"24 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=24, type=symmetric_quantize]; +"25 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=25, type=conv2d]; +"26 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=26, type=batch_norm]; +"27 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" [id=27, type=relu_]; +"28 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=28, type=symmetric_quantize]; +"29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=29, type=symmetric_quantize]; +"30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=30, type=conv2d]; +"31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=31, type=batch_norm]; +"32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" [id=32, type=relu_]; +"33 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=33, type=symmetric_quantize]; +"34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=34, type=symmetric_quantize]; +"35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=35, type=conv2d]; +"36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=36, type=batch_norm]; +"37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=37, type=symmetric_quantize]; +"38 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=38, type=symmetric_quantize]; +"39 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=39, type=conv2d]; +"40 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=40, type=batch_norm]; +"41 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" [id=41, type=relu_]; +"42 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=42, type=symmetric_quantize]; +"43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=43, type=symmetric_quantize]; +"44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=44, type=conv2d]; +"45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=45, type=batch_norm]; +"46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" [id=46, type=relu_]; +"47 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" [id=47, type=symmetric_quantize]; +"48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=48, type=symmetric_quantize]; +"49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" [id=49, type=conv2d]; +"50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" [id=50, type=batch_norm]; +"51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=51, type=symmetric_quantize]; +"52 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0" [id=52, type=__iadd__]; +"53 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0" [id=53, type=symmetric_quantize]; +"54 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=54, type=symmetric_quantize]; +"55 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=55, type=conv2d]; +"56 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=56, type=batch_norm]; +"57 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=57, type=hardswish]; +"58 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=58, type=symmetric_quantize]; +"59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=59, type=symmetric_quantize]; +"60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=60, type=conv2d]; +"61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=61, type=batch_norm]; +"62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=62, type=hardswish]; +"63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=63, type=symmetric_quantize]; +"64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=64, type=adaptive_avg_pool2d]; +"65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=65, type=conv2d]; +"66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=66, type=relu_]; +"67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=67, type=conv2d]; +"68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=68, type=hardsigmoid]; "69 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=69, type=symmetric_quantize]; -"70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=70, type=symmetric_quantize]; -"71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=71, type=conv2d]; -"72 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=72, type=relu_]; -"73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=73, type=symmetric_quantize]; -"74 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=74, type=symmetric_quantize]; -"75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=75, type=conv2d]; -"76 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=76, type=hardsigmoid]; -"77 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=77, type=symmetric_quantize]; -"78 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=78, type=__mul__]; -"79 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=79, type=symmetric_quantize]; -"80 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=80, type=symmetric_quantize]; -"81 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=81, type=conv2d]; -"82 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=82, type=batch_norm]; -"83 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=83, type=symmetric_quantize]; -"84 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=84, type=symmetric_quantize]; -"85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=85, type=conv2d]; -"86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=86, type=batch_norm]; -"87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=87, type=hardswish]; -"88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=88, type=symmetric_quantize]; -"89 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=89, type=symmetric_quantize]; -"90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=90, type=conv2d]; -"91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=91, type=batch_norm]; -"92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=92, type=hardswish]; -"93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=93, type=symmetric_quantize]; -"94 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=94, type=adaptive_avg_pool2d]; -"95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=95, type=symmetric_quantize]; -"96 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=96, type=symmetric_quantize]; -"97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=97, type=conv2d]; -"98 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=98, type=relu_]; -"99 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=99, type=symmetric_quantize]; -"100 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=100, type=symmetric_quantize]; -"101 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=101, type=conv2d]; -"102 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=102, type=hardsigmoid]; -"103 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=103, type=symmetric_quantize]; -"104 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=104, type=__mul__]; -"105 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=105, type=symmetric_quantize]; -"106 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=106, type=symmetric_quantize]; -"107 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=107, type=conv2d]; -"108 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=108, type=batch_norm]; -"109 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=109, type=symmetric_quantize]; -"110 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0" [id=110, type=__iadd__]; -"111 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" [id=111, type=symmetric_quantize]; -"112 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=112, type=symmetric_quantize]; -"113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=113, type=conv2d]; -"114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=114, type=batch_norm]; -"115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=115, type=hardswish]; -"116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=116, type=symmetric_quantize]; -"117 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=117, type=symmetric_quantize]; -"118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=118, type=conv2d]; -"119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=119, type=batch_norm]; -"120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=120, type=hardswish]; -"121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=121, type=symmetric_quantize]; -"122 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=122, type=adaptive_avg_pool2d]; -"123 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=123, type=symmetric_quantize]; -"124 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=124, type=symmetric_quantize]; -"125 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=125, type=conv2d]; -"126 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=126, type=relu_]; -"127 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=127, type=symmetric_quantize]; -"128 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=128, type=symmetric_quantize]; -"129 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=129, type=conv2d]; -"130 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=130, type=hardsigmoid]; -"131 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=131, type=symmetric_quantize]; -"132 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=132, type=__mul__]; -"133 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=133, type=symmetric_quantize]; -"134 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=134, type=symmetric_quantize]; -"135 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=135, type=conv2d]; -"136 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=136, type=batch_norm]; -"137 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=137, type=symmetric_quantize]; -"138 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0" [id=138, type=__iadd__]; -"139 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0" [id=139, type=symmetric_quantize]; -"140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=140, type=symmetric_quantize]; -"141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=141, type=conv2d]; -"142 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=142, type=batch_norm]; -"143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=143, type=hardswish]; -"144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=144, type=symmetric_quantize]; -"145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=145, type=symmetric_quantize]; -"146 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=146, type=conv2d]; -"147 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=147, type=batch_norm]; -"148 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=148, type=hardswish]; -"149 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=149, type=symmetric_quantize]; -"150 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=150, type=adaptive_avg_pool2d]; -"151 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=151, type=symmetric_quantize]; -"152 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=152, type=symmetric_quantize]; -"153 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=153, type=conv2d]; -"154 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=154, type=relu_]; -"155 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=155, type=symmetric_quantize]; -"156 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=156, type=symmetric_quantize]; -"157 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=157, type=conv2d]; -"158 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=158, type=hardsigmoid]; -"159 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=159, type=symmetric_quantize]; -"160 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=160, type=__mul__]; -"161 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=161, type=symmetric_quantize]; -"162 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=162, type=symmetric_quantize]; -"163 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=163, type=conv2d]; -"164 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=164, type=batch_norm]; -"165 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=165, type=symmetric_quantize]; -"166 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=166, type=symmetric_quantize]; -"167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=167, type=conv2d]; -"168 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=168, type=batch_norm]; -"169 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=169, type=hardswish]; -"170 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=170, type=symmetric_quantize]; -"171 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=171, type=symmetric_quantize]; -"172 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=172, type=conv2d]; -"173 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=173, type=batch_norm]; -"174 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=174, type=hardswish]; -"175 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=175, type=symmetric_quantize]; -"176 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=176, type=adaptive_avg_pool2d]; -"177 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=177, type=symmetric_quantize]; -"178 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=178, type=symmetric_quantize]; -"179 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=179, type=conv2d]; -"180 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=180, type=relu_]; -"181 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=181, type=symmetric_quantize]; -"182 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=182, type=symmetric_quantize]; -"183 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=183, type=conv2d]; -"184 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=184, type=hardsigmoid]; -"185 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=185, type=symmetric_quantize]; -"186 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=186, type=__mul__]; -"187 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=187, type=symmetric_quantize]; -"188 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=188, type=symmetric_quantize]; -"189 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=189, type=conv2d]; -"190 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=190, type=batch_norm]; -"191 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=191, type=symmetric_quantize]; -"192 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0" [id=192, type=__iadd__]; -"193 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0" [id=193, type=symmetric_quantize]; -"194 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=194, type=symmetric_quantize]; -"195 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=195, type=conv2d]; -"196 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=196, type=batch_norm]; -"197 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=197, type=hardswish]; -"198 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=198, type=symmetric_quantize]; -"199 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=199, type=symmetric_quantize]; -"200 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=200, type=conv2d]; -"201 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=201, type=batch_norm]; -"202 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=202, type=hardswish]; -"203 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=203, type=symmetric_quantize]; -"204 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=204, type=adaptive_avg_pool2d]; -"205 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=205, type=symmetric_quantize]; -"206 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=206, type=symmetric_quantize]; -"207 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=207, type=conv2d]; -"208 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=208, type=relu_]; -"209 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=209, type=symmetric_quantize]; -"210 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=210, type=symmetric_quantize]; -"211 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=211, type=conv2d]; -"212 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=212, type=hardsigmoid]; -"213 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=213, type=symmetric_quantize]; -"214 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=214, type=__mul__]; -"215 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=215, type=symmetric_quantize]; -"216 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=216, type=symmetric_quantize]; -"217 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=217, type=conv2d]; -"218 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=218, type=batch_norm]; -"219 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=219, type=symmetric_quantize]; -"220 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=220, type=symmetric_quantize]; -"221 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=221, type=conv2d]; -"222 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=222, type=batch_norm]; -"223 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=223, type=hardswish]; -"224 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=224, type=symmetric_quantize]; -"225 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=225, type=symmetric_quantize]; -"226 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=226, type=conv2d]; -"227 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=227, type=batch_norm]; -"228 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=228, type=hardswish]; -"229 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=229, type=symmetric_quantize]; -"230 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=230, type=adaptive_avg_pool2d]; -"231 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=231, type=symmetric_quantize]; -"232 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=232, type=symmetric_quantize]; -"233 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=233, type=conv2d]; -"234 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=234, type=relu_]; -"235 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=235, type=symmetric_quantize]; -"236 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=236, type=symmetric_quantize]; -"237 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=237, type=conv2d]; -"238 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=238, type=hardsigmoid]; -"239 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=239, type=symmetric_quantize]; -"240 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=240, type=__mul__]; -"241 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=241, type=symmetric_quantize]; -"242 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=242, type=symmetric_quantize]; -"243 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=243, type=conv2d]; -"244 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=244, type=batch_norm]; -"245 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=245, type=symmetric_quantize]; -"246 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0" [id=246, type=__iadd__]; -"247 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" [id=247, type=symmetric_quantize]; -"248 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=248, type=symmetric_quantize]; -"249 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=249, type=conv2d]; -"250 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=250, type=batch_norm]; -"251 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=251, type=hardswish]; -"252 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=252, type=symmetric_quantize]; -"253 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=253, type=symmetric_quantize]; -"254 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=254, type=conv2d]; -"255 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=255, type=batch_norm]; -"256 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=256, type=hardswish]; -"257 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=257, type=symmetric_quantize]; -"258 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=258, type=adaptive_avg_pool2d]; -"259 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=259, type=symmetric_quantize]; -"260 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=260, type=symmetric_quantize]; -"261 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=261, type=conv2d]; -"262 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=262, type=relu_]; -"263 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" [id=263, type=symmetric_quantize]; -"264 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=264, type=symmetric_quantize]; -"265 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=265, type=conv2d]; -"266 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=266, type=hardsigmoid]; -"267 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=267, type=symmetric_quantize]; -"268 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=268, type=__mul__]; -"269 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" [id=269, type=symmetric_quantize]; -"270 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=270, type=symmetric_quantize]; -"271 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=271, type=conv2d]; -"272 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=272, type=batch_norm]; -"273 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=273, type=symmetric_quantize]; -"274 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0" [id=274, type=__iadd__]; -"275 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0" [id=275, type=symmetric_quantize]; -"276 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=276, type=symmetric_quantize]; -"277 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0" [id=277, type=conv2d]; -"278 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0" [id=278, type=batch_norm]; -"279 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0" [id=279, type=hardswish]; -"280 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=280, type=symmetric_quantize]; -"281 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0" [id=281, type=adaptive_avg_pool2d]; -"282 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0" [id=282, type=symmetric_quantize]; -"283 MobileNetV3/flatten_0" [id=283, type=flatten]; -"284 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=284, type=symmetric_quantize]; -"285 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0" [id=285, type=linear]; -"286 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0" [id=286, type=hardswish]; -"287 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0" [id=287, type=symmetric_quantize]; -"288 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0" [id=288, type=dropout]; -"289 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=289, type=symmetric_quantize]; -"290 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0" [id=290, type=linear]; -"291 /nncf_model_output_0" [id=291, type=nncf_model_output]; +"70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=70, type=__mul__]; +"71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=71, type=symmetric_quantize]; +"72 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=72, type=symmetric_quantize]; +"73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=73, type=conv2d]; +"74 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=74, type=batch_norm]; +"75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=75, type=symmetric_quantize]; +"76 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=76, type=symmetric_quantize]; +"77 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=77, type=conv2d]; +"78 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=78, type=batch_norm]; +"79 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=79, type=hardswish]; +"80 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=80, type=symmetric_quantize]; +"81 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=81, type=symmetric_quantize]; +"82 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=82, type=conv2d]; +"83 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=83, type=batch_norm]; +"84 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=84, type=hardswish]; +"85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=85, type=symmetric_quantize]; +"86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=86, type=adaptive_avg_pool2d]; +"87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=87, type=conv2d]; +"88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=88, type=relu_]; +"89 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=89, type=conv2d]; +"90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=90, type=hardsigmoid]; +"91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=91, type=symmetric_quantize]; +"92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=92, type=__mul__]; +"93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=93, type=symmetric_quantize]; +"94 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=94, type=symmetric_quantize]; +"95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=95, type=conv2d]; +"96 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=96, type=batch_norm]; +"97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=97, type=symmetric_quantize]; +"98 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0" [id=98, type=__iadd__]; +"99 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" [id=99, type=symmetric_quantize]; +"100 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=100, type=symmetric_quantize]; +"101 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=101, type=conv2d]; +"102 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=102, type=batch_norm]; +"103 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=103, type=hardswish]; +"104 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=104, type=symmetric_quantize]; +"105 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=105, type=symmetric_quantize]; +"106 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=106, type=conv2d]; +"107 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=107, type=batch_norm]; +"108 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=108, type=hardswish]; +"109 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=109, type=symmetric_quantize]; +"110 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=110, type=adaptive_avg_pool2d]; +"111 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=111, type=conv2d]; +"112 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=112, type=relu_]; +"113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=113, type=conv2d]; +"114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=114, type=hardsigmoid]; +"115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=115, type=symmetric_quantize]; +"116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=116, type=__mul__]; +"117 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=117, type=symmetric_quantize]; +"118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=118, type=symmetric_quantize]; +"119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=119, type=conv2d]; +"120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=120, type=batch_norm]; +"121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=121, type=symmetric_quantize]; +"122 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0" [id=122, type=__iadd__]; +"123 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0" [id=123, type=symmetric_quantize]; +"124 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=124, type=symmetric_quantize]; +"125 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=125, type=conv2d]; +"126 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=126, type=batch_norm]; +"127 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=127, type=hardswish]; +"128 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=128, type=symmetric_quantize]; +"129 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=129, type=symmetric_quantize]; +"130 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=130, type=conv2d]; +"131 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=131, type=batch_norm]; +"132 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=132, type=hardswish]; +"133 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=133, type=symmetric_quantize]; +"134 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=134, type=adaptive_avg_pool2d]; +"135 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=135, type=conv2d]; +"136 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=136, type=relu_]; +"137 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=137, type=conv2d]; +"138 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=138, type=hardsigmoid]; +"139 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=139, type=symmetric_quantize]; +"140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=140, type=__mul__]; +"141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=141, type=symmetric_quantize]; +"142 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=142, type=symmetric_quantize]; +"143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=143, type=conv2d]; +"144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=144, type=batch_norm]; +"145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=145, type=symmetric_quantize]; +"146 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=146, type=symmetric_quantize]; +"147 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=147, type=conv2d]; +"148 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=148, type=batch_norm]; +"149 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=149, type=hardswish]; +"150 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=150, type=symmetric_quantize]; +"151 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=151, type=symmetric_quantize]; +"152 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=152, type=conv2d]; +"153 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=153, type=batch_norm]; +"154 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=154, type=hardswish]; +"155 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=155, type=symmetric_quantize]; +"156 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=156, type=adaptive_avg_pool2d]; +"157 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=157, type=conv2d]; +"158 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=158, type=relu_]; +"159 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=159, type=conv2d]; +"160 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=160, type=hardsigmoid]; +"161 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=161, type=symmetric_quantize]; +"162 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=162, type=__mul__]; +"163 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=163, type=symmetric_quantize]; +"164 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=164, type=symmetric_quantize]; +"165 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=165, type=conv2d]; +"166 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=166, type=batch_norm]; +"167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=167, type=symmetric_quantize]; +"168 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0" [id=168, type=__iadd__]; +"169 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0" [id=169, type=symmetric_quantize]; +"170 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=170, type=symmetric_quantize]; +"171 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=171, type=conv2d]; +"172 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=172, type=batch_norm]; +"173 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=173, type=hardswish]; +"174 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=174, type=symmetric_quantize]; +"175 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=175, type=symmetric_quantize]; +"176 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=176, type=conv2d]; +"177 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=177, type=batch_norm]; +"178 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=178, type=hardswish]; +"179 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=179, type=symmetric_quantize]; +"180 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=180, type=adaptive_avg_pool2d]; +"181 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=181, type=conv2d]; +"182 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=182, type=relu_]; +"183 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=183, type=conv2d]; +"184 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=184, type=hardsigmoid]; +"185 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=185, type=symmetric_quantize]; +"186 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=186, type=__mul__]; +"187 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=187, type=symmetric_quantize]; +"188 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=188, type=symmetric_quantize]; +"189 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=189, type=conv2d]; +"190 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=190, type=batch_norm]; +"191 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=191, type=symmetric_quantize]; +"192 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=192, type=symmetric_quantize]; +"193 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=193, type=conv2d]; +"194 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=194, type=batch_norm]; +"195 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=195, type=hardswish]; +"196 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=196, type=symmetric_quantize]; +"197 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=197, type=symmetric_quantize]; +"198 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=198, type=conv2d]; +"199 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=199, type=batch_norm]; +"200 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=200, type=hardswish]; +"201 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=201, type=symmetric_quantize]; +"202 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=202, type=adaptive_avg_pool2d]; +"203 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=203, type=conv2d]; +"204 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=204, type=relu_]; +"205 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=205, type=conv2d]; +"206 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=206, type=hardsigmoid]; +"207 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=207, type=symmetric_quantize]; +"208 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=208, type=__mul__]; +"209 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=209, type=symmetric_quantize]; +"210 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=210, type=symmetric_quantize]; +"211 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=211, type=conv2d]; +"212 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=212, type=batch_norm]; +"213 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=213, type=symmetric_quantize]; +"214 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0" [id=214, type=__iadd__]; +"215 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" [id=215, type=symmetric_quantize]; +"216 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=216, type=symmetric_quantize]; +"217 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" [id=217, type=conv2d]; +"218 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" [id=218, type=batch_norm]; +"219 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" [id=219, type=hardswish]; +"220 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=220, type=symmetric_quantize]; +"221 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=221, type=symmetric_quantize]; +"222 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" [id=222, type=conv2d]; +"223 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" [id=223, type=batch_norm]; +"224 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" [id=224, type=hardswish]; +"225 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=225, type=symmetric_quantize]; +"226 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" [id=226, type=adaptive_avg_pool2d]; +"227 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" [id=227, type=conv2d]; +"228 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" [id=228, type=relu_]; +"229 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" [id=229, type=conv2d]; +"230 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" [id=230, type=hardsigmoid]; +"231 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" [id=231, type=symmetric_quantize]; +"232 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0" [id=232, type=__mul__]; +"233 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" [id=233, type=symmetric_quantize]; +"234 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=234, type=symmetric_quantize]; +"235 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" [id=235, type=conv2d]; +"236 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" [id=236, type=batch_norm]; +"237 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" [id=237, type=symmetric_quantize]; +"238 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0" [id=238, type=__iadd__]; +"239 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0" [id=239, type=symmetric_quantize]; +"240 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=240, type=symmetric_quantize]; +"241 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0" [id=241, type=conv2d]; +"242 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0" [id=242, type=batch_norm]; +"243 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0" [id=243, type=hardswish]; +"244 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" [id=244, type=symmetric_quantize]; +"245 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0" [id=245, type=adaptive_avg_pool2d]; +"246 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0" [id=246, type=symmetric_quantize]; +"247 MobileNetV3/flatten_0" [id=247, type=flatten]; +"248 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=248, type=symmetric_quantize]; +"249 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0" [id=249, type=linear]; +"250 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0" [id=250, type=hardswish]; +"251 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0" [id=251, type=symmetric_quantize]; +"252 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0" [id=252, type=dropout]; +"253 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" [id=253, type=symmetric_quantize]; +"254 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0" [id=254, type=linear]; +"255 /nncf_model_output_0" [id=255, type=nncf_model_output]; "0 /nncf_model_input_0" -> "1 SymmetricQuantizer/symmetric_quantize_0"; "1 SymmetricQuantizer/symmetric_quantize_0" -> "3 MobileNetV3/Sequential[features]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; "2 MobileNetV3/Sequential[features]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "3 MobileNetV3/Sequential[features]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; @@ -303,298 +267,262 @@ strict digraph { "9 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "10 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0"; "10 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" -> "11 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; "11 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "12 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/adaptive_avg_pool2d_0"; -"11 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0"; -"12 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/adaptive_avg_pool2d_0" -> "13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0"; -"13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0" -> "15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0"; -"14 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0"; -"15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0" -> "16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0"; -"16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0" -> "17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0"; -"18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0"; -"19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0" -> "20 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0"; -"20 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0" -> "21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1"; -"21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1" -> "22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0"; -"22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0" -> "23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_2"; -"23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_2" -> "25 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"24 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "25 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"25 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "26 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; -"26 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "27 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"27 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"28 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0"; -"31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" -> "32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; -"32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"33 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0"; -"36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" -> "37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; -"37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "39 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"38 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "39 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"39 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "40 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; -"40 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "41 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"41 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"41 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "56 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0"; -"42 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0"; -"45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" -> "46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; -"46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"47 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0"; -"50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" -> "51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; -"51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "53 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"52 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "53 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; -"53 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "54 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; -"54 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "55 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"55 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "56 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0"; -"56 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0" -> "57 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0"; -"57 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0" -> "59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"58 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "78 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "69 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"69 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "72 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"72 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"74 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "76 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"76 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "77 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"77 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "78 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"78 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "79 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"79 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "81 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"80 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "81 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"81 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "82 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"82 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "83 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"83 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"83 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "110 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0"; -"84 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"89 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "94 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "104 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"94 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"96 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "98 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"98 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "99 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"99 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "101 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"100 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "101 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"101 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "102 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"102 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "103 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"103 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "104 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"104 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "105 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"105 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "107 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"106 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "107 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"107 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "108 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"108 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "109 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"109 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "110 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0"; -"110 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0" -> "111 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0"; -"111 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" -> "113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"111 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" -> "138 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0"; -"112 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"117 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "122 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "132 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"122 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "123 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"123 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "125 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"124 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "125 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"125 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "126 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"126 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "127 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"127 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "129 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"128 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "129 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"129 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "130 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"130 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "131 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"131 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "132 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"132 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "133 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"133 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "135 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"134 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "135 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"135 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "136 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"136 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "137 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"137 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "138 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0"; -"138 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0" -> "139 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0"; -"139 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0" -> "141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "142 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"142 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "146 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "146 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"146 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "147 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"147 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "148 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"148 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "149 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"149 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "150 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"149 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "160 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"150 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "151 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"151 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "153 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"152 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "153 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"153 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "154 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"154 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "155 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"155 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "157 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"156 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "157 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"157 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "158 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"158 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "159 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"159 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "160 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"160 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "161 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"161 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "163 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"162 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "163 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"163 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "164 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"164 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "165 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"165 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"165 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "192 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0"; -"166 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "168 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"168 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "169 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"169 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "170 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"170 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "172 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"171 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "172 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"172 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "173 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"173 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "174 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"174 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "175 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"175 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "176 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"175 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "186 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"176 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "177 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"177 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "179 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"178 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "179 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"179 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "180 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"180 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "181 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"181 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "183 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"182 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "183 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"183 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "184 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"184 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "185 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"185 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "186 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"186 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "187 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"187 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "189 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"188 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "189 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"189 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "190 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"190 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "191 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"191 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "192 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0"; -"192 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0" -> "193 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0"; -"193 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0" -> "195 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"194 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "195 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"195 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "196 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"196 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "197 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"197 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "198 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"198 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "200 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"199 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "200 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"200 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "201 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"201 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "202 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"202 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "203 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"203 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "204 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"203 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "214 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"204 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "205 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"205 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "207 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"206 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "207 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"207 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "208 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"208 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "209 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"209 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "211 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"210 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "211 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"211 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "212 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"212 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "213 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"213 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "214 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"214 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "215 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"215 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "217 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"216 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "217 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"217 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "218 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"218 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "219 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"219 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "221 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"219 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "246 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0"; -"220 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "221 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"221 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "222 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"222 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "223 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"223 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "224 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"224 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "226 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"225 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "226 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"226 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "227 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"227 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "228 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"228 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "229 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"229 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "230 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"229 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "240 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"230 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "231 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"231 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "233 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"232 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "233 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"233 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "234 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"234 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "235 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"235 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "237 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"236 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "237 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"237 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "238 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"238 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "239 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"239 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "240 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"240 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "241 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"241 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "243 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"242 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "243 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"243 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "244 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"244 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "245 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"245 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "246 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0"; -"246 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0" -> "247 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0"; -"247 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" -> "249 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"247 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" -> "274 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0"; -"248 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "249 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; -"249 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "250 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; -"250 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "251 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; -"251 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "252 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"252 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "254 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"253 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "254 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; -"254 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "255 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; -"255 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "256 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; -"256 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "257 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"257 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "258 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; -"257 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "268 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"258 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "259 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; -"259 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "261 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"260 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "261 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; -"261 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "262 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; -"262 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "263 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0"; -"263 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/SymmetricQuantizer/symmetric_quantize_0" -> "265 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"264 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "265 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; -"265 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "266 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; -"266 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "267 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; -"267 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "268 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; -"268 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "269 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2"; -"269 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_2" -> "271 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"270 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "271 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; -"271 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "272 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; -"272 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "273 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; -"273 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "274 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0"; -"274 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0" -> "275 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0"; -"275 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0" -> "277 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0"; -"276 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "277 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0"; -"277 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0" -> "278 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0"; -"278 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0" -> "279 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0"; -"279 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0" -> "280 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; -"280 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "281 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0"; -"281 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0" -> "282 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0"; -"282 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0" -> "283 MobileNetV3/flatten_0"; -"283 MobileNetV3/flatten_0" -> "285 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0"; -"284 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "285 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0"; -"285 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0" -> "286 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0"; -"286 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0" -> "287 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0"; -"287 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0" -> "288 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0"; -"288 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0" -> "290 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0"; -"289 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "290 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0"; -"290 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0" -> "291 /nncf_model_output_0"; +"11 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0"; +"12 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/adaptive_avg_pool2d_0" -> "13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0"; +"13 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc1]/conv2d_0" -> "14 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0"; +"14 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/ReLU[relu]/relu__0" -> "15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0"; +"15 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/NNCFConv2d[fc2]/conv2d_0" -> "16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0"; +"16 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/hardsigmoid_0" -> "17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0"; +"17 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_0" -> "18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0"; +"18 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/__mul___0" -> "19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1"; +"19 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/SqueezeExcitation[1]/SymmetricQuantizer/symmetric_quantize_1" -> "21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"20 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"21 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; +"22 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"23 MobileNetV3/Sequential[features]/InvertedResidual[1]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "25 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"24 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "25 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"25 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "26 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"26 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "27 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0"; +"27 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" -> "28 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; +"28 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"29 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"30 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"31 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0"; +"32 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" -> "33 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; +"33 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"34 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"35 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; +"36 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "39 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"37 MobileNetV3/Sequential[features]/InvertedResidual[2]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "52 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0"; +"38 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "39 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"39 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "40 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"40 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "41 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0"; +"41 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/relu__0" -> "42 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; +"42 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[0]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"43 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"44 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"45 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0"; +"46 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/relu__0" -> "47 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0"; +"47 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[1]/ReLU[2]/SymmetricQuantizer/symmetric_quantize_0" -> "49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"48 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0"; +"49 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFConv2d[0]/conv2d_0" -> "50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0"; +"50 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/batch_norm_0" -> "51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"51 MobileNetV3/Sequential[features]/InvertedResidual[3]/Sequential[block]/ConvBNActivation[2]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "52 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0"; +"52 MobileNetV3/Sequential[features]/InvertedResidual[3]/__iadd___0" -> "53 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0"; +"53 MobileNetV3/Sequential[features]/InvertedResidual[3]/SymmetricQuantizer/symmetric_quantize_0" -> "55 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"54 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "55 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"55 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "56 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"56 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "57 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"57 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "58 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"58 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"59 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"60 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"61 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"62 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"63 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"64 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"65 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"66 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"67 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"68 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "69 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"69 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"70 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"71 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"72 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"73 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "74 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"74 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "77 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"75 MobileNetV3/Sequential[features]/InvertedResidual[4]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "98 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0"; +"76 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "77 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"77 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "78 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"78 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "79 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"79 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "80 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"80 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "82 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"81 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "82 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"82 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "83 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"83 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "84 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"84 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"85 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"86 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"87 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"88 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "89 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"89 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"90 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"91 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"92 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"93 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"94 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"95 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "96 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"96 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"97 MobileNetV3/Sequential[features]/InvertedResidual[5]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "98 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0"; +"98 MobileNetV3/Sequential[features]/InvertedResidual[5]/__iadd___0" -> "99 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0"; +"99 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" -> "101 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"99 MobileNetV3/Sequential[features]/InvertedResidual[5]/SymmetricQuantizer/symmetric_quantize_0" -> "122 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0"; +"100 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "101 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"101 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "102 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"102 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "103 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"103 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "104 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"104 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "106 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"105 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "106 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"106 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "107 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"107 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "108 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"108 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "109 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"109 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "110 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"109 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"110 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "111 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"111 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "112 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"112 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"113 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"114 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"115 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"116 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "117 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"117 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"118 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"119 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"120 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"121 MobileNetV3/Sequential[features]/InvertedResidual[6]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "122 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0"; +"122 MobileNetV3/Sequential[features]/InvertedResidual[6]/__iadd___0" -> "123 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0"; +"123 MobileNetV3/Sequential[features]/InvertedResidual[6]/SymmetricQuantizer/symmetric_quantize_0" -> "125 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"124 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "125 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"125 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "126 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"126 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "127 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"127 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "128 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"128 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "130 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"129 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "130 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"130 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "131 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"131 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "132 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"132 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "133 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"133 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "134 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"133 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"134 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "135 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"135 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "136 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"136 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "137 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"137 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "138 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"138 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "139 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"139 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"140 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"141 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"142 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"143 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"144 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "147 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"145 MobileNetV3/Sequential[features]/InvertedResidual[7]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "168 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0"; +"146 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "147 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"147 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "148 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"148 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "149 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"149 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "150 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"150 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "152 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"151 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "152 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"152 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "153 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"153 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "154 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"154 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "155 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"155 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "156 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"155 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "162 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"156 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "157 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"157 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "158 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"158 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "159 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"159 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "160 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"160 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "161 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"161 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "162 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"162 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "163 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"163 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "165 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"164 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "165 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"165 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "166 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"166 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"167 MobileNetV3/Sequential[features]/InvertedResidual[8]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "168 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0"; +"168 MobileNetV3/Sequential[features]/InvertedResidual[8]/__iadd___0" -> "169 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0"; +"169 MobileNetV3/Sequential[features]/InvertedResidual[8]/SymmetricQuantizer/symmetric_quantize_0" -> "171 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"170 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "171 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"171 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "172 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"172 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "173 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"173 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "174 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"174 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "176 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"175 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "176 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"176 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "177 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"177 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "178 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"178 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "179 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"179 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "180 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"179 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "186 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"180 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "181 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"181 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "182 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"182 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "183 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"183 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "184 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"184 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "185 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"185 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "186 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"186 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "187 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"187 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "189 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"188 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "189 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"189 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "190 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"190 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "191 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"191 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "193 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"191 MobileNetV3/Sequential[features]/InvertedResidual[9]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "214 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0"; +"192 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "193 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"193 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "194 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"194 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "195 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"195 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "196 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"196 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "198 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"197 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "198 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"198 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "199 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"199 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "200 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"200 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "201 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"201 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "202 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"201 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "208 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"202 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "203 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"203 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "204 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"204 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "205 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"205 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "206 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"206 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "207 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"207 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "208 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"208 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "209 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"209 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "211 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"210 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "211 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"211 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "212 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"212 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "213 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"213 MobileNetV3/Sequential[features]/InvertedResidual[10]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "214 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0"; +"214 MobileNetV3/Sequential[features]/InvertedResidual[10]/__iadd___0" -> "215 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0"; +"215 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" -> "217 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"215 MobileNetV3/Sequential[features]/InvertedResidual[10]/SymmetricQuantizer/symmetric_quantize_0" -> "238 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0"; +"216 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "217 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0"; +"217 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFConv2d[0]/conv2d_0" -> "218 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0"; +"218 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/NNCFBatchNorm2d[1]/batch_norm_0" -> "219 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0"; +"219 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/hardswish_0" -> "220 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"220 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[0]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "222 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"221 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "222 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0"; +"222 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFConv2d[0]/conv2d_0" -> "223 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0"; +"223 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/NNCFBatchNorm2d[1]/batch_norm_0" -> "224 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0"; +"224 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/hardswish_0" -> "225 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"225 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "226 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0"; +"225 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[1]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "232 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"226 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/adaptive_avg_pool2d_0" -> "227 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0"; +"227 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc1]/conv2d_0" -> "228 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0"; +"228 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/ReLU[relu]/relu__0" -> "229 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0"; +"229 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/NNCFConv2d[fc2]/conv2d_0" -> "230 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0"; +"230 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/hardsigmoid_0" -> "231 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0"; +"231 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_0" -> "232 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0"; +"232 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/__mul___0" -> "233 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1"; +"233 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/SqueezeExcitation[2]/SymmetricQuantizer/symmetric_quantize_1" -> "235 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"234 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "235 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0"; +"235 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFConv2d[0]/conv2d_0" -> "236 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0"; +"236 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/batch_norm_0" -> "237 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0"; +"237 MobileNetV3/Sequential[features]/InvertedResidual[11]/Sequential[block]/ConvBNActivation[3]/NNCFBatchNorm2d[1]/SymmetricQuantizer/symmetric_quantize_0" -> "238 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0"; +"238 MobileNetV3/Sequential[features]/InvertedResidual[11]/__iadd___0" -> "239 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0"; +"239 MobileNetV3/Sequential[features]/InvertedResidual[11]/SymmetricQuantizer/symmetric_quantize_0" -> "241 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0"; +"240 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "241 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0"; +"241 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFConv2d[0]/conv2d_0" -> "242 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0"; +"242 MobileNetV3/Sequential[features]/ConvBNActivation[12]/NNCFBatchNorm2d[1]/batch_norm_0" -> "243 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0"; +"243 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/hardswish_0" -> "244 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0"; +"244 MobileNetV3/Sequential[features]/ConvBNActivation[12]/Hardswish[2]/SymmetricQuantizer/symmetric_quantize_0" -> "245 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0"; +"245 MobileNetV3/AdaptiveAvgPool2d[avgpool]/adaptive_avg_pool2d_0" -> "246 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0"; +"246 MobileNetV3/AdaptiveAvgPool2d[avgpool]/SymmetricQuantizer/symmetric_quantize_0" -> "247 MobileNetV3/flatten_0"; +"247 MobileNetV3/flatten_0" -> "249 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0"; +"248 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "249 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0"; +"249 MobileNetV3/Sequential[classifier]/NNCFLinear[0]/linear_0" -> "250 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0"; +"250 MobileNetV3/Sequential[classifier]/Hardswish[1]/hardswish_0" -> "251 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0"; +"251 MobileNetV3/Sequential[classifier]/Hardswish[1]/SymmetricQuantizer/symmetric_quantize_0" -> "252 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0"; +"252 MobileNetV3/Sequential[classifier]/Dropout[2]/dropout_0" -> "254 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0"; +"253 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/ModuleDict[pre_ops]/UpdateWeight[0]/SymmetricQuantizer[op]/symmetric_quantize_0" -> "254 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0"; +"254 MobileNetV3/Sequential[classifier]/NNCFLinear[3]/linear_0" -> "255 /nncf_model_output_0"; } diff --git a/tests/torch/extensions_build_checks.py b/tests/torch/extensions_build_checks.py index d76dc4f1260..2727ba21b54 100644 --- a/tests/torch/extensions_build_checks.py +++ b/tests/torch/extensions_build_checks.py @@ -18,17 +18,13 @@ mode = sys.argv[1] if mode == "cpu": # Do not remove - the import here is for testing purposes. - # pylint: disable=wrong-import-position - from nncf.torch import force_build_cpu_extensions - # pylint: enable=wrong-import-position + from nncf.torch import force_build_cpu_extensions force_build_cpu_extensions() elif mode == "cuda": - # pylint: disable=wrong-import-position from nncf.torch import force_build_cuda_extensions - # pylint: enable=wrong-import-position # Set CUDA Architecture # See cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake os.environ["TORCH_CUDA_ARCH_LIST"] = "7.5+PTX" diff --git a/tests/torch/helpers.py b/tests/torch/helpers.py index e89a524bfd4..3705b42f622 100644 --- a/tests/torch/helpers.py +++ b/tests/torch/helpers.py @@ -19,7 +19,7 @@ import numpy as np import onnx import torch -from onnx import numpy_helper # pylint: disable=no-name-in-module +from onnx import numpy_helper from torch import nn from torch.nn import Module from torch.nn import functional as F @@ -46,9 +46,6 @@ TensorType = Union[torch.Tensor, np.ndarray, numbers.Number] -# pylint: disable=no-member - - def fill_conv_weight(conv, value, dim=2): conv.weight.data.fill_(value) # TODO: Fill it right diff --git a/tests/torch/modules/test_rnn.py b/tests/torch/modules/test_rnn.py index 56adecdec8f..dbe87841f75 100644 --- a/tests/torch/modules/test_rnn.py +++ b/tests/torch/modules/test_rnn.py @@ -231,8 +231,8 @@ def test_export_lstm_cell(tmp_path): assert os.path.exists(test_path) onnx_num = 0 - model = onnx.load(test_path) # pylint: disable=no-member - # pylint: disable=no-member + model = onnx.load(test_path) + for node in model.graph.node: if node.op_type == "FakeQuantize": onnx_num += 1 @@ -449,7 +449,7 @@ def test_export_stacked_bi_lstm(tmp_path): assert os.path.exists(test_path) onnx_num = 0 - # pylint: disable=no-member + model = onnx.load(test_path) for node in model.graph.node: if node.op_type == "FakeQuantize": diff --git a/tests/torch/nas/test_all_elasticity.py b/tests/torch/nas/test_all_elasticity.py index 761de0593a3..51fd84aa74e 100644 --- a/tests/torch/nas/test_all_elasticity.py +++ b/tests/torch/nas/test_all_elasticity.py @@ -68,7 +68,7 @@ def test_bn_adaptation_on_minimal_subnet_width_stage(): model, ctrl = create_bnas_model_and_ctrl_by_test_desc(RESNET50_2_MANUAL_BLOCKS_DESC) multi_elasticity_handler = ctrl.multi_elasticity_handler - # pylint: disable=protected-access + bn_adaptation = ctrl._bn_adaptation multi_elasticity_handler.enable_all() diff --git a/tests/torch/nas/test_elastic_depth.py b/tests/torch/nas/test_elastic_depth.py index bf506f05b5b..edf1e580210 100644 --- a/tests/torch/nas/test_elastic_depth.py +++ b/tests/torch/nas/test_elastic_depth.py @@ -72,7 +72,7 @@ def __init__(self, depth=3): def forward(self, x): output = self.conv1(x) - # pylint: disable=protected-access + for name, module in self.branch_with_blocks._modules.items(): if name not in self._skipped_layers: output = module(output) @@ -227,7 +227,7 @@ def test_can_export_model_with_one_skipped_block_resnet18(tmp_path): ctrl.export_model(str(onnx_model_without_block_path)) # load onnx graphs - # pylint:disable=no-member + load_model_fn = onnx.load_model onnx_resnet18_without_one_block = load_model_fn(onnx_model_without_block_path) onnx_resnet18_orig = load_model_fn(orig_onnx_model_path) @@ -534,7 +534,6 @@ def test_check_dinamic_graph_not_grow(): ] compressed_model, _ = create_compressed_model_and_algo_for_test(model, nncf_config) - # pylint: disable=protected-access ctx = compressed_model.nncf.get_tracing_context() ctx.set_elastic_blocks(skipped_blocks) nodes_count = ctx.graph.get_nodes_count() @@ -563,7 +562,7 @@ def test_validate_depth_config(): check = [[1, 4], [1, 3], [2], [0], [1, 9], [1], [2], [3], [2, 3], [5, 6, 7, 8, 9]] valid_1 = [[1, 4], [1], [], [], [1, 9], [1], [], [], [], [9]] - # pylint: disable=protected-access + for i, valid_value in enumerate(valid_1): assert valid_value == depth_handler._remove_inconsistent_blocks(check[i]) diff --git a/tests/torch/nas/test_elastic_kernel.py b/tests/torch/nas/test_elastic_kernel.py index c015104cac7..ad011c193cf 100644 --- a/tests/torch/nas/test_elastic_kernel.py +++ b/tests/torch/nas/test_elastic_kernel.py @@ -96,7 +96,7 @@ def test_elastic_kernel_with_custom_transition_matrix(): kernel_handler, supernet = create_single_conv_kernel_supernet() device = next(iter(supernet.parameters())).device custom_transition_matrix = torch.ones([3**2, 3**2]).to(device) - # pylint: disable=protected-access + elastic_kernel_op = kernel_handler._elastic_kernel_ops[0] elastic_kernel_op.__setattr__(f"{5}to{3}_matrix", Parameter(custom_transition_matrix)) input_ = torch.ones([1, 1, 5, 5]).to(device) diff --git a/tests/torch/nas/test_lr_scheduler.py b/tests/torch/nas/test_lr_scheduler.py index 7e77a8e9ff0..c6dcd351b8a 100644 --- a/tests/torch/nas/test_lr_scheduler.py +++ b/tests/torch/nas/test_lr_scheduler.py @@ -28,7 +28,6 @@ ) -# pylint: disable=protected-access class TestLRScheduler: def test_warmup_lr(self, mocker): warmup_lr = mocker.patch( diff --git a/tests/torch/nas/test_onnx_export.py b/tests/torch/nas/test_onnx_export.py index c4c2de4abae..1429556ad46 100644 --- a/tests/torch/nas/test_onnx_export.py +++ b/tests/torch/nas/test_onnx_export.py @@ -23,7 +23,6 @@ from tests.torch.nas.test_all_elasticity import create_bnas_model_and_ctrl_by_test_desc -# pylint: disable=no-member def check_onnx_weights(ctrl, path_to_onnx, ref_orig_weights, expected_num_nodes): ctrl.export_model(path_to_onnx) onnx_model = onnx.load(path_to_onnx) diff --git a/tests/torch/nas/test_ps_controller.py b/tests/torch/nas/test_ps_controller.py index a1b0ce0275d..3300c003188 100644 --- a/tests/torch/nas/test_ps_controller.py +++ b/tests/torch/nas/test_ps_controller.py @@ -26,7 +26,7 @@ from tests.torch.nas.helpers import move_model_to_cuda_if_available from tests.torch.nas.models.synthetic import ThreeConvModel from tests.torch.nas.models.synthetic import ThreeConvModelMode -from tests.torch.nas.test_scheduler import fixture_schedule_params # pylint: disable=unused-import # noqa: F401 +from tests.torch.nas.test_scheduler import fixture_schedule_params # noqa: F401 class PSControllerTestDesc(NamedTuple): @@ -106,7 +106,6 @@ def run_train(training_ctrl, model, mock_dataloader, calc_loss_fn): return output_storage -# pylint: disable=protected-access class TestProgressiveTrainingController: @pytest.mark.parametrize( "bn_adapt_section_is_called", diff --git a/tests/torch/nas/test_scheduler.py b/tests/torch/nas/test_scheduler.py index 48c844e6299..086fcc19937 100644 --- a/tests/torch/nas/test_scheduler.py +++ b/tests/torch/nas/test_scheduler.py @@ -127,7 +127,7 @@ def test_epoch_step(self, schedule_params, mocker): } ) mock_handler = MultiElasticityHandler(handlers, mock_nncf_network) - # pylint:disable=protected-access + is_handler_enabled_map = mock_handler._is_handler_enabled_map mock_elasticity_ctrl = mocker.stub() mock_elasticity_ctrl.multi_elasticity_handler = mock_handler diff --git a/tests/torch/nas/test_search.py b/tests/torch/nas/test_search.py index 0dc1ee1c374..1a88569a4cf 100644 --- a/tests/torch/nas/test_search.py +++ b/tests/torch/nas/test_search.py @@ -24,7 +24,7 @@ from tests.torch.nas.creators import create_bnas_model_and_ctrl_by_test_desc from tests.torch.nas.creators import create_bootstrap_training_model_and_ctrl from tests.torch.nas.models.synthetic import ThreeConvModel -from tests.torch.nas.test_all_elasticity import fixture_nas_model_name # pylint: disable=unused-import # noqa: F401 +from tests.torch.nas.test_all_elasticity import fixture_nas_model_name # noqa: F401 class SearchTestDesc(NamedTuple): diff --git a/tests/torch/pruning/experimental/test_nodes_grouping.py b/tests/torch/pruning/experimental/test_nodes_grouping.py index 75e00c88894..990a3a0f2c3 100644 --- a/tests/torch/pruning/experimental/test_nodes_grouping.py +++ b/tests/torch/pruning/experimental/test_nodes_grouping.py @@ -140,7 +140,7 @@ class GroupTestDesc: ref_groups: Optional[List[PruningGroup]] = None def __str__(self) -> str: - return self.model_desc.model_name # pylint: disable=no-member + return self.model_desc.model_name SYNTHETIC_DESCS = [ diff --git a/tests/torch/pruning/filter_pruning/test_algo.py b/tests/torch/pruning/filter_pruning/test_algo.py index 6dd544f86ed..723c6a84973 100644 --- a/tests/torch/pruning/filter_pruning/test_algo.py +++ b/tests/torch/pruning/filter_pruning/test_algo.py @@ -445,7 +445,7 @@ def test_collect_output_shapes(model, ref_output_shapes): config["compression"]["pruning_init"] = 0.0 model = model() _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) - # pylint:disable=protected-access + graph = compression_ctrl._model.nncf.get_original_graph() output_shapes = collect_output_shapes(graph) assert output_shapes == ref_output_shapes @@ -724,7 +724,7 @@ def test_flops_calculator(model_module, all_weights, pruning_flops_target, ref_f assert pruning_algo.current_params_num == ref_params_num # Check num of sparse by node - # pylint:disable=protected-access + num_of_sparse_by_node = pruning_algo._calculate_num_of_sparse_elements_by_node() assert len(num_of_sparse_by_node) == len(refs["num_of_sparse_by_node"]) @@ -820,7 +820,6 @@ def test_func_calculation_flops_for_conv(model): graph = pruned_model.nncf.get_original_graph() - # pylint:disable=protected-access for node_name, ref_shape in compression_controller._output_shapes.items(): # ref_shape get from tracing graph node = graph.get_node_by_name(node_name) @@ -844,7 +843,7 @@ def test_disconnected_graph(): 'DisconectedGraphModel/NNCFConv2d[conv3]/conv2d_0': ((8, 8), 1), 'DisconectedGraphModel/NNCFLinear[fc]/linear_0': ((1, 3), None), } # fmt: skip - # pylint:disable=protected-access + collected_shapes = compression_controller._output_shapes for name, (shape, mask_sum) in nodes_output_mask_map.items(): node = graph.get_node_by_name(name) diff --git a/tests/torch/pruning/filter_pruning/test_flops_pruning.py b/tests/torch/pruning/filter_pruning/test_flops_pruning.py index 05effe99572..ed5b4955b6b 100644 --- a/tests/torch/pruning/filter_pruning/test_flops_pruning.py +++ b/tests/torch/pruning/filter_pruning/test_flops_pruning.py @@ -99,7 +99,7 @@ def test_init_params_for_flops_calculation(model, ref_params): _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) assert compression_ctrl.nodes_flops == ref_params["nodes_flops"] - # pylint: disable=protected-access + inp_channels, out_channels = get_prunable_layers_in_out_channels(compression_ctrl._graph) assert inp_channels == ref_params["in_channels"] assert out_channels == ref_params["out_channels"] diff --git a/tests/torch/pruning/filter_pruning/test_legr.py b/tests/torch/pruning/filter_pruning/test_legr.py index 5f615badb03..08e316c5a28 100644 --- a/tests/torch/pruning/filter_pruning/test_legr.py +++ b/tests/torch/pruning/filter_pruning/test_legr.py @@ -27,7 +27,6 @@ def create_default_legr_config(): return config -# pylint:disable=protected-access def test_legr_coeffs_loading(tmp_path): file_name = tmp_path / "ranking_coeffs.json" model = PruningTestModel() diff --git a/tests/torch/pruning/helpers.py b/tests/torch/pruning/helpers.py index 6361a48b2f7..e3501aaca91 100644 --- a/tests/torch/pruning/helpers.py +++ b/tests/torch/pruning/helpers.py @@ -24,8 +24,6 @@ from tests.torch.helpers import fill_linear_weight from tests.torch.test_models.pnasnet import CellB -# pylint: disable=too-many-lines - class PruningTestModel(nn.Module): CONV_1_NODE_NAME = "PruningTestModel/NNCFConv2d[conv1]/conv2d_0" diff --git a/tests/torch/pruning/test_model_pruning_analysis.py b/tests/torch/pruning/test_model_pruning_analysis.py index dc113553a3f..93225970ce9 100644 --- a/tests/torch/pruning/test_model_pruning_analysis.py +++ b/tests/torch/pruning/test_model_pruning_analysis.py @@ -8,7 +8,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# pylint: disable=too-many-lines + from collections import Counter from functools import partial @@ -70,7 +70,6 @@ from tests.torch.pruning.helpers import get_basic_pruning_config -# pylint: disable=protected-access def create_nncf_model_and_pruning_builder( model: torch.nn.Module, config_params: Dict ) -> Tuple[NNCFNetwork, FilterPruningBuilder]: @@ -957,7 +956,7 @@ def test_nodes_cluster(): # test clean cluster.clean_cluster() - assert cluster.elements == [] # pylint: disable=use-implicit-booleaness-not-comparison + assert cluster.elements == [] assert cluster.importance == 0 diff --git a/tests/torch/pruning/test_utils.py b/tests/torch/pruning/test_utils.py index 7c1ce469a0c..c7860676355 100644 --- a/tests/torch/pruning/test_utils.py +++ b/tests/torch/pruning/test_utils.py @@ -21,7 +21,6 @@ from tests.torch.pruning.helpers import get_basic_pruning_config -# pylint: disable=protected-access @pytest.mark.parametrize( "total,sparsity_rate,multiple_of,ref", [(20, 0.2, None, 4), (20, 0.2, 8, 4), (20, 0.1, 2, 2), (20, 0.1, 5, 0), (20, 0.5, None, 4)], diff --git a/tests/torch/ptq/test_calculation_quantizer_params.py b/tests/torch/ptq/test_calculation_quantizer_params.py index cea666d0065..5b37790349f 100644 --- a/tests/torch/ptq/test_calculation_quantizer_params.py +++ b/tests/torch/ptq/test_calculation_quantizer_params.py @@ -39,9 +39,6 @@ from tests.torch.helpers import get_all_inputs_for_graph_node from tests.torch.helpers import get_nodes_by_type -# pylint: disable=protected-access -# pylint: disable=too-many-function-args - INPUT_SHAPE = (2, 3, 4, 5) diff --git a/tests/torch/ptq/test_fq_params_calculation.py b/tests/torch/ptq/test_fq_params_calculation.py index 1dcb3d5d065..1e12e532634 100644 --- a/tests/torch/ptq/test_fq_params_calculation.py +++ b/tests/torch/ptq/test_fq_params_calculation.py @@ -32,9 +32,6 @@ REFERENCE_SCALES_DIR = TEST_ROOT / "torch" / "data" / "reference_scales" -# pylint: disable=protected-access - - def min_max_quantize_model( original_model: torch.nn.Module, quantization_params: Dict[str, Any] = None ) -> torch.nn.Module: diff --git a/tests/torch/ptq/test_ptq_params.py b/tests/torch/ptq/test_ptq_params.py index cdc09a7b81a..932f7b89064 100644 --- a/tests/torch/ptq/test_ptq_params.py +++ b/tests/torch/ptq/test_ptq_params.py @@ -48,8 +48,6 @@ from tests.torch.ptq.helpers import get_single_conv_nncf_graph from tests.torch.ptq.helpers import get_single_no_weight_matmul_nncf_graph -# pylint: disable=protected-access - def get_hw_patterns(device: TargetDevice = TargetDevice.ANY) -> GraphPattern: return PatternsManager.get_full_hw_pattern_graph(backend=BackendType.TORCH, device=device) @@ -180,6 +178,22 @@ def ignored_scopes_data(self, request): @pytest.mark.parametrize( "params", ( + { + "preset": None, + "target_device": TargetDevice.ANY, + "subset_size": 1, + "model_type": ModelType.TRANSFORMER, + "ignored_scope": IgnoredScope(), + "advanced_parameters": AdvancedQuantizationParameters(), + }, + { + "preset": None, + "target_device": TargetDevice.ANY, + "subset_size": 1, + "model_type": None, + "ignored_scope": IgnoredScope(), + "advanced_parameters": AdvancedQuantizationParameters(), + }, { "preset": QuantizationPreset.MIXED, "target_device": TargetDevice.ANY, @@ -234,7 +248,14 @@ def test_create_nncf_config(params): assert config["compression"]["overflow_fix"] == params["advanced_parameters"].overflow_fix.value assert config["compression"]["quantize_outputs"] == params["advanced_parameters"].quantize_outputs - assert config["compression"]["preset"] == params["preset"].value + preset = params["preset"] + if params["preset"] is None: + if params["model_type"] == ModelType.TRANSFORMER: + preset = QuantizationPreset.MIXED + else: + preset = QuantizationPreset.PERFORMANCE + + assert config["compression"]["preset"] == preset.value range_config = config["compression"]["initializer"]["range"] if isinstance(range_config, dict): diff --git a/tests/torch/ptq/test_quantizer_config.py b/tests/torch/ptq/test_quantizer_config.py index 951f79149d7..2c1a764d30b 100644 --- a/tests/torch/ptq/test_quantizer_config.py +++ b/tests/torch/ptq/test_quantizer_config.py @@ -30,9 +30,6 @@ ParamsCls = TemplateTestQuantizerConfig.TestGetStatisticsCollectorParameters -# pylint: disable=protected-access - - class TestQuantizerConfig(TemplateTestQuantizerConfig): def get_algo_backend(self): return PTMinMaxAlgoBackend() diff --git a/tests/torch/ptq/test_strip.py b/tests/torch/ptq/test_strip.py index eaf59c75abe..e1e068909b0 100644 --- a/tests/torch/ptq/test_strip.py +++ b/tests/torch/ptq/test_strip.py @@ -24,7 +24,6 @@ from tests.torch.helpers import RandomDatasetMock -# pylint: disable=too-many-branches def check_fq(model: NNCFNetwork, striped: bool): compression_module_type = ExtraCompressionModuleType.EXTERNAL_QUANTIZER if model.nncf.is_compression_module_registered(compression_module_type): diff --git a/tests/torch/pytorch_patch_isolated.py b/tests/torch/pytorch_patch_isolated.py index c4648573883..3f347eceb00 100644 --- a/tests/torch/pytorch_patch_isolated.py +++ b/tests/torch/pytorch_patch_isolated.py @@ -34,11 +34,10 @@ def remove_comments_from_source(source): @pytest.mark.skipif(ISOLATION_RUN_ENV_VAR not in os.environ, reason="Should be run via isolation proxy") def test_jit_if_tracing_script_source_equals(): - # pylint: disable=protected-access # Get original torch.jit._script_if_tracing source torch_source = remove_comments_from_source(inspect.getsource(torch.jit._script_if_tracing)) - import nncf.torch # pylint: disable=unused-import # noqa: F401 + import nncf.torch # noqa: F401 # Get torch.jit._script_if_tracing source after patching was performed nncf_source = remove_comments_from_source(inspect.getsource(torch.jit._script_if_tracing)) @@ -69,7 +68,7 @@ def test_jit_script_exception_preserves_patching_isolated(): try: torch.jit.script(compressed_model) # supposed to fail since torch.jit.script does not support NNCF models - except: # pylint:disable=bare-except # noqa: E722 + except: # noqa: E722 pass # torch.nn.Module.__call__ is one of the fundamental patched functions, if the code object points to NNCF code, diff --git a/tests/torch/quantization/extensions/test_timeout_extension_loader.py b/tests/torch/quantization/extensions/test_timeout_extension_loader.py index f28f226045e..81ff5dc3f53 100644 --- a/tests/torch/quantization/extensions/test_timeout_extension_loader.py +++ b/tests/torch/quantization/extensions/test_timeout_extension_loader.py @@ -33,7 +33,6 @@ def test_timeout_extension_loader_isolated(tmp_path, use_cuda): os.environ[EXTENSION_LOAD_TIMEOUT_ENV_VAR] = "1" os.environ["TORCH_EXTENSIONS_DIR"] = tmp_path.as_posix() - # pylint: disable=protected-access build_dir = Path(quant_func._loader.get_build_dir()) lock_file = build_dir / "lock" lock_file.touch() diff --git a/tests/torch/quantization/test_adjust_padding.py b/tests/torch/quantization/test_adjust_padding.py index 857332b0398..e5ef520ab30 100644 --- a/tests/torch/quantization/test_adjust_padding.py +++ b/tests/torch/quantization/test_adjust_padding.py @@ -187,7 +187,7 @@ def test_onnx_export_to_fake_quantize_with_adjust_pad(tmp_path): num_model_nodes = 0 num_adjust_pad_nodes = 0 num_other_nodes = 0 - # pylint:disable=no-member + for node in onnx_model_proto.graph.node: op_type = node.op_type if op_type == "FakeQuantize": diff --git a/tests/torch/quantization/test_algo_quantization.py b/tests/torch/quantization/test_algo_quantization.py index 41abb2ef68e..c3e42f11173 100644 --- a/tests/torch/quantization/test_algo_quantization.py +++ b/tests/torch/quantization/test_algo_quantization.py @@ -67,7 +67,7 @@ def compare_qspecs(qspec: PTQuantizerSpec, quantizer: BaseQuantizer): assert qspec.num_bits == quantizer.num_bits assert isinstance(quantizer, QUANTIZATION_MODULES.get(qspec.mode)) assert qspec.scale_shape == quantizer.scale_shape - # pylint:disable=protected-access + assert qspec.signedness_to_force == quantizer._signedness_to_force diff --git a/tests/torch/quantization/test_hawq_precision_init.py b/tests/torch/quantization/test_hawq_precision_init.py index 155cdbee42d..6ebe2200c39 100644 --- a/tests/torch/quantization/test_hawq_precision_init.py +++ b/tests/torch/quantization/test_hawq_precision_init.py @@ -69,8 +69,6 @@ from tests.torch.quantization.quantization_helpers import get_quantization_config_without_range_init from tests.torch.quantization.quantization_helpers import get_squeezenet_quantization_config from tests.torch.quantization.quantization_helpers import post_compression_test_distr_init - -# pylint:disable=unused-import from tests.torch.test_compressed_graph import get_full_path_to_the_graph from tests.torch.test_models import inception_v3 from tests.torch.test_models import squeezenet1_1 @@ -383,7 +381,6 @@ def test_hawq_precision_init(_seed, dataset_dir, tmp_path, mocker, params): # There may be less traces required to be calculated during HAWQ than there are weightable layers. def side_effect_fn(self, max_iter=500, tolerance=1e-5): - # pylint:disable=protected-access return pregen_traces_for_all_layers[: len(self._parameter_handler.parameters)] mocked_trace.side_effect = side_effect_fn @@ -492,7 +489,6 @@ def test_hawq_on_single_conv_without_quantizers(_seed, dataset_dir, tmp_path, pa sample_normal_patch = mocker.patch(f"{ph_import}.sample_normal_like_params", autospec=True) def mock_sampling_fn(self): - # pylint:disable=protected-access return list(map(lambda x: torch.from_numpy(random_sample(x.shape)).to(device=self._device), self.parameters)) sample_rademacher_patch.side_effect = mock_sampling_fn diff --git a/tests/torch/quantization/test_logarithm_scale.py b/tests/torch/quantization/test_logarithm_scale.py index 96cb6631ca9..41b7ed22fd3 100644 --- a/tests/torch/quantization/test_logarithm_scale.py +++ b/tests/torch/quantization/test_logarithm_scale.py @@ -94,7 +94,7 @@ def test_logarithm_scale_parameter(logarithm_scale_setting_1, logarithm_scale_se sd1 = model1.state_dict() for k, v0 in sd0.items(): - v1 = sd1[k] # pylint: disable=E1136 + v1 = sd1[k] diff = (v1 - v0).abs().sum().item() / v1.numel() assert diff < 1e-6, "symmetric {} logarithm_scales {} param {} is corrupted mean({}-{})={}".format( symmetric, logarithm_scales, k, v0, v1, diff diff --git a/tests/torch/quantization/test_onnx_export.py b/tests/torch/quantization/test_onnx_export.py index 0a857f4530c..dfae2ea966f 100644 --- a/tests/torch/quantization/test_onnx_export.py +++ b/tests/torch/quantization/test_onnx_export.py @@ -52,7 +52,7 @@ def test_onnx_export_to_fake_quantize(tmp_path): num_fq = 0 num_model_nodes = 0 num_other_nodes = 0 - # pylint:disable=no-member + for node in onnx_model_proto.graph.node: op_type = node.op_type if op_type == "FakeQuantize": @@ -78,7 +78,7 @@ def test_onnx_export_to_quantize_dequantize(tmp_path): num_dq = 0 num_model_nodes = 0 num_other_nodes = 0 - # pylint:disable=no-member + for node in onnx_model_proto.graph.node: op_type = node.op_type if op_type == "QuantizeLinear": @@ -123,7 +123,7 @@ def test_onnx_export_to_quantize_dequantize_per_channel( else: quantizer.input_low = torch.nn.Parameter(torch.rand_like(quantizer.input_low)) quantizer.input_range = torch.nn.Parameter(torch.rand_like(quantizer.input_range)) - # pylint: disable=protected-access + quantizer._export_mode = export_mode x = torch.rand(INPUT_TENSOR_SHAPE) @@ -149,9 +149,6 @@ def forward(self, x): return x -# pylint: disable=no-member - - def get_weight_fq_for_conv_node(node: onnx.NodeProto, graph: onnx.GraphProto): weight_input_tensor_id = node.input[1] matches = [x for x in graph.node if weight_input_tensor_id in x.output] @@ -173,7 +170,7 @@ def test_target_compression_idx(tmp_path): model = TargetCompressionIdxTestModel() nncf_config = get_config_for_export_mode(should_be_onnx_standard=False) onnx_model_proto = load_exported_onnx_version(nncf_config, model, path_to_storage_dir=tmp_path) - onnx_graph = onnx_model_proto.graph # pylint:disable=no-member + onnx_graph = onnx_model_proto.graph conv_nodes = get_nodes_by_type(onnx_model_proto, "Conv") assert len(conv_nodes) == 1 conv_node = next(iter(conv_nodes)) @@ -238,7 +235,7 @@ def test_branching_fqs_are_not_chained(tmp_path, export_mode): quantizer_nodes = get_nodes_by_type(onnx_model_proto, target_node_type) # Quantizer nodes should, for this model, immediately be followed by the quantized operation. Chained quantizers # mean that the ONNX export was incorrect. - # pylint:disable=no-member + follower_node_lists = [get_successors(x, onnx_model_proto.graph) for x in quantizer_nodes] follower_nodes = [] for lst in follower_node_lists: @@ -318,10 +315,10 @@ def test_export_quantized_weights_with_middle_quants(tmp_path, is_half_range, qu onnx_checkpoint_path = str(tmp_path / "two_conv_model_int8.onnx") compression_ctrl.export_model(onnx_checkpoint_path) - model_onnx = onnx.load(onnx_checkpoint_path) # pylint: disable=no-member + model_onnx = onnx.load(onnx_checkpoint_path) fq_nodes = get_nodes_by_type(model_onnx, "FakeQuantize") - # pylint:disable=no-member + inputs = [get_all_inputs_for_graph_node(fq_node, model_onnx.graph) for fq_node in fq_nodes] for quantizer, fq_parametres in zip(quantizers, inputs[1::2]): @@ -351,7 +348,7 @@ def test_torch_onnx_export(tmp_path): num_fq = 0 num_model_nodes = 0 num_other_nodes = 0 - # pylint:disable=no-member + for node in onnx_model_proto.graph.node: op_type = node.op_type if op_type == "FakeQuantize": diff --git a/tests/torch/quantization/test_overflow_issue_export.py b/tests/torch/quantization/test_overflow_issue_export.py index 9898d55450b..04d24f9eea9 100644 --- a/tests/torch/quantization/test_overflow_issue_export.py +++ b/tests/torch/quantization/test_overflow_issue_export.py @@ -54,7 +54,7 @@ def test_is_correct_overflow_issue_levels(num_bits, mode, scale_shape, half_rang quantizer = SymmetricQuantizer(qspec) if mode == QuantizationMode.SYMMETRIC else AsymmetricQuantizer(qspec) - assert quantizer._half_range == half_range # pylint: disable=protected-access + assert quantizer._half_range == half_range assert quantizer.levels == assert_vals[0] assert quantizer.level_low == assert_vals[1] assert quantizer.level_high == assert_vals[2] @@ -67,13 +67,13 @@ def helper_to_test_if_overflow_fix_was_applied(nncf_config, target_device): _, compression_ctrl = create_compressed_model_and_algo_for_test(model, nncf_config) for quantizer in compression_ctrl.weight_quantizers.values(): - assert quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert quantizer.quantizer_module_ref._half_range assert quantizer.quantizer_module_ref.levels == 128 assert quantizer.quantizer_module_ref.level_low == -64 assert quantizer.quantizer_module_ref.level_high == 63 for quantizer in compression_ctrl.non_weight_quantizers.values(): - assert not quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert not quantizer.quantizer_module_ref._half_range def helper_to_test_if_overflow_fix_was_applied_only_to_first_conv_later(nncf_config, target_device): @@ -84,11 +84,11 @@ def helper_to_test_if_overflow_fix_was_applied_only_to_first_conv_later(nncf_con for idx, quantizer in enumerate(compression_ctrl.weight_quantizers.values()): if idx == 0: - assert quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert quantizer.quantizer_module_ref._half_range else: - assert not quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert not quantizer.quantizer_module_ref._half_range for quantizer in compression_ctrl.non_weight_quantizers.values(): - assert not quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert not quantizer.quantizer_module_ref._half_range def helper_to_test_if_overflow_fix_wasnt_applied(nncf_config, target_device): @@ -98,9 +98,9 @@ def helper_to_test_if_overflow_fix_wasnt_applied(nncf_config, target_device): _, compression_ctrl = create_compressed_model_and_algo_for_test(model, nncf_config) for quantizer in compression_ctrl.weight_quantizers.values(): - assert not quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert not quantizer.quantizer_module_ref._half_range for quantizer in compression_ctrl.non_weight_quantizers.values(): - assert not quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert not quantizer.quantizer_module_ref._half_range def test_config_option_disable_overflow_fix(): @@ -193,7 +193,7 @@ def are_symmetric_fq_nodes_are_exported_correct_with_overflow_fix(tmp_path, comp with torch.no_grad(): for quantizer in quantizers: assert quantizer.quantizer_module_ref.levels == levels - assert quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert quantizer.quantizer_module_ref._half_range assert quantizer.quantizer_module_ref.level_low == level_low assert quantizer.quantizer_module_ref.level_high == level_high quantizer.quantizer_module_ref.scale = torch.nn.Parameter( @@ -203,11 +203,11 @@ def are_symmetric_fq_nodes_are_exported_correct_with_overflow_fix(tmp_path, comp onnx_checkpoint_path = str(tmp_path / "model.onnx") compression_ctrl.export_model(onnx_checkpoint_path, input_names=["input"]) - onnx_model = onnx.load(onnx_checkpoint_path) # pylint: disable=no-member + onnx_model = onnx.load(onnx_checkpoint_path) # Find weight tensors in ONNX model fq_nodes = get_nodes_by_type(onnx_model, "FakeQuantize") - # pylint:disable=no-member + inputs = [get_all_inputs_for_graph_node(fq_node, onnx_model.graph) for fq_node in fq_nodes] level_high_ratio = (2 * level_high + 1) / level_high @@ -234,7 +234,7 @@ def are_asymmetric_fq_nodes_are_exported_correct_with_overflow_fix(tmp_path, com with torch.no_grad(): for quantizer in quantizers: assert quantizer.quantizer_module_ref.levels == levels - assert quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert quantizer.quantizer_module_ref._half_range assert quantizer.quantizer_module_ref.level_low == level_low assert quantizer.quantizer_module_ref.level_high == level_high quantizer.quantizer_module_ref.input_range = torch.nn.Parameter( @@ -244,11 +244,11 @@ def are_asymmetric_fq_nodes_are_exported_correct_with_overflow_fix(tmp_path, com onnx_checkpoint_path = str(tmp_path / "model.onnx") compression_ctrl.export_model(onnx_checkpoint_path, input_names=["input"]) - onnx_model = onnx.load(onnx_checkpoint_path) # pylint: disable=no-member + onnx_model = onnx.load(onnx_checkpoint_path) # Find weight tensors in ONNX model fq_nodes = get_nodes_by_type(onnx_model, "FakeQuantize") - # pylint:disable=no-member + inputs = [get_all_inputs_for_graph_node(fq_node, onnx_model.graph) for fq_node in fq_nodes] level_high_ratio = (2 * level_high + 1) / level_high @@ -335,16 +335,16 @@ def test_are_qdq_exported_per_tensor_weights_tensors_clipped(tmp_path): assert quantizer.quantizer_module_ref.levels == 128 assert quantizer.quantizer_module_ref.level_low == -64 assert quantizer.quantizer_module_ref.level_high == 63 - assert quantizer.quantizer_module_ref._half_range # pylint: disable=protected-access + assert quantizer.quantizer_module_ref._half_range onnx_checkpoint_path = str(tmp_path / "model.onnx") compression_ctrl.export_model(onnx_checkpoint_path, input_names=["input"], save_format="onnx_13") - onnx_model = onnx.load(onnx_checkpoint_path) # pylint: disable=no-member + onnx_model = onnx.load(onnx_checkpoint_path) # Find weight tensors in ONNX model quantize_nodes = get_nodes_by_type(onnx_model, "QuantizeLinear") - # pylint:disable=no-member + inputs = [get_all_inputs_for_graph_node(fq_node, onnx_model.graph) for fq_node in quantize_nodes] level_high_ratio = 127.0 / 63.0 diff --git a/tests/torch/quantization/test_range_init.py b/tests/torch/quantization/test_range_init.py index 5dec4eb8d06..96f4668e771 100644 --- a/tests/torch/quantization/test_range_init.py +++ b/tests/torch/quantization/test_range_init.py @@ -63,10 +63,6 @@ from tests.torch.quantization.quantization_helpers import get_squeezenet_quantization_config from tests.torch.quantization.quantization_helpers import post_compression_test_distr_init -# pylint:disable=unused-import -# pylint:disable=protected-access -# pylint:disable=too-many-lines - def scale_signed_dumping_worker(gpu, ngpus_per_node, config, tmp_path): distributed_init_test_default(gpu, ngpus_per_node, config) @@ -898,7 +894,6 @@ def __call__(self, *args, **kwargs): return retval -# pylint:disable=redefined-outer-name def test_per_layer_range_init_collectors_are_called_the_required_number_of_times( range_init_call_count_test_struct, mocker ): diff --git a/tests/torch/quantization/test_scheduler.py b/tests/torch/quantization/test_scheduler.py index 9ebcdc7d9a9..25eabf35b92 100644 --- a/tests/torch/quantization/test_scheduler.py +++ b/tests/torch/quantization/test_scheduler.py @@ -46,7 +46,6 @@ def statistics(self, quickly_collected_only: bool = False): class QuantizationCtrlBaseSpy: - # pylint:disable=no-member def __init__(self, mocker): self._mocked_ctrl = QuantizationControllerBaseForTest(mocker.stub) mocker.patch.object(self._mocked_ctrl, "enable_weight_quantization") diff --git a/tests/torch/quantization/test_unified_scales.py b/tests/torch/quantization/test_unified_scales.py index 49544db5b34..f98757f824f 100644 --- a/tests/torch/quantization/test_unified_scales.py +++ b/tests/torch/quantization/test_unified_scales.py @@ -34,8 +34,6 @@ from tests.torch.quantization.quantization_helpers import get_quantization_config_without_range_init from tests.torch.quantization.test_onnx_export import get_successors -# pylint: disable=no-member - def make_op_address_for_coalescing_test(scope_str: str) -> OperationAddress: op_address = OperationAddress.from_str(scope_str) @@ -572,7 +570,6 @@ def group_nodes_by_output_target(nodes: List[onnx.NodeProto], graph: onnx.GraphP return list(output_nodes.values()) def test_unified_scales_are_identical_in_onnx(self, tmp_path): - # pylint:disable=no-member nncf_config = get_quantization_config_without_range_init(model_size=1) nncf_config["compression"]["quantize_outputs"] = True nncf_config["input_info"] = [ @@ -631,7 +628,6 @@ def test_unified_scales_are_identical_in_onnx(self, tmp_path): assert curr_values == ref_values # All inputs for unified scale quantizers must be equal def test_weight_and_act_quantizer_scale_unification(self, tmp_path): - # pylint:disable=no-member nncf_config = get_quantization_config_without_range_init(model_size=1) nncf_config["input_info"] = [ {"sample_size": [1, 5], "type": "long", "filler": "zeros"}, diff --git a/tests/torch/sparsity/magnitude/test_algo.py b/tests/torch/sparsity/magnitude/test_algo.py index 63701aef36c..d0428a4e020 100644 --- a/tests/torch/sparsity/magnitude/test_algo.py +++ b/tests/torch/sparsity/magnitude/test_algo.py @@ -51,7 +51,7 @@ def test_can_create_magnitude_sparse_algo__with_defaults(): nncf_stats = compression_ctrl.statistics() for layer_info in nncf_stats.magnitude_sparsity.thresholds: assert layer_info.threshold == approx(0.24, 0.1) - # pylint: disable=protected-access + assert isinstance(compression_ctrl._weight_importance_fn, type(normed_magnitude)) for sparse_module in sparse_model_conv.values(): diff --git a/tests/torch/sparsity/movement/helpers/run_recipe.py b/tests/torch/sparsity/movement/helpers/run_recipe.py index 261cc1268b7..5967e6c0c89 100644 --- a/tests/torch/sparsity/movement/helpers/run_recipe.py +++ b/tests/torch/sparsity/movement/helpers/run_recipe.py @@ -20,7 +20,7 @@ import torch.nn import torch.nn.functional as F import torch.utils.data -from datasets import Dataset # pylint: disable=no-name-in-module +from datasets import Dataset from transformers import AutoModelForAudioClassification from transformers import AutoModelForImageClassification from transformers import AutoModelForSequenceClassification diff --git a/tests/torch/sparsity/movement/helpers/trainer.py b/tests/torch/sparsity/movement/helpers/trainer.py index 7da241bf712..83bc5d94575 100644 --- a/tests/torch/sparsity/movement/helpers/trainer.py +++ b/tests/torch/sparsity/movement/helpers/trainer.py @@ -14,7 +14,7 @@ import numpy as np import torch -from datasets import Dataset # pylint: disable=no-name-in-module +from datasets import Dataset from transformers import TrainingArguments from transformers.trainer import Trainer from transformers.trainer_callback import TrainerCallback diff --git a/tests/torch/sparsity/movement/helpers/utils.py b/tests/torch/sparsity/movement/helpers/utils.py index c56dd1f6e67..5df93ec24b9 100644 --- a/tests/torch/sparsity/movement/helpers/utils.py +++ b/tests/torch/sparsity/movement/helpers/utils.py @@ -67,7 +67,6 @@ def initialize_sparsifier_parameters_by_linspace( operand.bias_importance.copy_(bias_init_tensor) -# pylint: disable=protected-access def force_update_sparsifier_binary_masks_by_threshold(operand: MovementSparsifier, threshold: Optional[float] = None): if threshold is not None: operand.importance_threshold = threshold diff --git a/tests/torch/sparsity/movement/test_algo.py b/tests/torch/sparsity/movement/test_algo.py index a8f0515e50d..694a56cd4c0 100644 --- a/tests/torch/sparsity/movement/test_algo.py +++ b/tests/torch/sparsity/movement/test_algo.py @@ -730,7 +730,6 @@ def test_adaptive_init_importance_threshold_update(self, tmp_path): ) class CheckInitImportanceThresholdCallback(CompressionCallback): - # pylint: disable=protected-access def on_step_begin(self, args: TrainingArguments, state: TrainerState, control: TrainerControl, **kwargs): super().on_step_begin(args, state, control, **kwargs) if state.global_step < recipe.scheduler_params.warmup_start_epoch * steps_per_epoch: diff --git a/tests/torch/sparsity/movement/test_model_saving.py b/tests/torch/sparsity/movement/test_model_saving.py index c20a5cc6255..4da72441a74 100644 --- a/tests/torch/sparsity/movement/test_model_saving.py +++ b/tests/torch/sparsity/movement/test_model_saving.py @@ -18,7 +18,7 @@ import pytest import torch from addict import Dict -from datasets import Dataset # pylint: disable=no-name-in-module +from datasets import Dataset from onnx import numpy_helper from openvino.runtime import Core from openvino.runtime import serialize @@ -224,7 +224,7 @@ def test_ngraph_pruning(self, tmp_path: Path, desc: dict): # Zero out first 75% elements ctrl.reset_independent_structured_mask() - groups = ctrl._structured_mask_handler._structured_mask_ctx_groups # pylint: disable=protected-access + groups = ctrl._structured_mask_handler._structured_mask_ctx_groups for group in groups: for ctx in group.structured_mask_contexts: shape = ctx.independent_structured_mask.shape diff --git a/tests/torch/sparsity/movement/test_scheduler.py b/tests/torch/sparsity/movement/test_scheduler.py index 81cfb334b79..d5a003885ae 100644 --- a/tests/torch/sparsity/movement/test_scheduler.py +++ b/tests/torch/sparsity/movement/test_scheduler.py @@ -104,7 +104,7 @@ def test_error_on_wrong_config(self, desc: dict): ), ], ) - def test_warn_on_improper_config(self, desc: dict, nncf_caplog): # pylint:disable=redefined-outer-name + def test_warn_on_improper_config(self, desc: dict, nncf_caplog): with nncf_caplog.at_level(logging.WARNING, logger=nncf_logger.name): _ = MovementSchedulerParams.from_dict(desc["params"]) assert desc["match"] in nncf_caplog.text @@ -245,7 +245,6 @@ def test_get_state(self, steps_per_epoch: Optional[int], adaptive_init_threshold "_steps_per_epoch": ref_steps_per_epoch, } - # pylint: disable=protected-access @pytest.mark.parametrize( "steps_per_epoch", [2, 4, 9, None], ids=["epoch3", "epoch1", "epoch0", "epoch0_unknown_steps_per_epoch"] ) @@ -376,7 +375,6 @@ def assert_controller_structured_masking_calls(is_called_once: bool): class TestSchedulerInferStepsPerEpoch: - # pylint: disable=protected-access def test_can_infer_steps_per_epoch(self): params = MovementSchedulerParams( power=2, @@ -456,7 +454,7 @@ def test_set_init_importance_threshold(self, desc: dict): scheduler.step() for minfo in compression_ctrl.sparsified_module_info: force_update_sparsifier_binary_masks_by_threshold(minfo.operand) - init_importance_threshold = scheduler._init_importance_threshold # pylint: disable=protected-access + init_importance_threshold = scheduler._init_importance_threshold assert init_importance_threshold == approx(ref_threshold, abs=1e-4) stat = compression_ctrl.statistics().movement_sparsity assert stat.model_statistics.sparsity_level_for_layers == approx(ref_sparsity, abs=1e-4) @@ -483,5 +481,5 @@ def test_calc_init_threshold_correctness(self, target_sparsity: float, ref_thres for minfo in compression_ctrl.sparsified_module_info: initialize_sparsifier_parameters_by_linspace(minfo.operand, 0.0, 999.0) scheduler: MovementPolynomialThresholdScheduler = compression_ctrl.scheduler - threshold = scheduler._calc_init_threshold_from_controller(target_sparsity) # pylint: disable=protected-access + threshold = scheduler._calc_init_threshold_from_controller(target_sparsity) assert threshold == approx(ref_threshold) diff --git a/tests/torch/sparsity/movement/test_structured_mask.py b/tests/torch/sparsity/movement/test_structured_mask.py index 0349762472e..d3a918ffe69 100644 --- a/tests/torch/sparsity/movement/test_structured_mask.py +++ b/tests/torch/sparsity/movement/test_structured_mask.py @@ -173,9 +173,7 @@ def test_structured_mask_setter_with_wrong_shape(self, is_dependent_mask: bool): f"Some tests may fail with error", ) @pytest.mark.parametrize("is_dependent_mask", [True, False], ids=["dependent", "independent"]) - def test_structured_mask_setter_with_device_change( - self, is_dependent_mask: bool, nncf_caplog - ): # pylint: disable=redefined-outer-name + def test_structured_mask_setter_with_device_change(self, is_dependent_mask: bool, nncf_caplog): mask_name = "dependent_structured_mask" if is_dependent_mask else "independent_structured_mask" operand = MovementSparsifier(mock_linear_nncf_node(1, 1)) ctx = StructuredMaskContext(operand, "linear", (1, 1), True) @@ -346,7 +344,6 @@ def test_string_representation(self, num_contexts: int): class TestStructuredMaskHandler: - # pylint: disable=protected-access @pytest.mark.parametrize( "run_recipe", STRUCTURED_MASK_SUPPORTED_RECIPES, ids=[r.model_family for r in STRUCTURED_MASK_SUPPORTED_RECIPES] ) @@ -425,7 +422,6 @@ def test_report_structured_sparsity(self, tmp_path, mocker, max_num_of_kept_head assert re.fullmatch(r"\[[0-9]+ items\]", item) is not None assert Path(tmp_path, f"{file_name}.csv").is_file() - # pylint: disable=protected-access def _get_handler_from_ctrl(self, compression_ctrl) -> Tuple[StructuredMaskHandler, List[StructuredMaskContext]]: handler = compression_ctrl._structured_mask_handler all_ctxes = [] diff --git a/tests/torch/sparsity/movement/test_training_with_third_party.py b/tests/torch/sparsity/movement/test_training_with_third_party.py index 6286cb6ad07..f353ac6bf33 100644 --- a/tests/torch/sparsity/movement/test_training_with_third_party.py +++ b/tests/torch/sparsity/movement/test_training_with_third_party.py @@ -30,7 +30,6 @@ def temp_folder(tmp_path_factory): @pytest.mark.usefixtures("temp_folder") class TestMovementWithTransformers: - # pylint:disable=redefined-outer-name @pytest.fixture(autouse=True) def setup(self, temp_folder): self.temp_folder = temp_folder diff --git a/tests/torch/sparsity/movement/training_scripts/run_glue.py b/tests/torch/sparsity/movement/training_scripts/run_glue.py index 09a6bf6c737..4261fd0c54e 100644 --- a/tests/torch/sparsity/movement/training_scripts/run_glue.py +++ b/tests/torch/sparsity/movement/training_scripts/run_glue.py @@ -144,7 +144,7 @@ def get_compression_logs(self) -> Optional[List[Dict[str, float]]]: def prepare_dataset(args, training_args): - raw_datasets = datasets.load_dataset("glue", args.task_name) # pylint: disable=no-member + raw_datasets = datasets.load_dataset("glue", args.task_name) num_labels = len(raw_datasets["train"].features["label"].names) tokenizer = AutoTokenizer.from_pretrained(args.model_name_or_path) diff --git a/tests/torch/sparsity/rb/test_algo.py b/tests/torch/sparsity/rb/test_algo.py index b5d8e057649..45d83697959 100644 --- a/tests/torch/sparsity/rb/test_algo.py +++ b/tests/torch/sparsity/rb/test_algo.py @@ -84,7 +84,7 @@ def test_can_set_sparse_layers_to_loss(): _, compression_ctrl = create_compressed_model_and_algo_for_test(model, config) loss = compression_ctrl.loss assert isinstance(loss, SparseLoss) - # pylint: disable=protected-access + for layer in loss._sparse_layers: assert isinstance(layer, RBSparsifyingWeight) @@ -221,7 +221,6 @@ def test_create_rb_algo_with_per_layer_loss(): config["compression"] = {"algorithm": "rb_sparsity", "params": {"sparsity_level_setting_mode": "local"}} _, compression_ctrl = create_compressed_model_and_algo_for_test(MockModel(), config) - # pylint: disable=protected-access assert isinstance(compression_ctrl._loss, SparseLossForPerLayerSparsity) @@ -230,7 +229,6 @@ def test_rb_sparsity__can_set_sparsity_level_for_module(): config["compression"] = {"algorithm": "rb_sparsity", "params": {"sparsity_level_setting_mode": "local"}} _, compression_ctrl = create_compressed_model_and_algo_for_test(BasicConvTestModel(), config) - # pylint: disable=protected-access assert list(compression_ctrl._loss.per_layer_target.values())[0] == 1 compression_ctrl.set_sparsity_level(0.7, compression_ctrl.sparsified_module_info[0]) diff --git a/tests/torch/sparsity/test_common.py b/tests/torch/sparsity/test_common.py index 6a2dd30fbd9..24d7ca223ec 100644 --- a/tests/torch/sparsity/test_common.py +++ b/tests/torch/sparsity/test_common.py @@ -360,7 +360,6 @@ def test_scheduler_get_state(scheduler_cls): assert new_scheduler.current_step == 4 assert new_scheduler.current_epoch == 0 if scheduler_cls == PolynomialSparsityScheduler: - # pylint: disable=protected-access assert new_scheduler._steps_per_epoch == 5 if scheduler_cls == AdaptiveSparsityScheduler: assert new_scheduler.num_bad_epochs == 1 diff --git a/tests/torch/test_algo_common.py b/tests/torch/test_algo_common.py index ba405187237..949a5863d30 100644 --- a/tests/torch/test_algo_common.py +++ b/tests/torch/test_algo_common.py @@ -302,8 +302,8 @@ def test_can_export_compressed_model_with_input_output_names(tmp_path): assert os.path.exists(test_path) - onnx_model = onnx.load(test_path) # pylint: disable=no-member - # pylint: disable=no-member + onnx_model = onnx.load(test_path) + curr_input_names = [node.name for node in onnx_model.graph.input] curr_output_names = [node.name for node in onnx_model.graph.output] @@ -326,10 +326,10 @@ def test_can_export_compressed_model_with_specified_domain_for_custom_ops(tmp_pa assert os.path.exists(test_path) - onnx_model = onnx.load(test_path) # pylint: disable=no-member + onnx_model = onnx.load(test_path) count_custom_ops = 0 - # pylint: disable=no-member + for op_node in onnx_model.graph.node: if op_node.op_type == "FakeQuantize": assert op_node.domain == DOMAIN_CUSTOM_OPS_NAME diff --git a/tests/torch/test_api_behavior.py b/tests/torch/test_api_behavior.py index 709d84a5734..1f82a57c2e2 100644 --- a/tests/torch/test_api_behavior.py +++ b/tests/torch/test_api_behavior.py @@ -94,7 +94,6 @@ def test_range_init_is_called( ) # autospec=True will patch the function as an instance method bn_adaptation_spy = mocker.patch("nncf.torch.initialization.DataLoaderBNAdaptationRunner.run") - # pylint:disable=protected-access def fn(self) -> SingleConfigQuantizerSetup: return self._algo.get_quantizer_setup_for_current_state() diff --git a/tests/torch/test_compressed_graph.py b/tests/torch/test_compressed_graph.py index 07dfdbfa458..f63941646ef 100644 --- a/tests/torch/test_compressed_graph.py +++ b/tests/torch/test_compressed_graph.py @@ -86,7 +86,6 @@ def get_basic_quantization_config( return config -# pylint:disable=redefined-outer-name def get_basic_quantization_config_with_hw_config_type(hw_config_type, input_sample_size): config = get_empty_config(input_sample_sizes=input_sample_size) config["target_device"] = hw_config_type @@ -120,7 +119,7 @@ def check_graph(graph: PTNNCFGraph, path_to_dot: str, graph_dir: str, sort_dot_g :param sort_dot_graph: If True the dumped graph will be sorted, if False - otherwise. :return: None """ - # pylint:disable=protected-access + nx_graph = graph.get_graph_for_structure_analysis() path_to_dot = get_full_path_to_the_graph(path_to_dot, graph_dir) compare_nx_graph_with_reference(nx_graph, path_to_dot, sort_dot_graph=sort_dot_graph) @@ -808,9 +807,7 @@ def hw_config_type(request): return type_hw -# pylint:disable=too-many-branches @pytest.mark.parametrize("desc", TEST_HW_MODELS_DESC, ids=[m.model_name for m in TEST_HW_MODELS_DESC]) -# pylint:disable=redefined-outer-name def test_compressed_graph_models_hw(desc, hw_config_type): model = desc.model_builder() config = get_basic_quantization_config_with_hw_config_type( @@ -819,7 +816,6 @@ def test_compressed_graph_models_hw(desc, hw_config_type): input_info_list = create_input_infos(config) compressed_model = NNCFNetwork(model, input_infos=input_info_list) - # pylint:disable=protected-access quantization_builder = QuantizationBuilder(config, should_init=False) single_config_quantizer_setup = quantization_builder._get_single_config_quantizer_setup(compressed_model) sketch_graph = compressed_model.nncf.get_original_graph() @@ -839,7 +835,6 @@ def prepare_potential_quantizer_graph(graph: PTNNCFGraph, quantizer_setup: Singl pre_hooked_quantizers_activations_attr: Dict[NNCFNodeName, Tuple[int, str]] = {} post_hooked_quantizers_activations_attr: Dict[NNCFNodeName, str] = {} - # pylint:disable=protected-access for qp in quantizer_setup.quantization_points.values(): if qp.is_weight_quantization_point(): target_node_name = qp.insertion_point.target_node_name diff --git a/tests/torch/test_graph_building.py b/tests/torch/test_graph_building.py index 859fa6a7157..0c5283d8b4f 100644 --- a/tests/torch/test_graph_building.py +++ b/tests/torch/test_graph_building.py @@ -92,7 +92,7 @@ def forward(self, x): graph = tracer.trace_graph(mod) unique_op_exec_contexts = set() - # pylint:disable=protected-access + for _, node in graph._nx_graph.nodes.items(): node_op_address = node[DynamicGraph.OP_EXEC_CONTEXT_NODE_ATTR].op_address assert node_op_address not in unique_op_exec_contexts @@ -211,7 +211,6 @@ def test_activation_shape_tracing(input_shape: Tuple): (f"8 /{MODEL_OUTPUT_OP_NAME}_0", [final_shape], []), ] for node_id, ref_input_shapes, ref_output_shapes in ref_node_ids_and_io_edge_shapes: - # pylint:disable=protected-access input_edges = graph.get_nncf_graph_pattern_io( [ node_id, diff --git a/tests/torch/test_load_model_state.py b/tests/torch/test_load_model_state.py index 14e2b6786a0..2df68c0b362 100644 --- a/tests/torch/test_load_model_state.py +++ b/tests/torch/test_load_model_state.py @@ -509,7 +509,7 @@ def test_match_key(desc: MatchKeyDesc, mocker, nncf_caplog): num_loaded_layers = len(new_dict) assert num_loaded_layers == desc.num_loaded - # pylint: disable=protected-access + assert key_matcher._processed_keys._keys == desc.processed_keys._keys if desc.expects_error: with pytest.raises(RuntimeError): diff --git a/tests/torch/test_model_transformer.py b/tests/torch/test_model_transformer.py index 4ba712ec18d..c694a94df3d 100644 --- a/tests/torch/test_model_transformer.py +++ b/tests/torch/test_model_transformer.py @@ -152,7 +152,6 @@ def test_single_insertions(self, setup, target_point: PTTargetPoint): self.compressed_model.nncf.insert_at_point(insertion_point, [hook]) - # pylint:disable=protected-access if insertion_point.insertion_type == PTInsertionType.OPERATOR_PRE_HOOK: ctx = self.compressed_model.nncf.get_tracing_context() pre_hook_id = PreHookId(insertion_point.op_address, input_port_id=insertion_point.input_port_id) @@ -177,10 +176,8 @@ def check_order(iterable1: List, iterable2: List, ordering: List): for idx, order in enumerate(ordering): assert iterable1[idx] is iterable2[order] - # pylint:disable=undefined-variable @pytest.mark.parametrize("case", priority_test_cases, ids=[x[1].name + "-" + x[0] for x in priority_test_cases]) def test_priority(self, case, setup): - # pylint:disable=too-many-branches priority_type = case[0] insertion_type = case[1] @@ -232,7 +229,6 @@ def test_priority(self, case, setup): elif priority_type == "different": order = [2, 0, 1] - # pylint:disable=protected-access if insertion_type == TargetType.OPERATOR_PRE_HOOK: ctx = self.compressed_model.nncf.get_tracing_context() pre_hook_id = PreHookId( @@ -536,7 +532,6 @@ def test_quantizer_insertion_transformations(target_type, node_name, input_port_ assert transformed_model.nncf.is_compression_module_registered(compression_module_type) if target_type == TargetType.OPERATION_WITH_WEIGHTS: - # pylint: disable=protected-access op = transformed_model.conv1.pre_ops._modules["0"] assert isinstance(op, UpdateWeight) assert isinstance(op.op, BaseOp) diff --git a/tests/torch/test_models/sr_small_model.py b/tests/torch/test_models/sr_small_model.py index 65b160ca999..dd7cf9302f7 100644 --- a/tests/torch/test_models/sr_small_model.py +++ b/tests/torch/test_models/sr_small_model.py @@ -24,7 +24,6 @@ def __init__(self, channels): in_channels=channels, out_channels=channels, kernel_size=3, stride=1, padding=1, bias=False ) - # pylint: disable=arguments-differ def forward(self, x): identity_data = x output = self.relu(x) @@ -106,7 +105,6 @@ def __init__(self, scale=3, num_of_ch_enc=16, num_of_ch_dec=8, num_of_res_blocks in_channels=num_of_ch_dec, out_channels=3, kernel_size=3, stride=1, padding=1, bias=True ) - # pylint: disable=arguments-differ def forward(self, x): input_ = x[0] cubic = x[1] diff --git a/tests/torch/test_nncf_network.py b/tests/torch/test_nncf_network.py index f7a6bb7b064..fb5ce53fbe2 100644 --- a/tests/torch/test_nncf_network.py +++ b/tests/torch/test_nncf_network.py @@ -140,7 +140,6 @@ def test_weight_normed_modules_are_replaced_correctly(): assert isinstance(wrapped_conv.weight_v, torch.nn.Parameter) assert not isinstance(wrapped_conv.weight, torch.nn.Parameter) - # pylint:disable=protected-access assert len(wrapped_conv._forward_pre_hooks) == 1 @@ -185,7 +184,6 @@ def test_custom_module_registering(): assert RegisteredUserModule in UNWRAPPED_USER_MODULES.registry_dict.values() assert UnregisteredUserModule not in UNWRAPPED_USER_MODULES.registry_dict.values() - # pylint: disable=protected-access modules = [nncf_model.registered_user_module, nncf_model.unregistered_user_module.conv] base_modules = [RegisteredUserModule, torch.nn.Conv2d] names = ["NNCFUserRegisteredUserModule", "NNCFConv2d"] @@ -236,7 +234,6 @@ def test_get_weighted_original_graph_nodes(): assert set(weighted_nodes) == set(ref_weighted_nodes) -# pylint: disable=protected-access def test_get_op_nodes_in_scope(): model = TwoConvTestModel() nncf_model: NNCFNetwork = NNCFNetwork(deepcopy(model), input_infos=[ModelInputInfo([1, 1, 4, 4])]) @@ -360,10 +357,10 @@ def test_setting_attrs(): model = ModelWithAttr() assert model.CLASS_ATTR == 0 assert model.instance_attr == 0 - # pylint:disable=protected-access + assert model._input_infos == 0 nncf_network = NNCFNetwork(model, input_infos=[ModelInputInfo([1])]) - # pylint:disable=protected-access + assert nncf_network._input_infos == 0 nncf_network.instance_attr = 1 @@ -447,8 +444,8 @@ def test_temporary_clean_view(): ) sd_after_tmp_clean_view = sparse_quantized_model.state_dict() for key in old_sd.keys(): - assert key in sd_after_tmp_clean_view # pylint: disable=E1135 - assert torch.all(torch.eq(sd_after_tmp_clean_view[key], old_sd[key])) # pylint: disable=E1136 + assert key in sd_after_tmp_clean_view + assert torch.all(torch.eq(sd_after_tmp_clean_view[key], old_sd[key])) sparse_quantized_model.nncf.rebuild_graph() graph_after_tmp_clean_view = sparse_quantized_model.nncf.get_graph() assert graph_after_tmp_clean_view == old_graph @@ -724,7 +721,7 @@ def test_safety_change_scope_in_get_nncf_modules(): class EmbeddingWithSharedWeights(torch.nn.Embedding): - def forward(self, x, run_as_matmul=False): # pylint: disable=arguments-renamed + def forward(self, x, run_as_matmul=False): if run_as_matmul: return F.linear(x, self.weight) return super().forward(x) diff --git a/tests/torch/test_no_nncf_trace_patching.py b/tests/torch/test_no_nncf_trace_patching.py index da256222491..837faa1ff27 100644 --- a/tests/torch/test_no_nncf_trace_patching.py +++ b/tests/torch/test_no_nncf_trace_patching.py @@ -51,9 +51,9 @@ def test_no_trace_model_patching(): # Not patching anything: all output nodes are traced _, compressed_model = create_compressed_model(TestModel(True), config) - assert len(compressed_model.nncf.get_original_graph().get_output_nodes()) == 2 # pylint: disable=protected-access + assert len(compressed_model.nncf.get_original_graph().get_output_nodes()) == 2 # Patching a function results with no_nncf_trace in method not producing an output node disable_tracing(TestModel.ambiguous_op) _, compressed_model = create_compressed_model(TestModel(False), get_empty_config()) - assert len(compressed_model.nncf.get_original_graph().get_output_nodes()) == 1 # pylint: disable=protected-access + assert len(compressed_model.nncf.get_original_graph().get_output_nodes()) == 1 diff --git a/tests/torch/test_onnx_export.py b/tests/torch/test_onnx_export.py index f5b321e3da3..89c5cc22674 100644 --- a/tests/torch/test_onnx_export.py +++ b/tests/torch/test_onnx_export.py @@ -73,7 +73,6 @@ def test_io_nodes_naming_scheme(tmp_path): assert node.output[0] == f"output.{idx}" -# pylint: disable=protected-access @pytest.mark.parametrize( "save_format, refs", ( @@ -86,7 +85,6 @@ def test_io_nodes_naming_scheme(tmp_path): ), ) def test_exporter_parser_format(save_format: str, refs: Any): - # pylint: disable=broad-except try: save_format, args = PTExporter.parse_format(save_format) except Exception as e: @@ -108,7 +106,7 @@ def test_exported_version(tmp_path: str, save_format: str, ref_opset: int): onnx_checkpoint_path = tmp_path / "model.onnx" compression_ctrl.export_model(onnx_checkpoint_path, save_format) model_proto = onnx.load_model(onnx_checkpoint_path) - # pylint: disable=no-member + assert model_proto.opset_import[0].version == ref_opset diff --git a/tests/torch/test_pattern_manager.py b/tests/torch/test_pattern_manager.py index 0be8fba0e9e..4db3841fc76 100644 --- a/tests/torch/test_pattern_manager.py +++ b/tests/torch/test_pattern_manager.py @@ -22,7 +22,6 @@ HWFusedPatternNames.MVN_SCALE_SHIFT: "Not relevant for Torch.", HWFusedPatternNames.NORMALIZE_L2_MULTIPLY: "Not relevant for Torch.", HWFusedPatternNames.SCALE_SHIFT: "Not relevant for Torch.", - HWFusedPatternNames.SE_BLOCK: "Not relevant for Torch.", HWFusedPatternNames.SOFTMAX_DIV: "Not relevant for Torch.", HWFusedPatternNames.HSWISH_ACTIVATION: "Not relevant for Torch.", HWFusedPatternNames.HSWISH_ACTIVATION_V2: "Not relevant for Torch.", diff --git a/tests/torch/test_sanity_sample.py b/tests/torch/test_sanity_sample.py index 9e206c0b127..d0b90dc8bab 100644 --- a/tests/torch/test_sanity_sample.py +++ b/tests/torch/test_sanity_sample.py @@ -487,7 +487,6 @@ def test_cpu_only_mode_produces_cpu_only_model(config, tmp_path, mocker): with set_num_threads_locally(1) if config["sample_type"] == "semantic_segmentation" else nullcontext(): sample.main(arg_list) - # pylint: disable=no-member if config["sample_type"] == "classification": if is_staged_quantization(config["sample_config"]): import examples.torch.classification.staged_quantization_worker as staged_worker diff --git a/tests/torch/test_sanity_third_party.py b/tests/torch/test_sanity_third_party.py index a18a38129bc..85da106eeb6 100644 --- a/tests/torch/test_sanity_third_party.py +++ b/tests/torch/test_sanity_third_party.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:disable=no-name-in-module + import os import subprocess import sys @@ -112,7 +112,6 @@ def install_env(self, pip_cache_dir): pip_runner.run_pip("install -e .", cwd=PROJECT_ROOT) -# pylint:disable=redefined-outer-name class TestTransformers: @pytest.fixture(autouse=True) def setup(self, temp_folder): diff --git a/tests/torch/test_sota_checkpoints.py b/tests/torch/test_sota_checkpoints.py index d67a3cfd981..4b4b212ed16 100644 --- a/tests/torch/test_sota_checkpoints.py +++ b/tests/torch/test_sota_checkpoints.py @@ -162,7 +162,6 @@ def process_line(decoded_line: str, error_lines: List): err_string = "\n".join(error_lines) if error_lines else None return exit_code, err_string - # pylint:disable=unused-variable @staticmethod def get_onnx_model_file_path(name): onnx_name = str(name + ".onnx") @@ -322,7 +321,6 @@ def threshold_check( within_thresholds = True return color, within_thresholds - # pylint:disable=unused-variable @staticmethod def write_common_metrics_file(per_model_metric_file_dump_path: Path): metric_value = OrderedDict() @@ -499,7 +497,6 @@ def test_eval(self, sota_checkpoints_dir, sota_data_dir, eval_test_struct: EvalR self.color_dict[eval_test_struct.model_name_], is_accuracy_within_thresholds = retval assert is_accuracy_within_thresholds - # pylint:disable=too-many-branches @pytest.mark.convert @pytest.mark.parametrize("eval_test_struct", param_list, ids=ids_list) @pytest.mark.parametrize("onnx_type", ["fq", "q_dq"]) diff --git a/tests/torch/test_tracing_context.py b/tests/torch/test_tracing_context.py index caa6def6252..4f05c75f9bb 100644 --- a/tests/torch/test_tracing_context.py +++ b/tests/torch/test_tracing_context.py @@ -73,7 +73,7 @@ def test_scope_and_call_counters_are_reset_on_exceptions(): model(torch.ones([1])) assert not ctx.module_call_stack assert not ctx.relative_scopes_stack - # pylint:disable=protected-access + assert not ctx._threading.thread_local.operator_counters diff --git a/tests/torch/test_utils.py b/tests/torch/test_utils.py index 00d6cecb62a..e8137af98c1 100644 --- a/tests/torch/test_utils.py +++ b/tests/torch/test_utils.py @@ -58,7 +58,6 @@ def test_training_mode_switcher(_seed, model: nn.Module): randomly_change_model_state(model) saved_state = save_module_state(model) with training_mode_switcher(model, True): - # pylint: disable=unnecessary-pass pass compare_saved_model_state_and_current_model_state(model, saved_state) @@ -80,7 +79,6 @@ def check_were_only_bn_training_state_changed(model: nn.Module, saved_state: _Mo randomly_change_model_state(model) saved_state = save_module_state(model) - # pylint: disable=protected-access with runner._bn_training_state_switcher(): check_were_only_bn_training_state_changed(model, saved_state) diff --git a/tools/benchmark_binarize_layers.py b/tools/benchmark_binarize_layers.py index 3de77a4b86c..229288a321b 100644 --- a/tools/benchmark_binarize_layers.py +++ b/tools/benchmark_binarize_layers.py @@ -32,7 +32,8 @@ # reference impl -# pylint:disable=abstract-method + + class ReferenceXNORBinarize(torch.autograd.Function): @staticmethod def forward(ctx, x): @@ -46,7 +47,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_outputs[0] -# pylint:disable=abstract-method class ReferenceDOREFABinarize(torch.autograd.Function): @staticmethod def forward(ctx, x): @@ -60,7 +60,6 @@ def backward(ctx: Any, *grad_outputs: Any) -> Any: return grad_outputs[0] -# pylint:disable=abstract-method class ReferenceActivationBinarize(torch.autograd.Function): @staticmethod def forward(ctx, input_, scale, threshold): diff --git a/tools/benchmark_quantize_layers.py b/tools/benchmark_quantize_layers.py index 7d58785daa0..e1554e2a131 100644 --- a/tools/benchmark_quantize_layers.py +++ b/tools/benchmark_quantize_layers.py @@ -216,7 +216,7 @@ def get_module(params_struct: ParamStruct) -> BaseQuantizer: args=(world_size, module, input_size, num_runs, param_struct.dtype, output), ) run_data = output[0] - except: # pylint:disable=bare-except # noqa: E722 + except: # noqa: E722 run_data = {"time": -1} else: run_data = call_fn(module, input_size, param_struct.device, num_runs, dtype=param_struct.dtype) diff --git a/tools/clip_dot.py b/tools/clip_dot.py index e14164a9a20..f4dcac13eb6 100644 --- a/tools/clip_dot.py +++ b/tools/clip_dot.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:skip-file + import sys from argparse import ArgumentParser diff --git a/tools/collect_pylint_input_files_for_backend.py b/tools/collect_backend_specific_file_names.py similarity index 100% rename from tools/collect_pylint_input_files_for_backend.py rename to tools/collect_backend_specific_file_names.py diff --git a/tools/onnx_tranformer.py b/tools/onnx_tranformer.py index ada970c9195..fdba64fa72f 100644 --- a/tools/onnx_tranformer.py +++ b/tools/onnx_tranformer.py @@ -28,11 +28,11 @@ def main(argv): parser.add_argument("-o", "--output-model", help="Path to output model file", required=True) args = parser.parse_args(args=argv) - model = onnx.load(args.input_model) # pylint: disable=no-member + model = onnx.load(args.input_model) rename_quantize(model) - onnx.save(model, args.output_model) # pylint: disable=no-member + onnx.save(model, args.output_model) if __name__ == "__main__": diff --git a/tools/optimize_tf_graph.py b/tools/optimize_tf_graph.py index b83e1a12066..c4c56cfd2d4 100644 --- a/tools/optimize_tf_graph.py +++ b/tools/optimize_tf_graph.py @@ -26,7 +26,7 @@ def to_frozen_graph(model: tf.keras.Model): func = saving_utils.trace_model_call(model) concrete_func = func.get_concrete_function() - graph_captures = concrete_func.graph._captures # pylint: disable=protected-access + graph_captures = concrete_func.graph._captures captured_inputs = [t_name.name for t_val, t_name in graph_captures.values()] input_names = [ @@ -42,7 +42,7 @@ def to_frozen_graph(model: tf.keras.Model): concrete_func, lower_control_flow=False, aggressive_inlining=True ) graph_def = frozen_func.graph.as_graph_def(add_shapes=True) - with tf.Graph().as_default(): # pylint: disable=not-context-manager + with tf.Graph().as_default(): tf.import_graph_def(graph_def, name="") frozen_graph = tf_optimize_grappler(input_names, output_names, graph_def) diff --git a/tools/pb_to_tb.py b/tools/pb_to_tb.py index 9b418f8dff5..811e094462b 100644 --- a/tools/pb_to_tb.py +++ b/tools/pb_to_tb.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# pylint:skip-file + import shutil from pathlib import Path diff --git a/tools/update_eval_results.py b/tools/update_eval_results.py index 116821c9787..54e31a572ca 100644 --- a/tools/update_eval_results.py +++ b/tools/update_eval_results.py @@ -10,8 +10,6 @@ # limitations under the License. import argparse - -# pylint:skip-file import json import sys from collections import OrderedDict @@ -20,7 +18,6 @@ from pathlib import Path from typing import Dict, List, Optional, Tuple -# pylint:disable=import-error from mdutils import MdUtils from tests.shared.metric_thresholds import DIFF_FP32_MAX_GLOBAL