Repository: lanpa/tensorboardX Branch: master Commit: ca5072b12f22 Files: 155 Total size: 1.0 MB Directory structure: gitextract_40nonxya/ ├── .codecov.yml ├── .flake8 ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature-requests-or-general-questions.md │ └── workflows/ │ ├── build-wheel.yml │ ├── publish-pypi.yml │ └── test-matrix.yml ├── .gitignore ├── .readthedocs.yaml ├── HISTORY.rst ├── LICENSE ├── MANIFEST.in ├── README.md ├── compile.sh ├── docs/ │ ├── Makefile │ ├── conf.py │ ├── index.rst │ ├── requirements.txt │ ├── tensorboard.rst │ ├── tutorial.rst │ ├── tutorial_zh.rst │ └── utils.rst ├── examples/ │ ├── RUN_AFTER_PIP_INSTALL │ ├── __init__.py │ ├── chainer/ │ │ ├── extension_logger/ │ │ │ ├── net.py │ │ │ ├── train_dcgan.py │ │ │ ├── updater.py │ │ │ ├── visualize.py │ │ │ └── writetensorboard.py │ │ └── plain_logger/ │ │ ├── data.py │ │ ├── net.py │ │ └── train_vae.py │ ├── create_wit_samples.py │ ├── demo.py │ ├── demo_beholder.py │ ├── demo_comet.py │ ├── demo_custom_scalars.py │ ├── demo_embedding.py │ ├── demo_global_writer.py │ ├── demo_graph.py │ ├── demo_hogwild.py │ ├── demo_hparams.py │ ├── demo_matplotlib.py │ ├── demo_mesh.py │ ├── demo_multiple_embedding.py │ ├── demo_multiprocessing.py │ ├── demo_nvidia_smi.py │ ├── demo_onnx.py │ ├── demo_openvino.py │ ├── demo_purge.py │ ├── global_1.py │ ├── global_2.py │ ├── mobilenetv2.xml │ └── processed.cleveland.data ├── pyproject.toml ├── run_pytest.sh ├── tensorboardX/ │ ├── __init__.py │ ├── comet_utils.py │ ├── crc32c.py │ ├── embedding.py │ ├── event_file_writer.py │ ├── global_writer.py │ ├── onnx_graph.py │ ├── openvino_graph.py │ ├── proto/ │ │ ├── __init__.py │ │ ├── api.proto │ │ ├── api_pb2.py │ │ ├── attr_value.proto │ │ ├── attr_value_pb2.py │ │ ├── event.proto │ │ ├── event_pb2.py │ │ ├── graph.proto │ │ ├── graph_pb2.py │ │ ├── layout.proto │ │ ├── layout_pb2.py │ │ ├── node_def.proto │ │ ├── node_def_pb2.py │ │ ├── plugin_hparams.proto │ │ ├── plugin_hparams_pb2.py │ │ ├── plugin_mesh.proto │ │ ├── plugin_mesh_pb2.py │ │ ├── plugin_pr_curve.proto │ │ ├── plugin_pr_curve_pb2.py │ │ ├── plugin_text.proto │ │ ├── plugin_text_pb2.py │ │ ├── resource_handle.proto │ │ ├── resource_handle_pb2.py │ │ ├── summary.proto │ │ ├── summary_pb2.py │ │ ├── tensor.proto │ │ ├── tensor_pb2.py │ │ ├── tensor_shape.proto │ │ ├── tensor_shape_pb2.py │ │ ├── types.proto │ │ ├── types_pb2.py │ │ ├── versions.proto │ │ └── versions_pb2.py │ ├── record_writer.py │ ├── summary.py │ ├── torchvis.py │ ├── utils.py │ ├── visdom_writer.py │ ├── writer.py │ └── x2num.py ├── test-requirements.txt └── tests/ ├── __init__.py ├── event_file_writer_test.py ├── expect/ │ ├── caffe_mnist.expect │ ├── caffe_overfeat.expect │ ├── test_caffe2.test_simple_cnnmodel.expect │ ├── test_caffe2.test_simple_model.expect │ ├── test_pr_curve.test_pr_purve.expect │ ├── test_pr_curve.test_pr_purve_raw.expect │ ├── test_summary.test_audio.expect │ ├── test_summary.test_custom_scalars.expect │ ├── test_summary.test_float32_image.expect │ ├── test_summary.test_histogram_auto.expect │ ├── test_summary.test_histogram_doane.expect │ ├── test_summary.test_histogram_fd.expect │ ├── test_summary.test_hparams.expect │ ├── test_summary.test_hparams_bool.expect │ ├── test_summary.test_hparams_string.expect │ ├── test_summary.test_image_with_3_channel_batched.expect │ ├── test_summary.test_image_with_boxes.expect │ ├── test_summary.test_image_with_four_channel.expect │ ├── test_summary.test_image_with_four_channel_batched.expect │ ├── test_summary.test_image_with_one_channel.expect │ ├── test_summary.test_image_with_one_channel_batched.expect │ ├── test_summary.test_image_without_channel.expect │ ├── test_summary.test_mesh.expect │ ├── test_summary.test_text.expect │ ├── test_summary.test_uint8_image.expect │ └── test_summary.test_video.expect ├── expect_reader.py ├── mnist-8.onnx ├── record_writer_test.py ├── test_chainer_np.py ├── test_crc32c.py ├── test_embedding.py ├── test_figure.py ├── test_hparams.py ├── test_lint.py ├── test_multiprocess_write.py ├── test_numpy.py ├── test_onnx_graph.py ├── test_openvino_graph.py ├── test_pr_curve.py ├── test_pytorch_graph.py ├── test_pytorch_np.py ├── test_record_writer.py ├── test_summary.py ├── test_summary_writer.py ├── test_utils.py ├── test_visdom.py └── test_writer.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .codecov.yml ================================================ codecov: bot: lanpa coverage: status: project: # measuring the overall project coverage default: # context, you can create multiple ones with custom titles enabled: yes patch: default: enabled: no comment: layout: "diff, flags, files" behavior: default require_changes: false # if true: only post the comment if coverage changes require_base: no # [yes :: must have a base report to post] require_head: yes # [yes :: must have a head report to post] branches: null ================================================ FILE: .flake8 ================================================ [flake8] max-line-length = 120 ignore = W605,E305,E402,E721,E741,F401,F403,F405,F821,F841,F999 exclude = tensorboardX/proto ================================================ FILE: .github/ISSUE_TEMPLATE/bug_report.md ================================================ --- name: Bug report about: Create bug report title: '' labels: '' assignees: '' --- **Describe the bug** A clear and concise description of what the bug is. **Minimal runnable code to reproduce the behavior** ``` from tensorboardX import SummaryWriter ... ``` **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. **Environment** What is the result of `pip list|grep -E "torch|proto|tensor"` If the version is too old, please try to update first. **Python environment** Which version of python are you using? Did you use Andconda or Virtualenv? **Additional context** Add any other context about the problem here. ================================================ FILE: .github/ISSUE_TEMPLATE/feature-requests-or-general-questions.md ================================================ --- name: Feature requests or General questions about: Feature requests or general questions title: '' labels: '' assignees: '' --- ================================================ FILE: .github/workflows/build-wheel.yml ================================================ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Build and test the python package on: push: branches: - 'releases/**' jobs: build: name: Build whl from source runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: python-version: 3.9 - name: Fetch git tags from origin run: git fetch --tags origin - name: Install build and wheel packages run: >- python -m pip install build wheel --user - name: Build wheel and source distribution run: | echo `pwd` echo `git describe --tags` python -m build --wheel --sdist - name: Archive production artifacts uses: actions/upload-artifact@v4 with: name: dist-pip-whl path: | dist test-the-wheel: name: Install whl and run demo needs: build runs-on: ubuntu-latest steps: - name: Dump GitHub context id: github_context_step run: echo '${{ toJSON(github) }}' - uses: actions/checkout@v3 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: python-version: 3.9 - name: Download build artifacts uses: actions/download-artifact@v4.1.7 with: name: dist-pip-whl - name: Install tensorboardX from wheel run: pip install tensorboardx*.whl - name: Install torch torchvision for demo run: pip install torch torchvision - name: Print version run: python -c "import tensorboardX; print(tensorboardX.__version__)" - name: Run examples run: | cd examples python demo.py - name: Archive demo artifacts uses: actions/upload-artifact@v4 with: name: demo-results path: | examples/runs ================================================ FILE: .github/workflows/publish-pypi.yml ================================================ on: workflow_dispatch: inputs: publish_version: required: true type: string jobs: log-the-inputs: runs-on: ubuntu-latest steps: - run: | echo "target version: ${{ github.event.inputs.publish_version }}" env: VERSION: ${{ github.event.inputs.publish_version }} upload-to-pypi: name: Publish to PyPI test site runs-on: ubuntu-latest steps: - name: Dump GitHub context id: github_context_step run: | echo '${{ toJSON(github) }}' echo "target version: ${{ github.event.inputs.publish_version }}" - uses: actions/checkout@v3 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: python-version: 3.9 - name: Make sure the branch name is "refs/heads/releases/*" run: | if [[ "${{ github.ref }}" != refs/heads/releases/* ]]; then echo "This workflow only runs on branches matching 'releases/*'. Current branch: ${{ github.ref }}" exit 1 fi - name: Fetch git tags and create version tag run: | git fetch --tags origin git tag ${{ github.event.inputs.publish_version }} - name: Install build and wheel packages run: >- python -m pip install build wheel --user - name: Build wheel and source distribution run: | echo `pwd` python -m build --wheel --sdist - name: Install tensorboardX from wheel run: pip install dist/tensorboardx*.whl - name: Print version run: python -c "import tensorboardX; print(tensorboardX.__version__)" - name: Check version matches publish_version run: | VERSION=$(python -c "import tensorboardX; print(tensorboardX.__version__)") if [ "$VERSION" != "${{ github.event.inputs.publish_version }}" ]; then echo "Version mismatch: $VERSION does not match ${{ github.event.inputs.publish_version }}" exit 1 fi - name: Publish to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TESTSITE }} repository-url: https://test.pypi.org/legacy/ attestations: false - name: Publish to PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API }} repository_url: https://upload.pypi.org/legacy/ attestations: false ================================================ FILE: .github/workflows/test-matrix.yml ================================================ # This workflow will install Python dependencies, run tests and lint with a single version of Python # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Python application on: push: branches: [ master ] pull_request: branches: [ master ] jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: ["3.9", "3.10", "3.11", "3.12"] steps: - uses: actions/checkout@v2 - name: Install system dependencies and setup Python environment run: | sudo apt-get install libsndfile1 curl -LsSf https://astral.sh/uv/install.sh | sh uv venv --python ${{ matrix.python-version }} source .venv/bin/activate uv sync - name: Lint with ruff run: | source .venv/bin/activate ruff check tensorboardX/ - name: Test with pytest env: MPLBACKEND: Agg PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python run: | source .venv/bin/activate visdom & pytest --cov=tensorboardX --cov-report=xml tests/ - name: Upload coverage to Codecov if: ${{ !cancelled() && matrix.python-version == '3.11' }} run: | curl -Os https://cli.codecov.io/latest/linux/codecov chmod +x codecov ./codecov --verbose upload-process --fail-on-error -n 'service'-${{ github.run_id }} -F service -f coverage.xml test: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Install dependencies and run examples run: | curl -LsSf https://astral.sh/uv/install.sh | sh uv venv --python 3.9 source .venv/bin/activate uv pip install six tensorboard pytest matplotlib torchvision protobuf==4.22.3 moviepy==1.0.3 imageio==2.27 python examples/demo.py python examples/demo_graph.py python examples/demo_embedding.py python examples/demo_custom_scalars.py python examples/demo_multiple_embedding.py python examples/demo_purge.py python examples/demo_matplotlib.py test-protobuf-versions: needs: build runs-on: ubuntu-latest strategy: matrix: protobuf-version: ["3.20", "4.21", "4.22", "4.23"] steps: - uses: actions/checkout@v2 - name: Install python 3.11 and setup environment run: | curl -LsSf https://astral.sh/uv/install.sh | sh uv venv --python 3.11 - name: Run basic import check run: | source .venv/bin/activate uv pip install numpy protobuf==${{ matrix.protobuf-version }} python -c "import tensorboardX" ================================================ FILE: .gitignore ================================================ proto_src/ protoc-*.zip protoc/ __pycache__ docs/_* build dist *.egg-info runs/* *.pyc mnist tensorboardX/_version.py s3: .coverage .vscode .DS_store uv.lock ================================================ FILE: .readthedocs.yaml ================================================ # Read the Docs configuration file for Sphinx projects # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the OS, Python version and other tools you might need build: os: ubuntu-22.04 tools: python: "3.11" # You can also specify other tool versions: # nodejs: "20" # rust: "1.70" # golang: "1.20" # Build documentation in the "docs/" directory with Sphinx sphinx: configuration: docs/conf.py # You can configure Sphinx to use a different builder, for instance use the dirhtml builder for simpler URLs # builder: "dirhtml" # Fail on all warnings to avoid broken references # fail_on_warning: true # Optionally build your docs in additional formats such as PDF and ePub # formats: # - pdf # - epub # Optional but recommended, declare the Python requirements required # to build your documentation # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html python: install: - requirements: docs/requirements.txt ================================================ FILE: HISTORY.rst ================================================ History ======= 2.6.3 (2025-04-24) --------------------- * Support PaddlePaddle tensors * Added a use_metadata context manager * MoviePy version 2 support 2.6.2.2 (2023-08-20) --------------------- * Added protobuf's lower bound version (>=3.20) 2.6.2.1 (2023-08-20) --------------------- * [Yanked because operation miss] Added protobuf's lower bound version (>=3.20) 2.6.2 (2023-07-30) ------------------- * [Yanked because wrong dependency] Removed version limit for protobuf 2.6.1 (2023-06-18) ------------------- * Expose use_strict_trace parameter in add_graph (#694) * Upgrade to protobuf 4 * Fix git based package versioning * Fix GCS Connection Error #606 (#686) 2.6 (2023-02-12) ------------------- * Fixed several deprecation warnings * Update dependencies 2.5.1 (2022-06-05) ------------------- * Enforce protobuf's version upper bound 2.5 (2022-02-22) ----------------- * Fix deprecation warnings * Comet integration improvements (#658) 2.4.1 (2021-11-20) ------------------- * Fix a comet plugin bug if writer is reused. (#639) 2.4 (2021-06-30) ----------------- * Remove a dependency issue. (#631) 2.3 (2021-06-20) ----------------- * Support logging to comet.ml simutaneously. 2.2 (2021-04-03) ----------------- * Support for type hints. * Dropped Python 2 support. * Bug fixes, see the commit log in Github. 2.1 (2020-07-05) ----------------- * Global SummaryWriter that mimics python's default logger class, concurrent write is supported. * 200x speed up for add_audio. Please install the soundfile package for this feature. * Supports jax tensors. * The add_graph function is delegated to the one in torch.utils.tensorboard. * Bug fixes, see the commit log in Github. 2.0 (2019-12-31) ----------------- * Now you can tag Hparams trials with custom name instead of the default epoch time * Fixed a bug that add_hparams are rendered incorrectly with non-string values * Supports logging to Amazon S3 or Google Cloud Storage * Bug fixes and error message for add_embedding function * Draw openvino format with add_openvino_graph 1.9 (2019-10-04) ----------------- * Use new JIT backend for pytorch. This works better with pytorch 1.2 and 1.3 * Supports hparams plugin * add_embedding now supports numpy array input 1.8 (2019-07-05) ----------------- * Draw label text on image with bounding box provided. * crc32c speed up (optional by installing crc32c manually) * Rewrite add_graph. onnx backend is replaced by JIT to support more advanced structure. * Now you can add_mesh() to visualize colorful point cloud or meshes. 1.7 (2019-05-19) ----------------- * Able to write to S3 * Fixed raw histogram issue that nothing is shown in TensorBoard * Users can use various image/video dimension permutation by passing 'dataformats' parameter. * You can bybass the writer by passing write_to_disk=True to SummaryWriter 1.6 (2019-01-02) ----------------- * Many graph related bug is fixed in this version. * New function: add_images(). This function accepts 4D iamge tensor. See documentation. * Make add_image_with_boxes() usable. * API change: add_video now accepts BxTxCxHxW instead of BxCxTxHxW tensor. 1.5 (2018-12-10) ----------------- * Add API for Custom scalar * Add support for logging directly to S3 * Add support for Caffe2 graph * Pytorch 1.0.0 JIT graph support (alpha-release) 1.4 (2018-08-09) ----------------- * Made add_text compatible with tensorboard>1.6 * Fix the issue of strange histogram if default binning method is used * Supports passing matplotlib figures to add_image() * Resolve namespace confliction with TF tensorboard * add_image_boxes function * Supports custom timestamp for event 1.2 (2018-04-21) ----------------- * Supports tensorshape information in graph visualization. Drop support for 0.3.1 * Adds add_video function 1.1 (2018-02-21) ----------------- * Supports pytorch 0.3.1 (hacky) 1.0 (2018-01-18) ----------------- * Supports graph (the pretty one) 0.9 (2017-11-11) ----------------- * Supports markdown for add_text function * It's ready to log precision recall curve (needs tensorboard>=0.4) * Adds context manager for the SummaryWriter class 0.8 (2017-09-25) ----------------- * Package name renamed to tensorboardX to fix namespace confliction with tensorflow's tensorboard * Supports multi-scalars and JSON export * Multiple Embeddings in One Experiment * Supports Chainer and mxnet 0.7 (2017-08-22) ----------------- * remove tensorflow dependency for embedding function * fixed incorrect image<->label pairing in embedding function (#12) * unifies API call and adds docstring. Documentation is available at: http://tensorboard-pytorch.readthedocs.io/ 0.6.5 (2017-07-30) ------------------ * add travis test (py2.7, py3.6) * add support for python2 (in PyPI) 0.6 (2017-07-18) ----------------- * supports embedding 0.5 (2017-07-18) ----------------- * supports graph summary * fixed np.histogram issue 0.4 (2017-07-12) ----------------- * supports text summary 0.3 (2017-07-03) ----------------- * supports audio summary 0.2 (2017-06-24) ----------------- * simplifies add_image API * speed up add_histogram API by 35x 0.1 (2017-06-13) ------------------ * First commit. Reference: https://github.com/TeamHG-Memex/tensorboard_logger https://github.com/dmlc/tensorboard ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2025 Tzu-Wei Huang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: MANIFEST.in ================================================ include HISTORY.rst include LICENSE include compile.sh recursive-include tensorboardX/proto * recursive-exclude test * recursive-exclude examples * recursive-include tensorboardX/beholder * global-exclude *.pyc ================================================ FILE: README.md ================================================ # tensorboardX [![PyPI version](https://badge.fury.io/py/tensorboardX.svg)](https://badge.fury.io/py/tensorboardX) [![Documentation Status](https://readthedocs.org/projects/tensorboardx/badge/?version=latest)](https://tensorboardx.readthedocs.io/en/latest/?badge=latest) [![Coverage Status](https://codecov.io/gh/lanpa/tensorboardX/branch/master/graph/badge.svg)](https://codecov.io/gh/lanpa/tensorboardX/) Write TensorBoard events with simple function call. The current release (v2.6.3) is tested with PyTorch 2.6 / torchvision 0.21.0 / tensorboard 2.19.0 on Python 3.9 to 3.12 * Support `scalar`, `image`, `figure`, `histogram`, `audio`, `text`, `graph`, `onnx_graph`, `embedding`, `pr_curve`, `mesh`, `hyper-parameters` and `video` summaries. * [FAQ](https://github.com/lanpa/tensorboardX/wiki) ## Install `pip install tensorboardX` or build from source: `pip install 'git+https://github.com/lanpa/tensorboardX'` You can optionally install [`crc32c`](https://github.com/ICRAR/crc32c) to speed up. `pip install crc32c` Starting from tensorboardX 2.1, You need to install `soundfile` for the `add_audio()` function (200x speedup). `pip install soundfile` ## Example * Clone the files in https://github.com/lanpa/tensorboardX/tree/master/examples * Run the demo script: e.g. `python examples/demo.py` * Start TensorBoard with `tensorboard --logdir runs` ```python # demo.py import torch import torchvision.utils as vutils import numpy as np import torchvision.models as models from torchvision import datasets from tensorboardX import SummaryWriter resnet18 = models.resnet18(False) writer = SummaryWriter() sample_rate = 44100 freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440] for n_iter in range(100): dummy_s1 = torch.rand(1) dummy_s2 = torch.rand(1) # data grouping by `slash` writer.add_scalar('data/scalar1', dummy_s1[0], n_iter) writer.add_scalar('data/scalar2', dummy_s2[0], n_iter) writer.add_scalars('data/scalar_group', {'xsinx': n_iter * np.sin(n_iter), 'xcosx': n_iter * np.cos(n_iter), 'arctanx': np.arctan(n_iter)}, n_iter) dummy_img = torch.rand(32, 3, 64, 64) # output from network if n_iter % 10 == 0: x = vutils.make_grid(dummy_img, normalize=True, scale_each=True) writer.add_image('Image', x, n_iter) dummy_audio = torch.zeros(sample_rate * 2) for i in range(x.size(0)): # amplitude of sound should in [-1, 1] dummy_audio[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate)) writer.add_audio('myAudio', dummy_audio, n_iter, sample_rate=sample_rate) writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter) for name, param in resnet18.named_parameters(): writer.add_histogram(name, param.clone().cpu().data.numpy(), n_iter) # needs tensorboard 0.4RC or later writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand(100), n_iter) dataset = datasets.MNIST('mnist', train=False, download=True) images = dataset.test_data[:100].float() label = dataset.test_labels[:100] features = images.view(100, 784) writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1)) # export scalar data to JSON for external processing writer.export_scalars_to_json("./all_scalars.json") writer.close() ``` ## Screenshots ## Using TensorboardX with Comet TensorboardX now supports logging directly to [Comet](https://www.comet.com/site/products/ml-experiment-tracking/?utm_source=tensorboardx&utm_medium=partner&utm_campaign=partner_tensorboardx_2023). Comet is a **free** cloud based solution that allows you to automatically track, compare and explain your experiments. It adds a lot of functionality on top of tensorboard such as dataset management, diffing experiments, seeing the code that generated the results and more. This works out of the box and just require an additional line of code. See a full code example in this [Colab Notebook](https://colab.research.google.com/drive/1cTO3tgZ03nuJQ8kOjZhEiwbB-45tV4lm?usp=sharing)

## Tweaks To add more ticks for the slider (show more image history), check https://github.com/lanpa/tensorboardX/issues/44 or https://github.com/tensorflow/tensorboard/pull/1138 ## Reference * [TeamHG-Memex/tensorboard_logger](https://github.com/TeamHG-Memex/tensorboard_logger) * [dmlc/tensorboard](https://github.com/dmlc/tensorboard) ================================================ FILE: compile.sh ================================================ #!/bin/bash # Exit on error # set -e DESIRED_PROTO_VERSION="22.3" # call protoc direclty, if version is not the desired one, download the desired vesrion. if [ -f "protoc/bin/protoc" ]; then PROTOC_BIN="protoc/bin/protoc" else PROTOC_BIN=`which protoc` fi echo "using" $PROTOC_BIN CURRENT_PROTOC_VER=`${PROTOC_BIN} --version` if [ -z ${PROTOC_BIN} ] || [[ "$CURRENT_PROTOC_VER" != "libprotoc "$DESIRED_PROTO_VERSION ]]; then # Download and use the latest version of protoc. if [ "$(uname)" == "Darwin" ]; then PROTOC_ZIP="protoc-"$DESIRED_PROTO_VERSION"-osx-x86_64.zip" else PROTOC_ZIP="protoc-"$DESIRED_PROTO_VERSION"-linux-x86_64.zip" fi WGET_BIN=`which wget` if [[ ! -z ${WGET_BIN} ]]; then ${WGET_BIN} https://github.com/protocolbuffers/protobuf/releases/download/v"$DESIRED_PROTO_VERSION"/${PROTOC_ZIP} rm -rf protoc python -c "import zipfile; zipfile.ZipFile('"${PROTOC_ZIP}"','r').extractall('protoc')" PROTOC_BIN=protoc/bin/protoc chmod +x ${PROTOC_BIN} fi fi # Regenerate if [[ ! -z ${PROTOC_BIN} ]]; then # Delete all existing Python protobuf (*_pb2.py) output rm -rf tensorboardX/proto/*pb2*.py ${PROTOC_BIN} tensorboardX/proto/*.proto --python_out=. echo "Done generating tensorboardX/proto/*pb2*.py" else echo "protoc not installed so can't regenerate tensorboardX/proto/*pb2*.py, using precompiled version." fi ================================================ FILE: docs/Makefile ================================================ # Minimal makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXPROJ = tensorboardX SOURCEDIR = . BUILDDIR = _build # Put it first so that "make" without argument is like "make help". help: @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) .PHONY: help Makefile # Catch-all target: route all unknown targets to Sphinx using the new # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). %: Makefile @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) ================================================ FILE: docs/conf.py ================================================ #!/usr/bin/env python3 # -*- coding: utf-8 -*- # # tensorboardX documentation build configuration file, created by # sphinx-quickstart on Wed Aug 9 01:38:01 2017. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # import os import sys # sys.path.insert(0, os.path.abspath('.')) sys.path.append(os.path.join(os.path.dirname(__file__), '..')) #import tensorboard #uncomment to shadow pip installation # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ['sphinx.ext.autodoc', 'sphinx.ext.mathjax', 'sphinx.ext.intersphinx', 'sphinx.ext.napoleon', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: # # source_suffix = ['.rst', '.md'] source_suffix = '.rst' # The master toctree document. master_doc = 'index' # General information about the project. project = 'tensorboardX' copyright = '2017, tensorboardX Contributors' author = 'tensorboardX Contributors' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. version = '' # The full version, including alpha/beta/rc tags. release = '' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # # This is also used if you do content translation via gettext catalogs. # Usually you set "language" from the command line for these cases. language = None # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This patterns also effect to html_static_path and html_extra_path exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # If true, `todo` and `todoList` produce output, else they produce nothing. todo_include_todos = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. # # html_theme_options = {} # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". # html_static_path = ['_static'] # -- Options for HTMLHelp output ------------------------------------------ # Output file base name for HTML help builder. htmlhelp_basename = 'tensorboardXdoc' # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # # 'papersize': 'letterpaper', # The font size ('10pt', '11pt' or '12pt'). # # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # # 'preamble': '', # Latex figure (float) alignment # # 'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'tensorboardX.tex', 'tensorboardX Documentation', 'tensorboardX Contributors', 'manual'), ] # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'tensorboardX', 'tensorboardX Documentation', [author], 1) ] # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'tensorboardX', 'tensorboardX Documentation', author, 'tensorboardX', 'One line description of project.', 'Miscellaneous'), ] # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = { 'python':('https://docs.python.org/3', None), 'numpy': ('http://docs.scipy.org/doc/numpy/', None), 'torch': ('http://pytorch.org/docs/master', None), 'matplotlib': ('http://matplotlib.sourceforge.net/', None), } ================================================ FILE: docs/index.rst ================================================ .. tensorboardX documentation master file, created by sphinx-quickstart on Wed Aug 9 01:38:01 2017. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to tensorboardX's documentation! =============================================== .. toctree:: :maxdepth: 2 :caption: Contents: tensorboard utils tutorial tutorial_zh Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search` ================================================ FILE: docs/requirements.txt ================================================ sphinx-rtd-theme ================================================ FILE: docs/tensorboard.rst ================================================ tensorboardX =================================== .. automodule:: tensorboardX .. autoclass:: SummaryWriter :members: .. automethod:: __init__ .. autoclass:: GlobalSummaryWriter :members: .. automethod:: __init__ .. autoclass:: TorchVis :members: .. automethod:: __init__ ================================================ FILE: docs/tutorial.rst ================================================ Tutorials ********* What is tensorboard X? ---------------------- At first, the package was named tensorboard, and soon there are issues about name confliction. The first alternative name came to my mind is tensorboard-pytorch, but in order to make it more general, I chose tensorboardX which stands for tensorboard for X. Google's tensorflow's tensorboard is a web server to serve visualizations of the training progress of a neural network, it visualizes scalar values, images, text, etc.; these information are saved as events in tensorflow. It's a pity that other deep learning frameworks lack of such tool, so there are already packages letting users to log the events without tensorflow; however they only provides basic functionalities. The purpose of this package is to let researchers use a simple interface to log events within PyTorch (and then show visualization in tensorboard). This package currently supports logging scalar, image, audio, histogram, text, embedding, and the route of back-propagation. The following manual is tested on Ubuntu and Mac, and the environment are anaconda's python2 and python3. Create a summary writer ----------------------- Before logging anything, we need to create a writer instance. This can be done with: .. code-block:: python from tensorboardX import SummaryWriter #SummaryWriter encapsulates everything writer = SummaryWriter('runs/exp-1') #creates writer object. The log will be saved in 'runs/exp-1' writer2 = SummaryWriter() #creates writer2 object with auto generated file name, the dir will be something like 'runs/Aug20-17-20-33' writer3 = SummaryWriter(comment='3x learning rate') #creates writer3 object with auto generated file name, the comment will be appended to the filename. The dir will be something like 'runs/Aug20-17-20-33-3xlearning rate' Each subfolder will be treated as different experiments in tensorboard. Each time you re-run the experiment with different settings, you should change the name of the sub folder such as ``runs/exp2``, ``runs/myexp`` so that you can easily compare different experiment settings. Type ``tensorboard runs`` to compare different runs in tensorboard. General api format ------------------ .. code-block:: python add_something(tag name, object, iteration number) Add scalar ----------- Scalar value is the most simple data type to deal with. Mostly we save the loss value of each training step, or the accuracy after each epoch. Sometimes I save the corresponding learning rate as well. It's cheap to save scalar value. Just log anything you think is important. To log a scalar value, use ``writer.add_scalar('myscalar', value, iteration)``. Note that the program complains if you feed a PyTorch tensor. Remember to extract the scalar value by ``x.item()`` if ``x`` is a torch scalar tensor. Add image --------- An image is represented as 3-dimensional tensor. The simplest case is save one image at a time. In this case, the image should be passed as a 3-dimension tensor of size ``[3, H, W]``. The three dimensions correspond to R, G, B channel of an image. After your image is computed, use ``writer.add_image('imresult', x, iteration)`` to save the image. If you have a batch of images to show, use ``torchvision``'s ``make_grid`` function to prepare the image array and send the result to ``add_image(...)`` (``make_grid`` takes a 4D tensor and returns tiled images in 3D tensor). .. Note:: Remember to normalize your image. Add histogram ------------- Saving histograms is expensive. Both in computation time and storage. If training slows down after using this package, check this first. To save a histogram, convert the array into numpy array and save with ``writer.add_histogram('hist', array, iteration)``. Add figure ---------- You can save a matplotlib figure to tensorboard with the add_figure function. ``figure`` input should be ``matplotlib.pyplot.figure`` or a list of ``matplotlib.pyplot.figure``. Check ``_ for the detailed usage. Add graph --------- To visualize a model, you need a model ``m`` and the input ``t``. ``t`` can be a tensor or a list of tensors depending on your model. If error happens, make sure that ``m(t)`` runs without problem first. See `The graph demo `_ for complete example. Add audio --------- To log a single channel audio, use ``add_audio(tag, audio, iteration, sample_rate)``, where ``audio`` is an one dimensional array, and each element in the array represents the consecutive amplitude samples. For a 2 seconds audio with ``sample_rate`` 44100 Hz, the input ``x`` should have 88200 elements. Each element should lie in [−1, 1]. Add embedding ------------- Embeddings, high dimensional data, can be visualized and converted into human perceptible 3D data by tensorboard, which provides PCA and t-sne to project the data into low dimensional space. What you need to do is provide a bunch of points and tensorboard will do the rest for you. The bunch of points is passed as a tensor of size ``n x d``, where ``n`` is the number of points and ``d`` is the feature dimension. The feature representation can either be raw data (*e.g.* the MNIST image) or a representation learned by your network (extracted feature). This determines how the points distributes. To make the visualization more informative, you can pass optional metadata or ``label_imgs`` for each data points. In this way you can see that neighboring point have similar label and distant points have very different label (semantically or visually). Here the metadata is a list of labels, and the length of the list should equal to ``n``, the number of the points. The ``label_imgs`` is a 4D tensor of size ``NCHW``. ``N`` should equal to ``n`` as well. See `The embedding demo `_ for complete example. Useful commands --------------- Install ======= Simply type ``pip install tensorboardX`` in a unix shell to install this package. To use the newest version, you might need to build from source or ``pip install tensorboardX —-no-cache-dir`` . To run tensorboard web server, you need to install it using ``pip install tensorboard``. After that, type ``tensorboard --logdir=`` to start the server, where ``your_log_dir`` is the parameter of the object constructor. I think this command is tedious, so I add a line alias ``tb='tensorboard --logdir '`` in ``~/.bashrc``. In this way, the above command is simplified as ``tb ``. Use your favorite browser to load the tensorboard page, the address will be shown in the terminal after starting the server. Misc ---- Performance issue ================= Logging is cheap, but display is expensive. For my experience, if there are 3 or more experiments to show at a time and each experiment have, say, 50k points, tensorboard might need a lot of time to present the data. Grouping plots ============== Usually, there are many numbers to log in one experiment. For example, when training GANs you should log the loss of the generator, discriminator. If the loss is composed of two other loss functions, say L1 and MSE, you might want to log the value of the other two losses as well. In this case, you can write the tags as Gen/L1, Gen/MSE, Desc/L1, Desc/MSE. In this way, tensorboard will group the plots into two sections (Gen, Desc). You can also use the regular expression to filter data. ================================================ FILE: docs/tutorial_zh.rst ================================================ Tutorials_zh ************* 緣起 ------ Google TensorFlow 附加的工具 Tensorboard 是一個很好用的視覺化工具。他可以記錄數字,影像或者是聲音資訊,對於觀察類神經網路訓練的過程非常有幫助。很可惜的是其他的訓練框架(PyTorch, Chainer, numpy)並沒有這麼好用的工具。網路上稍加搜尋可以發現已經有一些現成的套件可以讓不同的訓練框架使用 web 介面來觀察訓練情形,不過他們可以記錄的東西比較有限或是使用起來比較複雜 (tensorboard_logger, visdom)。tensorboardX 的目的就是讓其他 tensorboard 的功能都可以輕易的被非 TensorFlow 的框架使用。 目前這個套件除了 tensorboard beholder 之外支援所有 tensorboard 的紀錄型態。這個套件目前的標準測試環境為 Ubuntu 或是 Mac ,windows 則是有不定期手動測試;使用的 python 版本為 anaconda 的 python3。 安裝 ------- 在命令列輸入 ``pip install tensorboardX`` 即可 或是最新版源碼安裝 ``pip install tensorboardX`` 使用 ------- 建立 event writer 實體 在紀錄任何東西之前,我們需要建立一個 event writer 實體。 from tensorboardX import SummaryWriter #SummaryWriter 是一個類別,包含這套件的所有功能。 ``writer = SummaryWriter('runs/exp-1')`` #建立實體。資料存放在:``'runs/exp-1'`` #接下來要寫入任何資料都是呼叫 ``writer.add_某功能()`` ``writer = SummaryWriter()`` #使用預設名稱建立實體。資料存放在:``'runs/現在時間-機器名字'`` ex. ``'runs/Aug20-obov01'`` ``writer = SummaryWriter(comment='3xLR')`` #在預設資料夾後面加上註解 檔名變為:``'runs/Aug20-obov01-3xLR'`` 上面的程式碼會在目前的工作目錄下建立一個叫 ``runs`` 的資料夾以及子目錄 ``exp1``。 每個子目錄都會被視為一個實驗。每次執行新的實驗時,比如說改了一些參數,這時請將資料夾重新命名,像是: ``runs/exp2``, ``runs/myexp`` 這樣可以便於比較實驗的結果。 建議:資料夾可以用時間命名或者是直接把參數當成資料夾的名稱。 建立 writer 實體之後就可以開始紀錄資料了 API 的長相大概是:``add_xxx(標籤,要記錄的東西,時間戳,其他參數)`` 紀錄純量 ------------- 純量是最好記錄的東西。通常我們會把每次訓練的損失記錄下來或者是測試的準確度都是值得記錄的東西。其他數據,像是學習率也值得紀錄。 紀錄純量的方法是 ``writer.add_scalar('myscalar', value, iteration)`` value 可以是 PyTorch tensor , numpy或是 float,int 之類的python原生數字類別。 記錄影像 ------------- 影像使用一個三維的矩陣來表示。這三個維度分別代表紅色,綠色,藍色的強度。一張寬200, 高100的影像其對應的矩陣大小為[3, 100, 200] (CHW)。最簡單情況是只有一張影像要存。這時候只需要注意一下是不是符合上述的規格然後將它傳到: ``writer.add_image('imresult', image, iteration)`` 即可。 通常訓練的時候會採用批次處理,所以有一大堆影像要存。這時候請確定你的資料維度是 ``(NCHW)``, 其中 ``N`` 是batchsize。``add_image`` 會自動將他排列成適當大小。要注意的是,如果要記錄的影像是 OpenCV/numpy 格式,他們通常呈現 ``(HWC)`` 的排列,這時候要呼叫 ``numpy.transpose`` 將其轉為正確的維度,否則會報錯。另外就是注意影像的值的範圍要介於 [0, 1] 之間。 紀錄直方圖(histogram) ------------------------------- 記錄直方圖很耗 CPU 資源,不要常用。如果你用了這個套件之後覺得速度變慢了請先檢查一下是不是這個原因。使用方法很簡單,呼叫 ``writer.add_histogram('hist', array, iteration)`` 即可紀錄。 紀錄聲音 ------------- ``writer.add_audio('myaudio', audio, iteration, sample_rate)`` 這功能只支援單聲道。 add_audio 要傳入的聲音資訊是個一維陣列,陣列的每一個元素代表在每一個取樣點的振幅大小。取樣頻率(sample_rate)為 44100 kHz 的情況下。一段2秒鐘的聲音應該要有88200個點;注意其中每個元素的值應該都介於正負1之間。 紀錄文字 ------------- ``writer.add_text('mytext', 'this is a pen', iteration)`` 除了一般字串之外,也支援簡單的 markdown 表格。 記錄網路架構。 -------------------------- (實驗性的功能,模型複雜的時候不確定對不對) 問題很多的功能。使用上比較複雜。需要準備兩個東西:網路模型 以及 你要餵給他的 tensor 舉例來說,令模型為 m,輸入為 x,則使用方法為: ``add_graph(m, (x, ))`` 這裡使用 tuple 的原因是當網路有多個輸入時,可以把他擴充成 ``add_graph(m, (x, y, z))`` ,如果只有單一輸入,寫成 ``add_graph(m, x)`` 也無妨。 常會出錯的原因: - 較新的 operator pytorch本身不支援JIT - 輸入是 cpu tensor,model 在 GPU 上。(或是反過來) - 輸入的 tensor 大小錯誤,跑到後面幾層維度消失了 - model 寫錯,前後兩層 feature dimension 對不上 除錯方法 forward propagate 一次 ``m(x)`` 或是多個輸入時:``m((x, y, z))`` 2. 用 ``torch.onnx.export`` 導出模型,觀察錯誤訊息。 高維度資料視覺化/降維 (embedding) --------------------------------------------------- 因為人類對物體的了解程度只有三維,所以當資料的維度超過三的時候我們沒辦法將他視覺化。這時候就需要降維來讓資料的維度小於等於三。降維運算由 tensorboard 以 Javascript 執行,演算法有 PCA 及 t-sne 兩種可選。這邊我們只需要負責提供每個點的高維度特徵即可。提供的格式是一個矩陣,一個 ``n x d`` 的矩陣 ``n`` 點的數量, ``d`` 是維度的多寡。 高維度特徵可以是原始資料。比如說影像,或是網路學到的壓縮結果。這原始資料決定了資料的分佈情形。如果要看得更清楚一點,你可以再傳 metadata / label_imgs 的參數進去(metadata是一個 python list 長度為 ``n``, ``label_imgs`` 是一個 4 維矩陣,大小是 ``nCHW``。這樣每個點就會有他對應的文字或圖在旁邊。不懂的話就看範例吧:https://github.com/lanpa/tensorboardX/blob/master/examples/demo_embedding.py 紀錄短片 --------------- 類似於紀錄影像,不過傳入的物件維度是 ``[B, C, T ,H, W]``,其中 ``T`` 是影格的數量。所以一個 30 frame 的彩色影片 維度是 ``[B, 3, 30 ,H, W]``。 紀錄 pr curve ------------------- 根據預測的機率值以及其對應的標準答案計算 precision-recall 的結果並保存。 ``add_pr_curve (tag, labels, predictions, step)`` labels是標準答案,predictions是程式對樣本的預測。 假設有十筆資料 labels就會長得像 ``[0, 0, 1, 0, 0, 1, 0, 1, 0, 1]``,predictions則長的像 ``[0.1, 0.3, 0.8, 0.2, 0.4, 0.5, 0.1, 0.7, 0.9, 0.2]``。 pyplot 的圖表 ------------------------------ 用 matplotlib 畫了美美的圖表想紀錄?請用 ``add_figure`` 。傳入的物件是 matplotlib 的 figure。 顯示結果 Tensorboard 本質是個網頁伺服器,他讀取的資料來自於訓練網路的時候程式 (tensorboardX) 寫下的事件檔。因為 tensorboard 包含於 tensorflow,所以你需要另外安裝一份 tensorflow 在伺服器主機。我想大部分人都已經裝過了。沒裝過的話就在 unix shell 介面輸入 ``pip install tensorboard``。如果沒有使用 TensorFlow 訓練的需求,建議裝非 GPU 版本,啟動速度快得多。 接下來在命令列輸入 ``tensorboard --logdir=`` (以前面的例子來說:``tensorboard --logdir=runs``)伺服器就會啟動了。這個指令打起來很麻煩,所以我都在 ``~/.bashrc`` 加一行:``alias tb='tensorboard --logdir '`` 如此一來指令就簡化成 ``tb ``。接下來就是照著終端機上的指示打開你的瀏覽器就可以看到畫面了。 ================================================ FILE: docs/utils.rst ================================================ Helper functions =================================== .. autofunction:: tensorboardX.utils.figure_to_image ================================================ FILE: examples/RUN_AFTER_PIP_INSTALL ================================================ ================================================ FILE: examples/__init__.py ================================================ ================================================ FILE: examples/chainer/extension_logger/net.py ================================================ #!/usr/bin/env python from __future__ import print_function import numpy import chainer from chainer import cuda import chainer.functions as F import chainer.links as L def add_noise(h, sigma=0.2): xp = cuda.get_array_module(h.data) if chainer.config.train: return h + sigma * xp.random.randn(*h.shape) else: return h class Generator(chainer.Chain): def __init__(self, n_hidden, bottom_width=4, ch=512, wscale=0.02): super(Generator, self).__init__() self.n_hidden = n_hidden self.ch = ch self.bottom_width = bottom_width with self.init_scope(): w = chainer.initializers.Normal(wscale) self.l0 = L.Linear(self.n_hidden, bottom_width * bottom_width * ch, initialW=w) self.dc1 = L.Deconvolution2D(ch, ch // 2, 4, 2, 1, initialW=w) self.dc2 = L.Deconvolution2D(ch // 2, ch // 4, 4, 2, 1, initialW=w) self.dc3 = L.Deconvolution2D(ch // 4, ch // 8, 4, 2, 1, initialW=w) self.dc4 = L.Deconvolution2D(ch // 8, 3, 3, 1, 1, initialW=w) self.bn0 = L.BatchNormalization(bottom_width * bottom_width * ch) self.bn1 = L.BatchNormalization(ch // 2) self.bn2 = L.BatchNormalization(ch // 4) self.bn3 = L.BatchNormalization(ch // 8) def make_hidden(self, batchsize): return numpy.random.uniform(-1, 1, (batchsize, self.n_hidden, 1, 1))\ .astype(numpy.float32) def __call__(self, z): h = F.reshape(F.relu(self.bn0(self.l0(z))), (len(z), self.ch, self.bottom_width, self.bottom_width)) h = F.relu(self.bn1(self.dc1(h))) h = F.relu(self.bn2(self.dc2(h))) h = F.relu(self.bn3(self.dc3(h))) x = F.sigmoid(self.dc4(h)) return x class Discriminator(chainer.Chain): def __init__(self, bottom_width=4, ch=512, wscale=0.02): w = chainer.initializers.Normal(wscale) super(Discriminator, self).__init__() with self.init_scope(): self.c0_0 = L.Convolution2D(3, ch // 8, 3, 1, 1, initialW=w) self.c0_1 = L.Convolution2D(ch // 8, ch // 4, 4, 2, 1, initialW=w) self.c1_0 = L.Convolution2D(ch // 4, ch // 4, 3, 1, 1, initialW=w) self.c1_1 = L.Convolution2D(ch // 4, ch // 2, 4, 2, 1, initialW=w) self.c2_0 = L.Convolution2D(ch // 2, ch // 2, 3, 1, 1, initialW=w) self.c2_1 = L.Convolution2D(ch // 2, ch // 1, 4, 2, 1, initialW=w) self.c3_0 = L.Convolution2D(ch // 1, ch // 1, 3, 1, 1, initialW=w) self.l4 = L.Linear(bottom_width * bottom_width * ch, 1, initialW=w) self.bn0_1 = L.BatchNormalization(ch // 4, use_gamma=False) self.bn1_0 = L.BatchNormalization(ch // 4, use_gamma=False) self.bn1_1 = L.BatchNormalization(ch // 2, use_gamma=False) self.bn2_0 = L.BatchNormalization(ch // 2, use_gamma=False) self.bn2_1 = L.BatchNormalization(ch // 1, use_gamma=False) self.bn3_0 = L.BatchNormalization(ch // 1, use_gamma=False) def __call__(self, x): h = add_noise(x) h = F.leaky_relu(add_noise(self.c0_0(h))) h = F.leaky_relu(add_noise(self.bn0_1(self.c0_1(h)))) h = F.leaky_relu(add_noise(self.bn1_0(self.c1_0(h)))) h = F.leaky_relu(add_noise(self.bn1_1(self.c1_1(h)))) h = F.leaky_relu(add_noise(self.bn2_0(self.c2_0(h)))) h = F.leaky_relu(add_noise(self.bn2_1(self.c2_1(h)))) h = F.leaky_relu(add_noise(self.bn3_0(self.c3_0(h)))) return self.l4(h) ================================================ FILE: examples/chainer/extension_logger/train_dcgan.py ================================================ #!/usr/bin/env python from __future__ import print_function import argparse import os import chainer from chainer import training from chainer.training import extensions from net import Discriminator from net import Generator from updater import DCGANUpdater from visualize import out_generated_image from tensorboardX import SummaryWriter from writetensorboard import LogTensorboard def main(): parser = argparse.ArgumentParser(description='Chainer example: DCGAN') parser.add_argument('--batchsize', '-b', type=int, default=50, help='Number of images in each mini-batch') parser.add_argument('--epoch', '-e', type=int, default=1000, help='Number of sweeps over the dataset to train') parser.add_argument('--gpu', '-g', type=int, default=-1, help='GPU ID (negative value indicates CPU)') parser.add_argument('--dataset', '-i', default='', help='Directory of image files. Default is cifar-10.') parser.add_argument('--out', '-o', default='result', help='Directory to output the result') parser.add_argument('--resume', '-r', default='', help='Resume the training from snapshot') parser.add_argument('--n_hidden', '-n', type=int, default=100, help='Number of hidden units (z)') parser.add_argument('--seed', type=int, default=0, help='Random seed of z at visualization stage') parser.add_argument('--snapshot_interval', type=int, default=1000, help='Interval of snapshot') parser.add_argument('--display_interval', type=int, default=100, help='Interval of displaying log to console') args = parser.parse_args() print('GPU: {}'.format(args.gpu)) print('# Minibatch-size: {}'.format(args.batchsize)) print('# n_hidden: {}'.format(args.n_hidden)) print('# epoch: {}'.format(args.epoch)) print('') writer = SummaryWriter() # Set up a neural network to train gen = Generator(n_hidden=args.n_hidden) dis = Discriminator() if args.gpu >= 0: # Make a specified GPU current chainer.cuda.get_device_from_id(args.gpu).use() gen.to_gpu() # Copy the model to the GPU dis.to_gpu() # Setup an optimizer def make_optimizer(model, alpha=0.0002, beta1=0.5): optimizer = chainer.optimizers.Adam(alpha=alpha, beta1=beta1) optimizer.setup(model) optimizer.add_hook(chainer.optimizer.WeightDecay(0.0001), 'hook_dec') return optimizer opt_gen = make_optimizer(gen) opt_dis = make_optimizer(dis) if args.dataset == '': # Load the CIFAR10 dataset if args.dataset is not specified train, _ = chainer.datasets.get_cifar10(withlabel=False, scale=255.) else: all_files = os.listdir(args.dataset) image_files = [f for f in all_files if ('png' in f or 'jpg' in f)] print('{} contains {} image files' .format(args.dataset, len(image_files))) train = chainer.datasets\ .ImageDataset(paths=image_files, root=args.dataset) train_iter = chainer.iterators.SerialIterator(train, args.batchsize) # Set up a trainer updater = DCGANUpdater( models=(gen, dis), iterator=train_iter, optimizer={ 'gen': opt_gen, 'dis': opt_dis}, device=args.gpu) trainer = training.Trainer(updater, (args.epoch, 'epoch'), out=args.out) snapshot_interval = (args.snapshot_interval, 'iteration') display_interval = (args.display_interval, 'iteration') trainer.extend( extensions.snapshot(filename='snapshot_iter_{.updater.iteration}.npz'), trigger=snapshot_interval) trainer.extend(extensions.snapshot_object( gen, 'gen_iter_{.updater.iteration}.npz'), trigger=snapshot_interval) trainer.extend(extensions.snapshot_object( dis, 'dis_iter_{.updater.iteration}.npz'), trigger=snapshot_interval) trainer.extend(extensions.LogReport(trigger=display_interval)) trainer.extend(LogTensorboard(trigger=display_interval, logger=writer)) trainer.extend(extensions.PrintReport([ 'epoch', 'iteration', 'gen/loss', 'dis/loss', ]), trigger=display_interval) trainer.extend(extensions.ProgressBar(update_interval=10)) trainer.extend( out_generated_image( gen, dis, 10, 10, args.seed, args.out, writer), trigger=snapshot_interval) if args.resume: # Resume from a snapshot chainer.serializers.load_npz(args.resume, trainer) # Run the training trainer.run() if __name__ == '__main__': main() ================================================ FILE: examples/chainer/extension_logger/updater.py ================================================ #!/usr/bin/env python from __future__ import print_function import chainer import chainer.functions as F from chainer import Variable class DCGANUpdater(chainer.training.StandardUpdater): def __init__(self, *args, **kwargs): self.gen, self.dis = kwargs.pop('models') super(DCGANUpdater, self).__init__(*args, **kwargs) def loss_dis(self, dis, y_fake, y_real): batchsize = len(y_fake) L1 = F.sum(F.softplus(-y_real)) / batchsize L2 = F.sum(F.softplus(y_fake)) / batchsize loss = L1 + L2 chainer.report({'loss': loss}, dis) return loss def loss_gen(self, gen, y_fake): batchsize = len(y_fake) loss = F.sum(F.softplus(-y_fake)) / batchsize chainer.report({'loss': loss}, gen) return loss def update_core(self): gen_optimizer = self.get_optimizer('gen') dis_optimizer = self.get_optimizer('dis') batch = self.get_iterator('main').next() x_real = Variable(self.converter(batch, self.device)) / 255. xp = chainer.cuda.get_array_module(x_real.data) gen, dis = self.gen, self.dis batchsize = len(batch) y_real = dis(x_real) z = Variable(xp.asarray(gen.make_hidden(batchsize))) x_fake = gen(z) y_fake = dis(x_fake) dis_optimizer.update(self.loss_dis, dis, y_fake, y_real) gen_optimizer.update(self.loss_gen, gen, y_fake) ================================================ FILE: examples/chainer/extension_logger/visualize.py ================================================ #!/usr/bin/env python import os import numpy as np from PIL import Image import chainer import chainer.cuda from chainer import Variable def out_generated_image(gen, dis, rows, cols, seed, dst, writer): @chainer.training.make_extension() def make_image(trainer): np.random.seed(seed) n_images = rows * cols xp = gen.xp z = Variable(xp.asarray(gen.make_hidden(n_images))) with chainer.using_config('train', False): x = gen(z) writer.add_image('img', x, trainer.updater.iteration) return make_image ================================================ FILE: examples/chainer/extension_logger/writetensorboard.py ================================================ import json import os import shutil import tempfile import six from chainer import reporter from chainer import serializer as serializer_module from chainer.training import extension from chainer.training import trigger as trigger_module class LogTensorboard(extension.Extension): """Trainer extension to output the accumulated results to a log file. This extension accumulates the observations of the trainer to :class:`~chainer.DictSummary` at a regular interval specified by a supplied trigger, and writes them into a log file in JSON format. There are two triggers to handle this extension. One is the trigger to invoke this extension, which is used to handle the timing of accumulating the results. It is set to ``1, 'iteration'`` by default. The other is the trigger to determine when to emit the result. When this trigger returns True, this extension appends the summary of accumulated values to the list of past summaries, and writes the list to the log file. Then, this extension makes a new fresh summary object which is used until the next time that the trigger fires. It also adds some entries to each result dictionary. - ``'epoch'`` and ``'iteration'`` are the epoch and iteration counts at the output, respectively. - ``'elapsed_time'`` is the elapsed time in seconds since the training begins. The value is taken from :attr:`Trainer.elapsed_time`. Args: keys (iterable of strs): Keys of values to accumulate. If this is None, all the values are accumulated and output to the log file. trigger: Trigger that decides when to aggregate the result and output the values. This is distinct from the trigger of this extension itself. If it is a tuple in the form ``, 'epoch'`` or ``, 'iteration'``, it is passed to :class:`IntervalTrigger`. postprocess: Callback to postprocess the result dictionaries. Each result dictionary is passed to this callback on the output. This callback can modify the result dictionaries, which are used to output to the log file. log_name (str): Name of the log file under the output directory. It can be a format string: the last result dictionary is passed for the formatting. For example, users can use '{iteration}' to separate the log files for different iterations. If the log name is None, it does not output the log to any file. """ def __init__(self, keys=None, trigger=(1, 'epoch'), postprocess=None, log_name='log', logger=None): self._keys = keys self._trigger = trigger_module.get_trigger(trigger) self._postprocess = postprocess self._log_name = log_name self._log = [] self._logger = logger self._init_summary() def __call__(self, trainer): # accumulate the observations keys = self._keys observation = trainer.observation summary = self._summary if keys is None: summary.add(observation) else: summary.add({k: observation[k] for k in keys if k in observation}) for k, v in observation.items(): #self._logger.add_scalar(k, chainer.cuda.to_cpu(observation[k].data), trainer.updater.iteration) self._logger.add_scalar( k, observation[k], trainer.updater.iteration) if self._trigger(trainer): # output the result stats = self._summary.compute_mean() stats_cpu = {} for name, value in six.iteritems(stats): stats_cpu[name] = float(value) # copy to CPU updater = trainer.updater stats_cpu['epoch'] = updater.epoch stats_cpu['iteration'] = updater.iteration stats_cpu['elapsed_time'] = trainer.elapsed_time if self._postprocess is not None: self._postprocess(stats_cpu) self._log.append(stats_cpu) # write to the log file if self._log_name is not None: log_name = self._log_name.format(**stats_cpu) fd, path = tempfile.mkstemp(prefix=log_name, dir=trainer.out) with os.fdopen(fd, 'w') as f: json.dump(self._log, f, indent=4) new_path = os.path.join(trainer.out, log_name) shutil.move(path, new_path) # reset the summary for the next output self._init_summary() @property def log(self): """The current list of observation dictionaries.""" return self._log def serialize(self, serializer): if hasattr(self._trigger, 'serialize'): self._trigger.serialize(serializer['_trigger']) # Note that this serialization may lose some information of small # numerical differences. if isinstance(serializer, serializer_module.Serializer): log = json.dumps(self._log) serializer('_log', log) else: log = serializer('_log', '') self._log = json.loads(log) def _init_summary(self): self._summary = reporter.DictSummary() ================================================ FILE: examples/chainer/plain_logger/data.py ================================================ import gzip import os import numpy as np import six from six.moves.urllib import request parent = 'http://yann.lecun.com/exdb/mnist' train_images = 'train-images-idx3-ubyte.gz' train_labels = 'train-labels-idx1-ubyte.gz' test_images = 't10k-images-idx3-ubyte.gz' test_labels = 't10k-labels-idx1-ubyte.gz' num_train = 60000 num_test = 10000 dim = 784 def load_mnist(images, labels, num): data = np.zeros(num * dim, dtype=np.uint8).reshape((num, dim)) target = np.zeros(num, dtype=np.uint8).reshape((num, )) with gzip.open(images, 'rb') as f_images,\ gzip.open(labels, 'rb') as f_labels: f_images.read(16) f_labels.read(8) for i in six.moves.range(num): target[i] = ord(f_labels.read(1)) for j in six.moves.range(dim): data[i, j] = ord(f_images.read(1)) return data, target def download_mnist_data(): print('Downloading {:s}...'.format(train_images)) request.urlretrieve('{:s}/{:s}'.format(parent, train_images), train_images) print('Done') print('Downloading {:s}...'.format(train_labels)) request.urlretrieve('{:s}/{:s}'.format(parent, train_labels), train_labels) print('Done') print('Downloading {:s}...'.format(test_images)) request.urlretrieve('{:s}/{:s}'.format(parent, test_images), test_images) print('Done') print('Downloading {:s}...'.format(test_labels)) request.urlretrieve('{:s}/{:s}'.format(parent, test_labels), test_labels) print('Done') print('Converting training data...') data_train, target_train = load_mnist(train_images, train_labels, num_train) print('Done') print('Converting test data...') data_test, target_test = load_mnist(test_images, test_labels, num_test) mnist = {'data': np.append(data_train, data_test, axis=0), 'target': np.append(target_train, target_test, axis=0)} print('Done') print('Save output...') with open('mnist.pkl', 'wb') as output: six.moves.cPickle.dump(mnist, output, -1) print('Done') print('Convert completed') def load_mnist_data(): if not os.path.exists('mnist.pkl'): download_mnist_data() with open('mnist.pkl', 'rb') as mnist_pickle: mnist = six.moves.cPickle.load(mnist_pickle) return mnist ================================================ FILE: examples/chainer/plain_logger/net.py ================================================ import six import chainer import chainer.functions as F from chainer.functions.loss.vae import gaussian_kl_divergence import chainer.links as L class VAE(chainer.Chain): """Variational AutoEncoder""" def __init__(self, n_in, n_latent, n_h): super(VAE, self).__init__() with self.init_scope(): # encoder self.le1 = L.Linear(n_in, n_h) self.le2_mu = L.Linear(n_h, n_latent) self.le2_ln_var = L.Linear(n_h, n_latent) # decoder self.ld1 = L.Linear(n_latent, n_h) self.ld2 = L.Linear(n_h, n_in) def __call__(self, x, sigmoid=True): """AutoEncoder""" return self.decode(self.encode(x)[0], sigmoid) def encode(self, x): h1 = F.tanh(self.le1(x)) mu = self.le2_mu(h1) ln_var = self.le2_ln_var(h1) # log(sigma**2) return mu, ln_var def decode(self, z, sigmoid=True): h1 = F.tanh(self.ld1(z)) h2 = self.ld2(h1) if sigmoid: return F.sigmoid(h2) else: return h2 def get_loss_func(self, C=1.0, k=1): """Get loss function of VAE. The loss value is equal to ELBO (Evidence Lower Bound) multiplied by -1. Args: C (int): Usually this is 1.0. Can be changed to control the second term of ELBO bound, which works as regularization. k (int): Number of Monte Carlo samples used in encoded vector. """ def lf(x): mu, ln_var = self.encode(x) batchsize = len(mu.data) # reconstruction loss rec_loss = 0 for l in six.moves.range(k): z = F.gaussian(mu, ln_var) rec_loss += F.bernoulli_nll(x, self.decode(z, sigmoid=False)) \ / (k * batchsize) self.rec_loss = rec_loss self.loss = self.rec_loss + \ C * gaussian_kl_divergence(mu, ln_var) / batchsize return self.loss return lf ================================================ FILE: examples/chainer/plain_logger/train_vae.py ================================================ #!/usr/bin/env python """Chainer example: train a VAE on MNIST """ from __future__ import print_function import argparse import matplotlib # Disable interactive backend matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np import six import chainer from chainer import computational_graph from chainer import cuda from chainer import optimizers from chainer import serializers from tensorboardX import SummaryWriter import data import net writer = SummaryWriter() parser = argparse.ArgumentParser(description='Chainer example: MNIST') parser.add_argument('--initmodel', '-m', default='', help='Initialize the model from given file') parser.add_argument('--resume', '-r', default='', help='Resume the optimization from snapshot') parser.add_argument('--gpu', '-g', default=-1, type=int, help='GPU ID (negative value indicates CPU)') parser.add_argument('--epoch', '-e', default=100, type=int, help='number of epochs to learn') parser.add_argument('--dimz', '-z', default=20, type=int, help='dimention of encoded vector') parser.add_argument('--batchsize', '-b', type=int, default=100, help='learning minibatch size') parser.add_argument('--test', action='store_true', help='Use tiny datasets for quick tests') args = parser.parse_args() batchsize = args.batchsize n_epoch = args.epoch n_latent = args.dimz writer.add_text('config', str(args)) print('GPU: {}'.format(args.gpu)) print('# dim z: {}'.format(args.dimz)) print('# Minibatch-size: {}'.format(args.batchsize)) print('# epoch: {}'.format(args.epoch)) print('') # Prepare dataset print('load MNIST dataset') mnist = data.load_mnist_data() mnist['data'] = mnist['data'].astype(np.float32) mnist['data'] /= 255 mnist['target'] = mnist['target'].astype(np.int32) if args.test: mnist['data'] = mnist['data'][0:100] mnist['target'] = mnist['target'][0:100] N = 30 else: N = 60000 x_train, x_test = np.split(mnist['data'], [N]) y_train, y_test = np.split(mnist['target'], [N]) N_test = y_test.size # Prepare VAE model, defined in net.py model = net.VAE(784, n_latent, 500) if args.gpu >= 0: cuda.get_device_from_id(args.gpu).use() model.to_gpu() xp = np if args.gpu < 0 else cuda.cupy # Setup optimizer optimizer = optimizers.Adam() optimizer.setup(model) # Init/Resume if args.initmodel: print('Load model from', args.initmodel) serializers.load_npz(args.initmodel, model) if args.resume: print('Load optimizer state from', args.resume) serializers.load_npz(args.resume, optimizer) # Learning loop for epoch in six.moves.range(1, n_epoch + 1): print('epoch', epoch) # training perm = np.random.permutation(N) sum_loss = 0 # total loss sum_rec_loss = 0 # reconstruction loss for i in six.moves.range(0, N, batchsize): x = chainer.Variable(xp.asarray(x_train[perm[i:i + batchsize]])) optimizer.update(model.get_loss_func(), x) if epoch == 1 and i == 0: with open('graph.dot', 'w') as o: g = computational_graph.build_computational_graph( (model.loss, )) o.write(g.dump()) print('graph generated') writer.add_scalar('train/loss', model.loss, epoch * N + i) writer.add_scalar('train/rec_loss', model.rec_loss, epoch * N + i) sum_loss += float(model.loss.data) * len(x.data) sum_rec_loss += float(model.rec_loss.data) * len(x.data) print('train mean loss={}, mean reconstruction loss={}' .format(sum_loss / N, sum_rec_loss / N)) # evaluation sum_loss = 0 sum_rec_loss = 0 with chainer.no_backprop_mode(): for i in six.moves.range(0, N_test, batchsize): x = chainer.Variable(xp.asarray(x_test[i:i + batchsize])) loss_func = model.get_loss_func(k=10) loss_func(x) sum_loss += float(model.loss.data) * len(x.data) sum_rec_loss += float(model.rec_loss.data) * len(x.data) writer.add_scalar('test/loss', model.loss, epoch * N_test + i) writer.add_scalar('test/rec_loss', model.rec_loss, epoch * N_test + i) writer.add_image('reconstructed', model( x).reshape(-1, 1, 28, 28), epoch * N_test + i) writer.add_image('input', x.reshape(-1, 1, 28, 28), epoch * N_test + i) del model.loss print('test mean loss={}, mean reconstruction loss={}' .format(sum_loss / N_test, sum_rec_loss / N_test)) # Save the model and the optimizer print('save the model') serializers.save_npz('mlp.model', model) print('save the optimizer') serializers.save_npz('mlp.state', optimizer) model.to_cpu() # original images and reconstructed images def save_images(x, filename): fig, ax = plt.subplots(3, 3, figsize=(9, 9), dpi=100) for ai, xi in zip(ax.flatten(), x): ai.imshow(xi.reshape(28, 28)) fig.savefig(filename) train_ind = [1, 3, 5, 10, 2, 0, 13, 15, 17] x = chainer.Variable(np.asarray(x_train[train_ind])) with chainer.no_backprop_mode(): x1 = model(x) save_images(x.data, 'train') save_images(x1.data, 'train_reconstructed') test_ind = [3, 2, 1, 18, 4, 8, 11, 17, 61] x = chainer.Variable(np.asarray(x_test[test_ind])) with chainer.no_backprop_mode(): x1 = model(x) save_images(x.data, 'test') save_images(x1.data, 'test_reconstructed') # draw images from randomly sampled z z = chainer.Variable(np.random.normal(0, 1, (9, n_latent)).astype(np.float32)) x = model.decode(z) save_images(x.data, 'sampled') ================================================ FILE: examples/create_wit_samples.py ================================================ """ https://archive.ics.uci.edu/ml/datasets/Heart+Disease 1. #3 (age) 2. #4 (sex) 3. #9 (cp) 4. #10 (trestbps) 5. #12 (chol) 6. #16 (fbs) 7. #19 (restecg) 8. #32 (thalach) 9. #38 (exang) 10. #40 (oldpeak) 11. #41 (slope) 12. #44 (ca) 13. #51 (thal) 14. #58 (num) (the predicted attribute) ex: ['62', '0', '1', '140', '0', '?', '0', '143', '0', '0', '?', '?', '3', '2'] Here I only choose feature 1~8 for example. """ with open("processed.cleveland.data") as f: lines = f.readlines() columns = ["age", "sex", "cp", "trestbps", "chol", "fbs", "restecg", "thalach", "target"] features_targets = [] targets = [] for line in lines: x = line.strip().split(',') y = x[-1] if '?' in x[:8]: # skip missing data continue ft = [float(i) for i in x[:8]+[y]] # print(ft) features_targets.append(ft) """ The first line of the CSV file must contain column names. Each line after that contains one example from the dataset, with values for each of the columns defined on the first line. The pipe character ("|") deliminates separate feature values in a list of feature values for a given feature. """ with open("test.csv", 'w') as f: f.write(','.join(columns) + '\n') for feature in features_targets: feature = [str(i) for i in feature] f.write(','.join(feature) + '\n') # launch tensorboard and fill [git/]tensorboardX/examples/test.csv in the WIT page and see the data distribution. exit() # For interactive inference, you may need the data in tfrecord format. import tensorflow as tf def to_examples(features_targets, columns=None): examples = [] for row in features_targets: example = tf.train.Example() for i, col in enumerate(columns): example.features.feature[col].float_list.value.append(row[i]) # example.features.feature[col].bytes_list.value.append(row[col].encode('utf-8')) examples.append(example) return examples writer = tf.io.TFRecordWriter('test.tfrecord') for example in to_examples(features_targets, columns): writer.write(example.SerializeToString()) writer.close() # fill [git/]tensorboardX/examples/test.tfrecord in the WIT page and see the data distribution. ================================================ FILE: examples/demo.py ================================================ import torch import torchvision.utils as vutils import numpy as np import torchvision.models as models from torchvision import datasets from tensorboardX import SummaryWriter import datetime try: import soundfile skip_audio = False except ImportError: skip_audio = True resnet18 = models.resnet18(weights=None) writer = SummaryWriter() sample_rate = 44100 freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440] true_positive_counts = [75, 64, 21, 5, 0] false_positive_counts = [150, 105, 18, 0, 0] true_negative_counts = [0, 45, 132, 150, 150] false_negative_counts = [0, 11, 54, 70, 75] precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0] recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0] for n_iter in range(100): with writer.use_metadata(global_step=n_iter): s1 = torch.rand(1) # value to keep s2 = torch.rand(1) # data grouping by `slash` writer.add_scalar('data/scalar_systemtime', s1[0], summary_description="# markdown is supported!") # data grouping by `slash` writer.add_scalar('data/scalar_customtime', s1[0], walltime=n_iter, display_name="dudubird") writer.add_scalars('data/scalar_group', {"xsinx": n_iter * np.sin(n_iter), "xcosx": n_iter * np.cos(n_iter), "arctanx": np.arctan(n_iter)}) x = torch.rand(32, 3, 64, 64) # output from network if n_iter % 10 == 0: x = vutils.make_grid(x, normalize=True, scale_each=True) writer.add_image('Image', x) # Tensor writer.add_image_with_boxes( 'imagebox_label', torch.ones(3, 240, 240) * 0.5, torch.Tensor([[10, 10, 100, 100], [101, 101, 200, 200]]), labels=['abcde' + str(n_iter), 'fgh' + str(n_iter)]) if not skip_audio: x = torch.zeros(sample_rate * 2) for i in range(x.size(0)): # sound amplitude should in [-1, 1] x[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate)) writer.add_audio('myAudio', x) writer.add_text('Text', 'text logged at step:' + str(n_iter)) writer.add_text('markdown Text', '''a|b\n-|-\nc|d''') for name, param in resnet18.named_parameters(): if 'bn' not in name: writer.add_histogram(name, param) writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand( 100)) # needs tensorboard 0.4RC or later writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall) # export scalar data to JSON for external processing writer.export_scalars_to_json("./all_scalars.json") dataset = datasets.MNIST('mnist', train=False, download=True) images = dataset.data[:100].float() label = dataset.targets[:100] features = images.view(100, 784) writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1)) writer.add_embedding(features, global_step=1, tag='noMetadata') images_train = dataset.data[100:200].float() labels_train = dataset.targets[100:200] features_train = images_train.view(100, 784) all_features = torch.cat((features, features_train)) all_labels = torch.cat((label, labels_train)) all_images = torch.cat((images, images_train)) dataset_label = ['test'] * 100 + ['train'] * 100 all_labels = list(zip(all_labels, dataset_label)) writer.add_embedding(all_features, metadata=all_labels, label_img=all_images.unsqueeze(1), metadata_header=['digit', 'dataset'], global_step=2) # VIDEO vid_images = dataset.data[:16 * 48] vid = vid_images.view(16, 48, 1, 28, 28) # BxTxCxHxW writer.add_video('video', vid_tensor=vid) writer.add_video('video_1_fps', vid_tensor=vid, fps=1) writer.close() writer.add_scalar('implicit reopen writer', 100, 0) ================================================ FILE: examples/demo_beholder.py ================================================ # Copyright 2017 The TensorFlow Authors. All Rights Reserved. # # 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. """Simple MNIST classifier to demonstrate features of Beholder. Based on tensorflow/examples/tutorials/mnist/mnist_with_summaries.py. """ from __future__ import absolute_import from __future__ import division from __future__ import print_function import numpy as np import tensorboardX.beholder as beholder_lib import time from collections import namedtuple LOG_DIRECTORY = '/tmp/beholder-demo' tensor_and_name = namedtuple('tensor_and_name', 'tensor, name') def beholder_pytorch(): for i in range(1000): fake_param = [tensor_and_name(np.random.randn(128, 768, 3), 'test' + str(i)) for i in range(5)] arrays = [tensor_and_name(np.random.randn(128, 768, 3), 'test' + str(i)) for i in range(5)] beholder = beholder_lib.Beholder(logdir=LOG_DIRECTORY) beholder.update( trainable=fake_param, arrays=arrays, frame=np.random.randn(128, 128), ) time.sleep(0.1) print(i) if __name__ == '__main__': import os if not os.path.exists(LOG_DIRECTORY): os.makedirs(LOG_DIRECTORY) print(LOG_DIRECTORY) beholder_pytorch() ================================================ FILE: examples/demo_comet.py ================================================ from tensorboardX import SummaryWriter import torch import torchvision.utils as vutils import numpy as np import torchvision.models as models from torchvision import datasets import datetime try: import soundfile skip_audio = False except ImportError: skip_audio = True resnet18 = models.resnet18(False) writer = SummaryWriter(comet_config={"disabled": False, "workspace": 'tensorboardx-test', "project_name": 'tbx-ci', "api_key": "KOSKkXJ52qFZxkxYHlRJ7wOEk"}) sample_rate = 44100 freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440] true_positive_counts = [75, 64, 21, 5, 0] false_positive_counts = [150, 105, 18, 0, 0] true_negative_counts = [0, 45, 132, 150, 150] false_negative_counts = [0, 11, 54, 70, 75] precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0] recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0] for n_iter in range(100): s1 = torch.rand(1) # value to keep s2 = torch.rand(1) # data grouping by `slash` writer.add_scalar('data/scalar_systemtime', s1[0], n_iter, summary_description="# markdown is supported!") # data grouping by `slash` writer.add_scalar('data/scalar_customtime', s1[0], n_iter, walltime=n_iter, display_name="dudubird") writer.add_scalars('data/scalar_group', {"xsinx": n_iter * np.sin(n_iter), "xcosx": n_iter * np.cos(n_iter), "arctanx": np.arctan(n_iter)}, n_iter) x = torch.rand(32, 3, 64, 64) # output from network if n_iter % 10 == 0: x = vutils.make_grid(x, normalize=True, scale_each=True) writer.add_image('Image', x, n_iter) # Tensor writer.add_image_with_boxes('imagebox_label', torch.ones(3, 240, 240) * 0.5, torch.Tensor([[10, 10, 100, 100], [101, 101, 200, 200]]), n_iter, labels=['abcde' + str(n_iter), 'fgh' + str(n_iter)]) if not skip_audio: x = torch.zeros(sample_rate * 2) for i in range(x.size(0)): # sound amplitude should in [-1, 1] x[i] = np.cos(freqs[n_iter // 10] * np.pi * float(i) / float(sample_rate)) writer.add_audio('myAudio', x, n_iter) writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter) writer.add_text('markdown Text', '''a|b\n-|-\nc|d''', n_iter) for name, param in resnet18.named_parameters(): if 'bn' not in name: writer.add_histogram(name, param, n_iter) writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand( 100), n_iter) # needs tensorboard 0.4RC or later writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, n_iter) # export scalar data to JSON for external processing writer.export_scalars_to_json("./all_scalars.json") dataset = datasets.MNIST('mnist', train=False, download=True) images = dataset.test_data[:100].float() label = dataset.test_labels[:100] features = images.view(100, 784) writer.add_embedding(features, metadata=label, label_img=images.unsqueeze(1)) writer.add_embedding(features, global_step=1, tag='noMetadata') dataset = datasets.MNIST('mnist', train=True, download=True) images_train = dataset.train_data[:100].float() labels_train = dataset.train_labels[:100] features_train = images_train.view(100, 784) all_features = torch.cat((features, features_train)) all_labels = torch.cat((label, labels_train)) all_images = torch.cat((images, images_train)) dataset_label = ['test'] * 100 + ['train'] * 100 all_labels = list(zip(all_labels, dataset_label)) writer.add_embedding(all_features, metadata=all_labels, label_img=all_images.unsqueeze(1), metadata_header=['digit', 'dataset'], global_step=2) # VIDEO vid_images = dataset.train_data[:16 * 48] vid = vid_images.view(16, 48, 1, 28, 28) # BxTxCxHxW writer.add_video('video', vid_tensor=vid) writer.add_video('video_1_fps', vid_tensor=vid, fps=1) writer.close() writer.add_scalar('implicit reopen writer', 100, 0) ================================================ FILE: examples/demo_custom_scalars.py ================================================ from numpy.random import rand from tensorboardX import SummaryWriter import time with SummaryWriter() as writer: for n_iter in range(100): writer.add_scalar('twse/0050', rand(), n_iter) writer.add_scalar('twse/2330', rand(), n_iter) t = rand() writer.add_scalar('dow/aaa', t, n_iter) writer.add_scalar('dow/bbb', t - 1, n_iter) writer.add_scalar('dow/ccc', t + 1, n_iter) writer.add_scalar('nasdaq/aaa', rand(), n_iter) writer.add_scalar('nasdaq/bbb', rand(), n_iter) writer.add_scalar('nasdaq/ccc', rand(), n_iter) layout = {'Taiwan': {'twse': ['Multiline', ['twse/0050', 'twse/2330']]}, 'USA': {'dow': ['Margin', ['dow/aaa', 'dow/bbb', 'dow/ccc']], 'nasdaq': ['Margin', ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}} writer.add_custom_scalars(layout) # writer.add_custom_scalars(layout) second call has no effect time.sleep(1) with SummaryWriter() as writer: for n_iter in range(100): writer.add_scalar('twse/0050', rand(), n_iter) writer.add_scalar('twse/2330', rand(), n_iter) writer.add_custom_scalars_multilinechart(['twse/0050', 'twse/2330']) time.sleep(1) with SummaryWriter() as writer: for n_iter in range(100): t = rand() writer.add_scalar('dow/aaa', t, n_iter) writer.add_scalar('dow/bbb', t - 1, n_iter) writer.add_scalar('dow/ccc', t + 1, n_iter) writer.add_custom_scalars_marginchart(['dow/aaa', 'dow/bbb', 'dow/ccc']) ================================================ FILE: examples/demo_embedding.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F import os from torch.autograd.variable import Variable from tensorboardX import SummaryWriter from torch.utils.data import TensorDataset, DataLoader # EMBEDDING VISUALIZATION FOR A TWO-CLASSES PROBLEM # just a bunch of layers class M(nn.Module): def __init__(self): super(M, self).__init__() self.cn1 = nn.Conv2d(in_channels=1, out_channels=64, kernel_size=3) self.cn2 = nn.Conv2d(in_channels=64, out_channels=32, kernel_size=3) self.fc1 = nn.Linear(in_features=128, out_features=2) def forward(self, i): i = self.cn1(i) i = F.relu(i) i = F.max_pool2d(i, 2) i = self.cn2(i) i = F.relu(i) i = F.max_pool2d(i, 2) i = i.view(len(i), -1) i = self.fc1(i) i = F.log_softmax(i, dim=1) return i # get some random data around value def get_data(value, shape): data = torch.ones(shape) * value # add some noise data += torch.randn(shape)**2 return data # dataset # cat some data with different values data = torch.cat( (get_data( 0, (100, 1, 14, 14)), get_data( 0.5, (100, 1, 14, 14))), 0) # labels labels = torch.cat((torch.zeros(100), torch.ones(100)), 0) # generator gen = DataLoader(TensorDataset(data, labels), batch_size=25, shuffle=True) # network m = M() #loss and optim loss = nn.NLLLoss() optimizer = torch.optim.Adam(params=m.parameters()) # settings for train and log num_epochs = 20 embedding_log = 5 writer = SummaryWriter(comment='mnist_embedding_training') #writer = SummaryWriter("gs://your-bucket/embedding-test") #writer = SummaryWriter("s3://your-bucket/embedding-test") # TRAIN for epoch in range(num_epochs): for j, sample in enumerate(gen): n_iter = (epoch * len(gen)) + j # reset grad m.zero_grad() optimizer.zero_grad() # get batch data data_batch = Variable(sample[0], requires_grad=True).float() label_batch = Variable(sample[1], requires_grad=False).long() # FORWARD out = m(data_batch) loss_value = loss(out, label_batch) # BACKWARD loss_value.backward() optimizer.step() # LOGGING writer.add_scalar('loss', loss_value.data.item(), n_iter) if j % embedding_log == 0: print("loss_value:{}".format(loss_value.data.item())) # we need 3 dimension for tensor to visualize it! out = torch.cat((out.data, torch.ones(len(out), 1)), 1) writer.add_embedding( out, metadata=label_batch.data, label_img=data_batch.data, global_step=n_iter) writer.close() # tensorboard --logdir runs # you should now see a dropdown list with all the timestep, # last timestep should have a visible separation between the two classes ================================================ FILE: examples/demo_global_writer.py ================================================ # This program show that you can use summary writer globally # So that you can use the writer like the python.logging module # This file triggers global_1 and global_2 to do their job. import global_1 import time time.sleep(2) import global_2 ================================================ FILE: examples/demo_graph.py ================================================ import torch import torch.nn as nn import torch.nn.functional as F import torchvision from torch.autograd import Variable from tensorboardX import SummaryWriter dummy_input = (torch.zeros(1, 3),) class LinearInLinear(nn.Module): def __init__(self): super(LinearInLinear, self).__init__() self.l = nn.Linear(3, 5) def forward(self, x): return self.l(x) with SummaryWriter(comment='LinearInLinear') as w: w.add_graph(LinearInLinear(), dummy_input, True) class MultipleInput(nn.Module): def __init__(self): super(MultipleInput, self).__init__() self.Linear_1 = nn.Linear(3, 5) def forward(self, x, y): return self.Linear_1(x+y) with SummaryWriter(comment='MultipleInput') as w: w.add_graph(MultipleInput(), (torch.zeros(1, 3), torch.zeros(1, 3)), True) class MultipleOutput(nn.Module): def __init__(self): super(MultipleOutput, self).__init__() self.Linear_1 = nn.Linear(3, 5) self.Linear_2 = nn.Linear(3, 7) def forward(self, x): return self.Linear_1(x), self.Linear_2(x) with SummaryWriter(comment='MultipleOutput') as w: w.add_graph(MultipleOutput(), dummy_input, True) class MultipleOutput_shared(nn.Module): def __init__(self): super(MultipleOutput_shared, self).__init__() self.Linear_1 = nn.Linear(3, 5) def forward(self, x): return self.Linear_1(x), self.Linear_1(x) with SummaryWriter(comment='MultipleOutput_shared') as w: w.add_graph(MultipleOutput_shared(), dummy_input, True) class SimpleModel(nn.Module): def __init__(self): super(SimpleModel, self).__init__() def forward(self, x): return x * 2 model = SimpleModel() dummy_input = (torch.zeros(1, 2, 3),) with SummaryWriter(comment='constantModel') as w: w.add_graph(model, dummy_input, True) def conv3x3(in_planes, out_planes, stride=1): """3x3 convolution with padding""" return nn.Conv2d(in_planes, out_planes, kernel_size=3, stride=stride, padding=1, bias=False) class BasicBlock(nn.Module): expansion = 1 def __init__(self, inplanes, planes, stride=1, downsample=None): super(BasicBlock, self).__init__() self.conv1 = conv3x3(inplanes, planes, stride) self.bn1 = nn.BatchNorm2d(planes) # self.relu = nn.ReLU(inplace=True) self.conv2 = conv3x3(planes, planes) self.bn2 = nn.BatchNorm2d(planes) self.stride = stride def forward(self, x): residual = x out = self.conv1(x) out = self.bn1(out) out = F.relu(out) out = self.conv2(out) out = self.bn2(out) out += residual out = F.relu(out) return out dummy_input = torch.rand(1, 3, 224, 224) with SummaryWriter(comment='basicblock') as w: model = BasicBlock(3, 3) w.add_graph(model, (dummy_input, ), verbose=True) class Net1(nn.Module): def __init__(self): super(Net1, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) self.bn = nn.BatchNorm2d(20) def forward(self, x): x = F.max_pool2d(self.conv1(x), 2) x = F.relu(x) + F.relu(-x) x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) x = self.bn(x) x = x.view(-1, 320) x = F.relu(self.fc1(x)) x = F.dropout(x, training=self.training) x = self.fc2(x) x = F.softmax(x, dim=1) return x class Net2(nn.Module): def __init__(self): super(Net2, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = F.relu(F.max_pool2d(self.conv1(x), 2)) x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) x = x.view(-1, 320) x = F.relu(self.fc1(x)) x = F.dropout(x, training=self.training) x = self.fc2(x) x = F.log_softmax(x, dim=1) return x dummy_input = Variable(torch.rand(13, 1, 28, 28)) model = Net1() with SummaryWriter(comment='Net1') as w: w.add_graph(model, (dummy_input, )) model = Net2() with SummaryWriter(comment='Net2') as w: w.add_graph(model, (dummy_input, )) class SiameseNetwork(nn.Module): def __init__(self): super(SiameseNetwork, self).__init__() self.cnn1 = Net1() def forward_once(self, x): output = self.cnn1(x) return output def forward(self, input1, input2): output1 = self.forward_once(input1) output2 = self.forward_once(input2) return output1, output2 model = SiameseNetwork() with SummaryWriter(comment='SiameseNetwork') as w: w.add_graph(model, (dummy_input, dummy_input)) dummy_input = torch.Tensor(1, 3, 224, 224) with SummaryWriter(comment='alexnet') as w: model = torchvision.models.alexnet() w.add_graph(model, (dummy_input, )) with SummaryWriter(comment='vgg19') as w: model = torchvision.models.vgg19() w.add_graph(model, (dummy_input, )) with SummaryWriter(comment='densenet121') as w: model = torchvision.models.densenet121() w.add_graph(model, (dummy_input, )) with SummaryWriter(comment='resnet18') as w: model = torchvision.models.resnet18() w.add_graph(model, (dummy_input, )) class RNN(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(RNN, self).__init__() self.hidden_size = hidden_size self.i2h = nn.Linear( n_categories + input_size + hidden_size, hidden_size) self.i2o = nn.Linear( n_categories + input_size + hidden_size, output_size) self.o2o = nn.Linear(hidden_size + output_size, output_size) self.dropout = nn.Dropout(0.1) self.softmax = nn.LogSoftmax(dim=1) def forward(self, category, input, hidden): input_combined = torch.cat((category, input, hidden), 1) hidden = self.i2h(input_combined) output = self.i2o(input_combined) output_combined = torch.cat((hidden, output), 1) output = self.o2o(output_combined) output = self.dropout(output) output = self.softmax(output) return output, hidden, input def initHidden(self): return torch.zeros(1, self.hidden_size) n_letters = 100 n_hidden = 128 n_categories = 10 rnn = RNN(n_letters, n_hidden, n_categories) cat = torch.Tensor(1, n_categories) dummy_input = torch.Tensor(1, n_letters) hidden = torch.Tensor(1, n_hidden) out, hidden, input = rnn(cat, dummy_input, hidden) with SummaryWriter(comment='RNN') as w: w.add_graph(rnn, (cat, dummy_input, hidden), verbose=False) lstm = torch.nn.LSTM(3, 3) # Input dim is 3, output dim is 3 inputs = [torch.randn(1, 3) for _ in range(5)] # make a sequence of length 5 # initialize the hidden state. hidden = (torch.randn(1, 1, 3), torch.randn(1, 1, 3)) for i in inputs: out, hidden = lstm(i.view(1, 1, -1), hidden) with SummaryWriter(comment='lstm') as w: w.add_graph(lstm, (torch.randn(1, 3).view(1, 1, -1), hidden), verbose=True) import pytest print('expect error here:') with pytest.raises(Exception) as e_info: dummy_input = torch.rand(1, 1, 224, 224) with SummaryWriter(comment='basicblock_error') as w: w.add_graph(model, (dummy_input, )) # error ================================================ FILE: examples/demo_hogwild.py ================================================ from __future__ import print_function import argparse import os import torch import torch.optim as optim import torch.nn as nn import torch.nn.functional as F import torch.multiprocessing as mp from torchvision import datasets, transforms from tensorboardX import GlobalSummaryWriter # Training settings parser = argparse.ArgumentParser(description='PyTorch MNIST Example') parser.add_argument('--batch-size', type=int, default=64, metavar='N', help='input batch size for training (default: 64)') parser.add_argument('--test-batch-size', type=int, default=1000, metavar='N', help='input batch size for testing (default: 1000)') parser.add_argument('--epochs', type=int, default=2, metavar='N', help='number of epochs to train (default: 10)') parser.add_argument('--lr', type=float, default=0.01, metavar='LR', help='learning rate (default: 0.01)') parser.add_argument('--momentum', type=float, default=0.5, metavar='M', help='SGD momentum (default: 0.5)') parser.add_argument('--seed', type=int, default=1, metavar='S', help='random seed (default: 1)') parser.add_argument('--log-interval', type=int, default=10, metavar='N', help='how many batches to wait before logging training status') parser.add_argument('--num-processes', type=int, default=2, metavar='N', help='how many training processes to use (default: 2)') parser.add_argument('--cuda', action='store_true', default=False, help='enables CUDA training') class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(1, 10, kernel_size=5) self.conv2 = nn.Conv2d(10, 20, kernel_size=5) self.conv2_drop = nn.Dropout2d() self.fc1 = nn.Linear(320, 50) self.fc2 = nn.Linear(50, 10) def forward(self, x): x = F.relu(F.max_pool2d(self.conv1(x), 2)) x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) x = x.view(-1, 320) x = F.relu(self.fc1(x)) x = F.dropout(x, training=self.training) x = self.fc2(x) return F.log_softmax(x, dim=1) def train(rank, args, model, device, dataloader_kwargs): torch.manual_seed(args.seed + rank) train_loader = torch.utils.data.DataLoader( datasets.MNIST('../data', train=True, download=True, transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ])), batch_size=args.batch_size, shuffle=True, num_workers=1, **dataloader_kwargs) optimizer = optim.SGD(model.parameters(), lr=args.lr, momentum=args.momentum) for epoch in range(1, args.epochs + 1): train_epoch(epoch, args, model, device, train_loader, optimizer) def train_epoch(epoch, args, model, device, data_loader, optimizer): model.train() pid = os.getpid() for batch_idx, (data, target) in enumerate(data_loader): optimizer.zero_grad() output = model(data.to(device)) loss = F.nll_loss(output, target.to(device)) loss.backward() optimizer.step() if batch_idx % args.log_interval == 0: writer.add_scalar("Loss", loss) print('{}\tTrain Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format( pid, epoch, batch_idx * len(data), len(data_loader.dataset), 100. * batch_idx / len(data_loader), loss.item())) writer = GlobalSummaryWriter() if __name__ == '__main__': args = parser.parse_args() use_cuda = args.cuda and torch.cuda.is_available() device = torch.device("cuda" if use_cuda else "cpu") dataloader_kwargs = {'pin_memory': True} if use_cuda else {} torch.manual_seed(args.seed) # mp.set_start_method('spawn') model = Net().to(device) model.share_memory() # gradients are allocated lazily, so they are not shared here processes = [] for rank in range(args.num_processes): p = mp.Process(target=train, args=(rank, args, model, device, dataloader_kwargs)) # We first train the model across `num_processes` processes p.start() processes.append(p) for p in processes: p.join() ================================================ FILE: examples/demo_hparams.py ================================================ from tensorboardX import SummaryWriter import time import random hparam = {'lr': [0.1, 0.01, 0.001], 'bsize': [1, 2, 4], 'n_hidden': [100, 200], 'bn': [True, False]} metrics = {'accuracy', 'loss'} def train(lr, bsize, n_hidden): x = random.random() return x, x*5 i = 0 with SummaryWriter() as w: for lr in hparam['lr']: for bsize in hparam['bsize']: for n_hidden in hparam['n_hidden']: for bn in hparam['bn']: accu, loss = train(lr, bsize, n_hidden) i = i + 1 w.add_hparams({'lr': lr, 'bsize': bsize, 'n_hidden': n_hidden, 'bn': bn}, {'accuracy': accu, 'loss': loss}, name="trial"+str(i)) ================================================ FILE: examples/demo_matplotlib.py ================================================ import matplotlib.pyplot as plt plt.switch_backend('agg') fig = plt.figure() c1 = plt.Circle((0.2, 0.5), 0.2, color='r') c2 = plt.Circle((0.8, 0.5), 0.2, color='r') ax = plt.gca() ax.add_patch(c1) ax.add_patch(c2) plt.axis('scaled') from tensorboardX import SummaryWriter writer = SummaryWriter() writer.add_figure('matplotlib', fig) writer.close() ================================================ FILE: examples/demo_mesh.py ================================================ import numpy as np from tensorboardX import SummaryWriter from numpy.random import randint def draw_fusilli(turns, radius, omega): points = [] faces = [] colors = [] for t in range(turns): for theta in np.linspace(0, 2 * np.pi, 100, endpoint=False): z = (theta + 2 * np.pi * t) * omega end_point = radius * np.cos(theta), radius * np.sin(theta), z center_point = 0, 0, z points.append(center_point) points.append(end_point) # The frontend stays silent even if you assigned # non-existing points, be careful. for n in range(0, len(points)-3, 2): faces.append((n, n+1, n+3)) for _ in range(len(points)): colors.append((randint(100, 200), randint(100, 200), randint(100, 200))) return np.array([points]), np.array([colors]), np.array([faces]) with SummaryWriter() as w: points, colors, faces = draw_fusilli(5, 1, 0.1) w.add_mesh("my_mesh1", points, colors, faces, global_step=0) for i in range(1, 10): points, colors, faces = draw_fusilli(randint(4, 7), 1, 0.1*randint(1,3)) points += randint(-5, 5) w.add_mesh("my_mesh1", points, colors, faces, global_step=i) ================================================ FILE: examples/demo_multiple_embedding.py ================================================ import math import numpy as np from tensorboardX import SummaryWriter def main(): degrees = np.linspace(0, 3600 * math.pi / 180.0, 3600) degrees = degrees.reshape(3600, 1) labels = ["%d" % (i) for i in range(0, 3600)] with SummaryWriter() as writer: # Maybe make a bunch of data that's always shifted in some # way, and that will be hard for PCA to turn into a sphere? for epoch in range(0, 16): shift = epoch * 2 * math.pi / 16.0 mat = np.concatenate([ np.sin(shift + degrees * 2 * math.pi / 180.0), np.sin(shift + degrees * 3 * math.pi / 180.0), np.sin(shift + degrees * 5 * math.pi / 180.0), np.sin(shift + degrees * 7 * math.pi / 180.0), np.sin(shift + degrees * 11 * math.pi / 180.0) ], axis=1) writer.add_embedding( mat=mat, metadata=labels, tag="sin", global_step=epoch) mat = np.concatenate([ np.cos(shift + degrees * 2 * math.pi / 180.0), np.cos(shift + degrees * 3 * math.pi / 180.0), np.cos(shift + degrees * 5 * math.pi / 180.0), np.cos(shift + degrees * 7 * math.pi / 180.0), np.cos(shift + degrees * 11 * math.pi / 180.0) ], axis=1) writer.add_embedding( mat=mat, metadata=labels, tag="cos", global_step=epoch) mat = np.concatenate([ np.tan(shift + degrees * 2 * math.pi / 180.0), np.tan(shift + degrees * 3 * math.pi / 180.0), np.tan(shift + degrees * 5 * math.pi / 180.0), np.tan(shift + degrees * 7 * math.pi / 180.0), np.tan(shift + degrees * 11 * math.pi / 180.0) ], axis=1) writer.add_embedding( mat=mat, metadata=labels, tag="tan", global_step=epoch) if __name__ == "__main__": main() # tensorboard --logdir runs # Under "Projection, you should see # 48 tensor found named # cos:cos-00000 to cos:cos-00016 # sin:sin-00000 to sin:sin-00016 # tan:tan-00000 to tan:tan-00016 ================================================ FILE: examples/demo_multiprocessing.py ================================================ from tensorboardX import GlobalSummaryWriter import multiprocessing as mp import time import os import psutil import torch import numpy as np w = GlobalSummaryWriter() def train3(): for i in range(100): w.add_scalar('many_write_in_func', np.random.randn()) time.sleep(0.01*np.random.randint(0, 10)) def train2(x): np.random.seed(x) w.add_scalar('few_write_per_func/1', np.random.randn()) time.sleep(0.05*np.random.randint(0, 10)) w.add_scalar('few_write_per_func/2', np.random.randn()) def train(x): w.add_scalar('poolmap/1', x*np.random.randn()) time.sleep(0.05*np.random.randint(0, 10)) w.add_scalar('poolmap/2', x*np.random.randn()) if __name__ == '__main__': with mp.Pool() as pool: pool.map(train, range(100)) processes = [] for i in range(4): p0 = mp.Process(target=train2, args=(i,)) p1 = mp.Process(target=train3) processes.append(p0) processes.append(p1) p0.start() p1.start() for p in processes: p.join() w.close() ================================================ FILE: examples/demo_nvidia_smi.py ================================================ """ write gpu and (gpu) memory usage of nvidia cards as scalar """ from tensorboardX import SummaryWriter import time import torch try: import nvidia_smi nvidia_smi.nvmlInit() handle = nvidia_smi.nvmlDeviceGetHandleByIndex(0) # gpu0 except ImportError: print('This demo needs nvidia-ml-py or nvidia-ml-py3') exit() with SummaryWriter() as writer: x = [] for n_iter in range(50): x.append(torch.Tensor(1000, 1000).cuda()) res = nvidia_smi.nvmlDeviceGetUtilizationRates(handle) writer.add_scalar('nv/gpu', res.gpu, n_iter) res = nvidia_smi.nvmlDeviceGetMemoryInfo(handle) writer.add_scalar('nv/gpu_mem', res.used, n_iter) time.sleep(0.1) ================================================ FILE: examples/demo_onnx.py ================================================ from tensorboardX import SummaryWriter import subprocess zoo_address = 'https://onnxzoo.blob.core.windows.net/models/opset_8/mnist/mnist.tar.gz' res = subprocess.call(['wget', '-nc', zoo_address]) assert res == 0, 'cannot download example onnx model from the zoo' res = subprocess.call(['tar', 'xf', 'mnist.tar.gz', '-C', 'examples/', 'mnist/model.onnx']) with SummaryWriter() as w: w.add_onnx_graph('examples/mnist/model.onnx') # w.add_onnx_graph('/Users/dexter/Downloads/resnet50/model.onnx') ================================================ FILE: examples/demo_openvino.py ================================================ from tensorboardX import SummaryWriter with SummaryWriter() as w: # https://download.01.org/opencv/2019/open_model_zoo/R3/20190905_163000_models_bin/mobilenetv2-int8-sparse-v1-tf-0001/FP32/mobilenetv2-int8-sparse-v1-tf-0001.xml w.add_openvino_graph('examples/mobilenetv2.xml') ================================================ FILE: examples/demo_purge.py ================================================ from time import sleep from tensorboardX import SummaryWriter with SummaryWriter(logdir='runs/purge') as w: for i in range(100): w.add_scalar('purgetest', i, i) sleep(1.0) with SummaryWriter(logdir='runs/purge', purge_step=42) as w: # event 42~99 are removed (inclusively) for i in range(42, 100): w.add_scalar('purgetest', 42, i) ================================================ FILE: examples/global_1.py ================================================ # called by demo_global_writer from tensorboardX import GlobalSummaryWriter writer = GlobalSummaryWriter.getSummaryWriter() writer.add_text('my_log', 'greeting from global1') for i in range(100): writer.add_scalar('global1', i) for i in range(100): writer.add_scalar('common', i) ================================================ FILE: examples/global_2.py ================================================ # called by demo_global_writer from tensorboardX import GlobalSummaryWriter writer = GlobalSummaryWriter.getSummaryWriter() writer.add_text('my_log', 'greeting from global2') for i in range(100): writer.add_scalar('global2', i) for i in range(100): writer.add_scalar('common', i) ================================================ FILE: examples/mobilenetv2.xml ================================================ 1 3 224 224 1 3 224 224 1 3 224 224 1 3 224 224 1 32 112 112 1 32 112 112 1 32 112 112 1 32 112 112 1 32 112 112 1 32 112 112 1 32 112 112 1 32 112 112 1 16 112 112 1 16 112 112 1 96 112 112 1 96 112 112 1 96 112 112 1 96 112 112 1 96 56 56 1 96 56 56 1 96 56 56 1 96 56 56 1 24 56 56 1 24 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 24 56 56 1 24 56 56 1 24 56 56 1 24 56 56 1 24 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 56 56 1 144 28 28 1 144 28 28 1 144 28 28 1 144 28 28 1 32 28 28 1 32 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 32 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 28 28 1 192 14 14 1 192 14 14 1 192 14 14 1 192 14 14 1 64 14 14 1 64 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 64 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 384 14 14 1 96 14 14 1 96 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 96 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 14 14 1 576 7 7 1 576 7 7 1 576 7 7 1 576 7 7 1 160 7 7 1 160 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 160 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 960 7 7 1 320 7 7 1 320 7 7 1 1280 7 7 1 1280 7 7 1 1280 7 7 1 1280 7 7 1 1280 1 1 1 1280 1 1 1 1001 1 1 1 1001 1 1 1 1 1 1001 2 1 1 1 1001 2 1 1001 1 1001 1 1001 quant_model/MobilenetV2/expanded_conv_12/add -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991, -32.70615348509991 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419, 30.95849642864419 quant_model/MobilenetV2/expanded_conv_10/project/Conv2D_Fold -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966, -21.67422158010966 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944, 21.170169915455944 quant_model/MobilenetV2/expanded_conv_13/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_14/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_8/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_15/project/Conv2D_Fold -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569, -32.22726366233569 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417, 27.32311484415417 quant_model/MobilenetV2/expanded_conv_6/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_15/add -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839, -38.97021493438839 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099, 36.88783703713099 quant_model/MobilenetV2/expanded_conv_8/add -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355, -24.244115655083355 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383, 26.848855353563383 quant_model/MobilenetV2/expanded_conv_6/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_13/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_14/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_14/project/Conv2D_Fold -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376, -12.998717220338376 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686, 12.30412927726686 quant_model/MobilenetV2/expanded_conv_16/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_2/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_1/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_15/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_3/project/Conv2D_Fold -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515, -27.432308248582515 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088, 26.37721946979088 quant_model/MobilenetV2/expanded_conv_9/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_2/project/Conv2D_Fold -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265, -50.80048966990265 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965, 46.59894541148965 quant_model/MobilenetV2/expanded_conv_11/add -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464, -21.870184721976464 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047, 22.390903405833047 quant_model/MobilenetV2/expanded_conv_4/project/Conv2D_Fold -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004, -25.735400513868004 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435, 29.411886301563435 quant_model/MobilenetV2/expanded_conv_11/project/Conv2D_Fold -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358, -15.42047856590358 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458, 15.300006077107458 quant_model/MobilenetV2/expanded_conv_3/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_1/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_1/project/Conv2D_Fold -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687, -31.378136818762687 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092, 36.43054867941092 quant_model/MobilenetV2/expanded_conv_4/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_7/add -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005, -22.817945146822005 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757, 25.670188290174757 quant_model/MobilenetV2/expanded_conv_2/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_4/add -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929, -33.28752614329929 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296, 31.508803372283296 quant_model/MobilenetV2/expanded_conv_10/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/Conv_1/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_8/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_3/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/Conv/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_11/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/Logits/Conv2d_1c_1x1/Conv2D -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792, -6.073399831878792 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693, 20.62861667034693 quant_model/MobilenetV2/expanded_conv_13/project/Conv2D_Fold -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134, -17.131834168174134 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624, 15.963754565798624 quant_model/MobilenetV2/expanded_conv/project/Conv2D_Fold -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858, -45.06852683522858 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556, 41.341054690961556 quant_model/MobilenetV2/expanded_conv_16/project/Conv2D_Fold -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782, -11.87239604926782 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532, 12.347291891238532 quant_model/MobilenetV2/expanded_conv_6/project/Conv2D_Fold -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135, -23.352754021726135 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114, 23.536633974653114 quant_model/MobilenetV2/expanded_conv_10/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_14/add -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782, -20.416724840236782 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184, 17.864634235207184 quant_model/MobilenetV2/expanded_conv_12/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_5/add -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534, -39.65088226841534 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461, 45.3152940210461 quant_model/MobilenetV2/expanded_conv_12/project/Conv2D_Fold -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944, -24.681669034362944 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822, 24.10767673123822 quant_model/MobilenetV2/expanded_conv_7/project/Conv2D_Fold -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708, -17.595701831894708 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586, 25.547605544385586 quant_model/MobilenetV2/expanded_conv_7/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_11/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_5/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_7/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_2/add -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962, -53.54242551715962 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044, 52.297252830714044 quant_model/MobilenetV2/expanded_conv_9/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_15/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_8/project/Conv2D_Fold -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463, -17.5622108523463 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516, 19.44905995218516 quant_model/MobilenetV2/expanded_conv_9/project/Conv2D_Fold -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392, -22.317128771989392 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284, 22.848488980846284 quant_model/MobilenetV2/expanded_conv_9/add -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049, -27.97352140219049 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318, 30.495724151568318 quant_model/MobilenetV2/expanded_conv_5/depthwise/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_12/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_5/project/Conv2D_Fold -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403, -31.450538909489403 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419, 34.28624323739419 quant_model/MobilenetV2/expanded_conv_16/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 quant_model/MobilenetV2/expanded_conv_4/expand/Relu6 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995, 5.9997619362406995 ================================================ FILE: examples/processed.cleveland.data ================================================ 63.0,1.0,1.0,145.0,233.0,1.0,2.0,150.0,0.0,2.3,3.0,0.0,6.0,0 67.0,1.0,4.0,160.0,286.0,0.0,2.0,108.0,1.0,1.5,2.0,3.0,3.0,2 67.0,1.0,4.0,120.0,229.0,0.0,2.0,129.0,1.0,2.6,2.0,2.0,7.0,1 37.0,1.0,3.0,130.0,250.0,0.0,0.0,187.0,0.0,3.5,3.0,0.0,3.0,0 41.0,0.0,2.0,130.0,204.0,0.0,2.0,172.0,0.0,1.4,1.0,0.0,3.0,0 56.0,1.0,2.0,120.0,236.0,0.0,0.0,178.0,0.0,0.8,1.0,0.0,3.0,0 62.0,0.0,4.0,140.0,268.0,0.0,2.0,160.0,0.0,3.6,3.0,2.0,3.0,3 57.0,0.0,4.0,120.0,354.0,0.0,0.0,163.0,1.0,0.6,1.0,0.0,3.0,0 63.0,1.0,4.0,130.0,254.0,0.0,2.0,147.0,0.0,1.4,2.0,1.0,7.0,2 53.0,1.0,4.0,140.0,203.0,1.0,2.0,155.0,1.0,3.1,3.0,0.0,7.0,1 57.0,1.0,4.0,140.0,192.0,0.0,0.0,148.0,0.0,0.4,2.0,0.0,6.0,0 56.0,0.0,2.0,140.0,294.0,0.0,2.0,153.0,0.0,1.3,2.0,0.0,3.0,0 56.0,1.0,3.0,130.0,256.0,1.0,2.0,142.0,1.0,0.6,2.0,1.0,6.0,2 44.0,1.0,2.0,120.0,263.0,0.0,0.0,173.0,0.0,0.0,1.0,0.0,7.0,0 52.0,1.0,3.0,172.0,199.0,1.0,0.0,162.0,0.0,0.5,1.0,0.0,7.0,0 57.0,1.0,3.0,150.0,168.0,0.0,0.0,174.0,0.0,1.6,1.0,0.0,3.0,0 48.0,1.0,2.0,110.0,229.0,0.0,0.0,168.0,0.0,1.0,3.0,0.0,7.0,1 54.0,1.0,4.0,140.0,239.0,0.0,0.0,160.0,0.0,1.2,1.0,0.0,3.0,0 48.0,0.0,3.0,130.0,275.0,0.0,0.0,139.0,0.0,0.2,1.0,0.0,3.0,0 49.0,1.0,2.0,130.0,266.0,0.0,0.0,171.0,0.0,0.6,1.0,0.0,3.0,0 64.0,1.0,1.0,110.0,211.0,0.0,2.0,144.0,1.0,1.8,2.0,0.0,3.0,0 58.0,0.0,1.0,150.0,283.0,1.0,2.0,162.0,0.0,1.0,1.0,0.0,3.0,0 58.0,1.0,2.0,120.0,284.0,0.0,2.0,160.0,0.0,1.8,2.0,0.0,3.0,1 58.0,1.0,3.0,132.0,224.0,0.0,2.0,173.0,0.0,3.2,1.0,2.0,7.0,3 60.0,1.0,4.0,130.0,206.0,0.0,2.0,132.0,1.0,2.4,2.0,2.0,7.0,4 50.0,0.0,3.0,120.0,219.0,0.0,0.0,158.0,0.0,1.6,2.0,0.0,3.0,0 58.0,0.0,3.0,120.0,340.0,0.0,0.0,172.0,0.0,0.0,1.0,0.0,3.0,0 66.0,0.0,1.0,150.0,226.0,0.0,0.0,114.0,0.0,2.6,3.0,0.0,3.0,0 43.0,1.0,4.0,150.0,247.0,0.0,0.0,171.0,0.0,1.5,1.0,0.0,3.0,0 40.0,1.0,4.0,110.0,167.0,0.0,2.0,114.0,1.0,2.0,2.0,0.0,7.0,3 69.0,0.0,1.0,140.0,239.0,0.0,0.0,151.0,0.0,1.8,1.0,2.0,3.0,0 60.0,1.0,4.0,117.0,230.0,1.0,0.0,160.0,1.0,1.4,1.0,2.0,7.0,2 64.0,1.0,3.0,140.0,335.0,0.0,0.0,158.0,0.0,0.0,1.0,0.0,3.0,1 59.0,1.0,4.0,135.0,234.0,0.0,0.0,161.0,0.0,0.5,2.0,0.0,7.0,0 44.0,1.0,3.0,130.0,233.0,0.0,0.0,179.0,1.0,0.4,1.0,0.0,3.0,0 42.0,1.0,4.0,140.0,226.0,0.0,0.0,178.0,0.0,0.0,1.0,0.0,3.0,0 43.0,1.0,4.0,120.0,177.0,0.0,2.0,120.0,1.0,2.5,2.0,0.0,7.0,3 57.0,1.0,4.0,150.0,276.0,0.0,2.0,112.0,1.0,0.6,2.0,1.0,6.0,1 55.0,1.0,4.0,132.0,353.0,0.0,0.0,132.0,1.0,1.2,2.0,1.0,7.0,3 61.0,1.0,3.0,150.0,243.0,1.0,0.0,137.0,1.0,1.0,2.0,0.0,3.0,0 65.0,0.0,4.0,150.0,225.0,0.0,2.0,114.0,0.0,1.0,2.0,3.0,7.0,4 40.0,1.0,1.0,140.0,199.0,0.0,0.0,178.0,1.0,1.4,1.0,0.0,7.0,0 71.0,0.0,2.0,160.0,302.0,0.0,0.0,162.0,0.0,0.4,1.0,2.0,3.0,0 59.0,1.0,3.0,150.0,212.0,1.0,0.0,157.0,0.0,1.6,1.0,0.0,3.0,0 61.0,0.0,4.0,130.0,330.0,0.0,2.0,169.0,0.0,0.0,1.0,0.0,3.0,1 58.0,1.0,3.0,112.0,230.0,0.0,2.0,165.0,0.0,2.5,2.0,1.0,7.0,4 51.0,1.0,3.0,110.0,175.0,0.0,0.0,123.0,0.0,0.6,1.0,0.0,3.0,0 50.0,1.0,4.0,150.0,243.0,0.0,2.0,128.0,0.0,2.6,2.0,0.0,7.0,4 65.0,0.0,3.0,140.0,417.0,1.0,2.0,157.0,0.0,0.8,1.0,1.0,3.0,0 53.0,1.0,3.0,130.0,197.0,1.0,2.0,152.0,0.0,1.2,3.0,0.0,3.0,0 41.0,0.0,2.0,105.0,198.0,0.0,0.0,168.0,0.0,0.0,1.0,1.0,3.0,0 65.0,1.0,4.0,120.0,177.0,0.0,0.0,140.0,0.0,0.4,1.0,0.0,7.0,0 44.0,1.0,4.0,112.0,290.0,0.0,2.0,153.0,0.0,0.0,1.0,1.0,3.0,2 44.0,1.0,2.0,130.0,219.0,0.0,2.0,188.0,0.0,0.0,1.0,0.0,3.0,0 60.0,1.0,4.0,130.0,253.0,0.0,0.0,144.0,1.0,1.4,1.0,1.0,7.0,1 54.0,1.0,4.0,124.0,266.0,0.0,2.0,109.0,1.0,2.2,2.0,1.0,7.0,1 50.0,1.0,3.0,140.0,233.0,0.0,0.0,163.0,0.0,0.6,2.0,1.0,7.0,1 41.0,1.0,4.0,110.0,172.0,0.0,2.0,158.0,0.0,0.0,1.0,0.0,7.0,1 54.0,1.0,3.0,125.0,273.0,0.0,2.0,152.0,0.0,0.5,3.0,1.0,3.0,0 51.0,1.0,1.0,125.0,213.0,0.0,2.0,125.0,1.0,1.4,1.0,1.0,3.0,0 51.0,0.0,4.0,130.0,305.0,0.0,0.0,142.0,1.0,1.2,2.0,0.0,7.0,2 46.0,0.0,3.0,142.0,177.0,0.0,2.0,160.0,1.0,1.4,3.0,0.0,3.0,0 58.0,1.0,4.0,128.0,216.0,0.0,2.0,131.0,1.0,2.2,2.0,3.0,7.0,1 54.0,0.0,3.0,135.0,304.0,1.0,0.0,170.0,0.0,0.0,1.0,0.0,3.0,0 54.0,1.0,4.0,120.0,188.0,0.0,0.0,113.0,0.0,1.4,2.0,1.0,7.0,2 60.0,1.0,4.0,145.0,282.0,0.0,2.0,142.0,1.0,2.8,2.0,2.0,7.0,2 60.0,1.0,3.0,140.0,185.0,0.0,2.0,155.0,0.0,3.0,2.0,0.0,3.0,1 54.0,1.0,3.0,150.0,232.0,0.0,2.0,165.0,0.0,1.6,1.0,0.0,7.0,0 59.0,1.0,4.0,170.0,326.0,0.0,2.0,140.0,1.0,3.4,3.0,0.0,7.0,2 46.0,1.0,3.0,150.0,231.0,0.0,0.0,147.0,0.0,3.6,2.0,0.0,3.0,1 65.0,0.0,3.0,155.0,269.0,0.0,0.0,148.0,0.0,0.8,1.0,0.0,3.0,0 67.0,1.0,4.0,125.0,254.0,1.0,0.0,163.0,0.0,0.2,2.0,2.0,7.0,3 62.0,1.0,4.0,120.0,267.0,0.0,0.0,99.0,1.0,1.8,2.0,2.0,7.0,1 65.0,1.0,4.0,110.0,248.0,0.0,2.0,158.0,0.0,0.6,1.0,2.0,6.0,1 44.0,1.0,4.0,110.0,197.0,0.0,2.0,177.0,0.0,0.0,1.0,1.0,3.0,1 65.0,0.0,3.0,160.0,360.0,0.0,2.0,151.0,0.0,0.8,1.0,0.0,3.0,0 60.0,1.0,4.0,125.0,258.0,0.0,2.0,141.0,1.0,2.8,2.0,1.0,7.0,1 51.0,0.0,3.0,140.0,308.0,0.0,2.0,142.0,0.0,1.5,1.0,1.0,3.0,0 48.0,1.0,2.0,130.0,245.0,0.0,2.0,180.0,0.0,0.2,2.0,0.0,3.0,0 58.0,1.0,4.0,150.0,270.0,0.0,2.0,111.0,1.0,0.8,1.0,0.0,7.0,3 45.0,1.0,4.0,104.0,208.0,0.0,2.0,148.0,1.0,3.0,2.0,0.0,3.0,0 53.0,0.0,4.0,130.0,264.0,0.0,2.0,143.0,0.0,0.4,2.0,0.0,3.0,0 39.0,1.0,3.0,140.0,321.0,0.0,2.0,182.0,0.0,0.0,1.0,0.0,3.0,0 68.0,1.0,3.0,180.0,274.0,1.0,2.0,150.0,1.0,1.6,2.0,0.0,7.0,3 52.0,1.0,2.0,120.0,325.0,0.0,0.0,172.0,0.0,0.2,1.0,0.0,3.0,0 44.0,1.0,3.0,140.0,235.0,0.0,2.0,180.0,0.0,0.0,1.0,0.0,3.0,0 47.0,1.0,3.0,138.0,257.0,0.0,2.0,156.0,0.0,0.0,1.0,0.0,3.0,0 53.0,0.0,3.0,128.0,216.0,0.0,2.0,115.0,0.0,0.0,1.0,0.0,?,0 53.0,0.0,4.0,138.0,234.0,0.0,2.0,160.0,0.0,0.0,1.0,0.0,3.0,0 51.0,0.0,3.0,130.0,256.0,0.0,2.0,149.0,0.0,0.5,1.0,0.0,3.0,0 66.0,1.0,4.0,120.0,302.0,0.0,2.0,151.0,0.0,0.4,2.0,0.0,3.0,0 62.0,0.0,4.0,160.0,164.0,0.0,2.0,145.0,0.0,6.2,3.0,3.0,7.0,3 62.0,1.0,3.0,130.0,231.0,0.0,0.0,146.0,0.0,1.8,2.0,3.0,7.0,0 44.0,0.0,3.0,108.0,141.0,0.0,0.0,175.0,0.0,0.6,2.0,0.0,3.0,0 63.0,0.0,3.0,135.0,252.0,0.0,2.0,172.0,0.0,0.0,1.0,0.0,3.0,0 52.0,1.0,4.0,128.0,255.0,0.0,0.0,161.0,1.0,0.0,1.0,1.0,7.0,1 59.0,1.0,4.0,110.0,239.0,0.0,2.0,142.0,1.0,1.2,2.0,1.0,7.0,2 60.0,0.0,4.0,150.0,258.0,0.0,2.0,157.0,0.0,2.6,2.0,2.0,7.0,3 52.0,1.0,2.0,134.0,201.0,0.0,0.0,158.0,0.0,0.8,1.0,1.0,3.0,0 48.0,1.0,4.0,122.0,222.0,0.0,2.0,186.0,0.0,0.0,1.0,0.0,3.0,0 45.0,1.0,4.0,115.0,260.0,0.0,2.0,185.0,0.0,0.0,1.0,0.0,3.0,0 34.0,1.0,1.0,118.0,182.0,0.0,2.0,174.0,0.0,0.0,1.0,0.0,3.0,0 57.0,0.0,4.0,128.0,303.0,0.0,2.0,159.0,0.0,0.0,1.0,1.0,3.0,0 71.0,0.0,3.0,110.0,265.0,1.0,2.0,130.0,0.0,0.0,1.0,1.0,3.0,0 49.0,1.0,3.0,120.0,188.0,0.0,0.0,139.0,0.0,2.0,2.0,3.0,7.0,3 54.0,1.0,2.0,108.0,309.0,0.0,0.0,156.0,0.0,0.0,1.0,0.0,7.0,0 59.0,1.0,4.0,140.0,177.0,0.0,0.0,162.0,1.0,0.0,1.0,1.0,7.0,2 57.0,1.0,3.0,128.0,229.0,0.0,2.0,150.0,0.0,0.4,2.0,1.0,7.0,1 61.0,1.0,4.0,120.0,260.0,0.0,0.0,140.0,1.0,3.6,2.0,1.0,7.0,2 39.0,1.0,4.0,118.0,219.0,0.0,0.0,140.0,0.0,1.2,2.0,0.0,7.0,3 61.0,0.0,4.0,145.0,307.0,0.0,2.0,146.0,1.0,1.0,2.0,0.0,7.0,1 56.0,1.0,4.0,125.0,249.0,1.0,2.0,144.0,1.0,1.2,2.0,1.0,3.0,1 52.0,1.0,1.0,118.0,186.0,0.0,2.0,190.0,0.0,0.0,2.0,0.0,6.0,0 43.0,0.0,4.0,132.0,341.0,1.0,2.0,136.0,1.0,3.0,2.0,0.0,7.0,2 62.0,0.0,3.0,130.0,263.0,0.0,0.0,97.0,0.0,1.2,2.0,1.0,7.0,2 41.0,1.0,2.0,135.0,203.0,0.0,0.0,132.0,0.0,0.0,2.0,0.0,6.0,0 58.0,1.0,3.0,140.0,211.0,1.0,2.0,165.0,0.0,0.0,1.0,0.0,3.0,0 35.0,0.0,4.0,138.0,183.0,0.0,0.0,182.0,0.0,1.4,1.0,0.0,3.0,0 63.0,1.0,4.0,130.0,330.0,1.0,2.0,132.0,1.0,1.8,1.0,3.0,7.0,3 65.0,1.0,4.0,135.0,254.0,0.0,2.0,127.0,0.0,2.8,2.0,1.0,7.0,2 48.0,1.0,4.0,130.0,256.0,1.0,2.0,150.0,1.0,0.0,1.0,2.0,7.0,3 63.0,0.0,4.0,150.0,407.0,0.0,2.0,154.0,0.0,4.0,2.0,3.0,7.0,4 51.0,1.0,3.0,100.0,222.0,0.0,0.0,143.0,1.0,1.2,2.0,0.0,3.0,0 55.0,1.0,4.0,140.0,217.0,0.0,0.0,111.0,1.0,5.6,3.0,0.0,7.0,3 65.0,1.0,1.0,138.0,282.0,1.0,2.0,174.0,0.0,1.4,2.0,1.0,3.0,1 45.0,0.0,2.0,130.0,234.0,0.0,2.0,175.0,0.0,0.6,2.0,0.0,3.0,0 56.0,0.0,4.0,200.0,288.0,1.0,2.0,133.0,1.0,4.0,3.0,2.0,7.0,3 54.0,1.0,4.0,110.0,239.0,0.0,0.0,126.0,1.0,2.8,2.0,1.0,7.0,3 44.0,1.0,2.0,120.0,220.0,0.0,0.0,170.0,0.0,0.0,1.0,0.0,3.0,0 62.0,0.0,4.0,124.0,209.0,0.0,0.0,163.0,0.0,0.0,1.0,0.0,3.0,0 54.0,1.0,3.0,120.0,258.0,0.0,2.0,147.0,0.0,0.4,2.0,0.0,7.0,0 51.0,1.0,3.0,94.0,227.0,0.0,0.0,154.0,1.0,0.0,1.0,1.0,7.0,0 29.0,1.0,2.0,130.0,204.0,0.0,2.0,202.0,0.0,0.0,1.0,0.0,3.0,0 51.0,1.0,4.0,140.0,261.0,0.0,2.0,186.0,1.0,0.0,1.0,0.0,3.0,0 43.0,0.0,3.0,122.0,213.0,0.0,0.0,165.0,0.0,0.2,2.0,0.0,3.0,0 55.0,0.0,2.0,135.0,250.0,0.0,2.0,161.0,0.0,1.4,2.0,0.0,3.0,0 70.0,1.0,4.0,145.0,174.0,0.0,0.0,125.0,1.0,2.6,3.0,0.0,7.0,4 62.0,1.0,2.0,120.0,281.0,0.0,2.0,103.0,0.0,1.4,2.0,1.0,7.0,3 35.0,1.0,4.0,120.0,198.0,0.0,0.0,130.0,1.0,1.6,2.0,0.0,7.0,1 51.0,1.0,3.0,125.0,245.0,1.0,2.0,166.0,0.0,2.4,2.0,0.0,3.0,0 59.0,1.0,2.0,140.0,221.0,0.0,0.0,164.0,1.0,0.0,1.0,0.0,3.0,0 59.0,1.0,1.0,170.0,288.0,0.0,2.0,159.0,0.0,0.2,2.0,0.0,7.0,1 52.0,1.0,2.0,128.0,205.0,1.0,0.0,184.0,0.0,0.0,1.0,0.0,3.0,0 64.0,1.0,3.0,125.0,309.0,0.0,0.0,131.0,1.0,1.8,2.0,0.0,7.0,1 58.0,1.0,3.0,105.0,240.0,0.0,2.0,154.0,1.0,0.6,2.0,0.0,7.0,0 47.0,1.0,3.0,108.0,243.0,0.0,0.0,152.0,0.0,0.0,1.0,0.0,3.0,1 57.0,1.0,4.0,165.0,289.0,1.0,2.0,124.0,0.0,1.0,2.0,3.0,7.0,4 41.0,1.0,3.0,112.0,250.0,0.0,0.0,179.0,0.0,0.0,1.0,0.0,3.0,0 45.0,1.0,2.0,128.0,308.0,0.0,2.0,170.0,0.0,0.0,1.0,0.0,3.0,0 60.0,0.0,3.0,102.0,318.0,0.0,0.0,160.0,0.0,0.0,1.0,1.0,3.0,0 52.0,1.0,1.0,152.0,298.0,1.0,0.0,178.0,0.0,1.2,2.0,0.0,7.0,0 42.0,0.0,4.0,102.0,265.0,0.0,2.0,122.0,0.0,0.6,2.0,0.0,3.0,0 67.0,0.0,3.0,115.0,564.0,0.0,2.0,160.0,0.0,1.6,2.0,0.0,7.0,0 55.0,1.0,4.0,160.0,289.0,0.0,2.0,145.0,1.0,0.8,2.0,1.0,7.0,4 64.0,1.0,4.0,120.0,246.0,0.0,2.0,96.0,1.0,2.2,3.0,1.0,3.0,3 70.0,1.0,4.0,130.0,322.0,0.0,2.0,109.0,0.0,2.4,2.0,3.0,3.0,1 51.0,1.0,4.0,140.0,299.0,0.0,0.0,173.0,1.0,1.6,1.0,0.0,7.0,1 58.0,1.0,4.0,125.0,300.0,0.0,2.0,171.0,0.0,0.0,1.0,2.0,7.0,1 60.0,1.0,4.0,140.0,293.0,0.0,2.0,170.0,0.0,1.2,2.0,2.0,7.0,2 68.0,1.0,3.0,118.0,277.0,0.0,0.0,151.0,0.0,1.0,1.0,1.0,7.0,0 46.0,1.0,2.0,101.0,197.0,1.0,0.0,156.0,0.0,0.0,1.0,0.0,7.0,0 77.0,1.0,4.0,125.0,304.0,0.0,2.0,162.0,1.0,0.0,1.0,3.0,3.0,4 54.0,0.0,3.0,110.0,214.0,0.0,0.0,158.0,0.0,1.6,2.0,0.0,3.0,0 58.0,0.0,4.0,100.0,248.0,0.0,2.0,122.0,0.0,1.0,2.0,0.0,3.0,0 48.0,1.0,3.0,124.0,255.0,1.0,0.0,175.0,0.0,0.0,1.0,2.0,3.0,0 57.0,1.0,4.0,132.0,207.0,0.0,0.0,168.0,1.0,0.0,1.0,0.0,7.0,0 52.0,1.0,3.0,138.0,223.0,0.0,0.0,169.0,0.0,0.0,1.0,?,3.0,0 54.0,0.0,2.0,132.0,288.0,1.0,2.0,159.0,1.0,0.0,1.0,1.0,3.0,0 35.0,1.0,4.0,126.0,282.0,0.0,2.0,156.0,1.0,0.0,1.0,0.0,7.0,1 45.0,0.0,2.0,112.0,160.0,0.0,0.0,138.0,0.0,0.0,2.0,0.0,3.0,0 70.0,1.0,3.0,160.0,269.0,0.0,0.0,112.0,1.0,2.9,2.0,1.0,7.0,3 53.0,1.0,4.0,142.0,226.0,0.0,2.0,111.0,1.0,0.0,1.0,0.0,7.0,0 59.0,0.0,4.0,174.0,249.0,0.0,0.0,143.0,1.0,0.0,2.0,0.0,3.0,1 62.0,0.0,4.0,140.0,394.0,0.0,2.0,157.0,0.0,1.2,2.0,0.0,3.0,0 64.0,1.0,4.0,145.0,212.0,0.0,2.0,132.0,0.0,2.0,2.0,2.0,6.0,4 57.0,1.0,4.0,152.0,274.0,0.0,0.0,88.0,1.0,1.2,2.0,1.0,7.0,1 52.0,1.0,4.0,108.0,233.0,1.0,0.0,147.0,0.0,0.1,1.0,3.0,7.0,0 56.0,1.0,4.0,132.0,184.0,0.0,2.0,105.0,1.0,2.1,2.0,1.0,6.0,1 43.0,1.0,3.0,130.0,315.0,0.0,0.0,162.0,0.0,1.9,1.0,1.0,3.0,0 53.0,1.0,3.0,130.0,246.0,1.0,2.0,173.0,0.0,0.0,1.0,3.0,3.0,0 48.0,1.0,4.0,124.0,274.0,0.0,2.0,166.0,0.0,0.5,2.0,0.0,7.0,3 56.0,0.0,4.0,134.0,409.0,0.0,2.0,150.0,1.0,1.9,2.0,2.0,7.0,2 42.0,1.0,1.0,148.0,244.0,0.0,2.0,178.0,0.0,0.8,1.0,2.0,3.0,0 59.0,1.0,1.0,178.0,270.0,0.0,2.0,145.0,0.0,4.2,3.0,0.0,7.0,0 60.0,0.0,4.0,158.0,305.0,0.0,2.0,161.0,0.0,0.0,1.0,0.0,3.0,1 63.0,0.0,2.0,140.0,195.0,0.0,0.0,179.0,0.0,0.0,1.0,2.0,3.0,0 42.0,1.0,3.0,120.0,240.0,1.0,0.0,194.0,0.0,0.8,3.0,0.0,7.0,0 66.0,1.0,2.0,160.0,246.0,0.0,0.0,120.0,1.0,0.0,2.0,3.0,6.0,2 54.0,1.0,2.0,192.0,283.0,0.0,2.0,195.0,0.0,0.0,1.0,1.0,7.0,1 69.0,1.0,3.0,140.0,254.0,0.0,2.0,146.0,0.0,2.0,2.0,3.0,7.0,2 50.0,1.0,3.0,129.0,196.0,0.0,0.0,163.0,0.0,0.0,1.0,0.0,3.0,0 51.0,1.0,4.0,140.0,298.0,0.0,0.0,122.0,1.0,4.2,2.0,3.0,7.0,3 43.0,1.0,4.0,132.0,247.0,1.0,2.0,143.0,1.0,0.1,2.0,?,7.0,1 62.0,0.0,4.0,138.0,294.0,1.0,0.0,106.0,0.0,1.9,2.0,3.0,3.0,2 68.0,0.0,3.0,120.0,211.0,0.0,2.0,115.0,0.0,1.5,2.0,0.0,3.0,0 67.0,1.0,4.0,100.0,299.0,0.0,2.0,125.0,1.0,0.9,2.0,2.0,3.0,3 69.0,1.0,1.0,160.0,234.0,1.0,2.0,131.0,0.0,0.1,2.0,1.0,3.0,0 45.0,0.0,4.0,138.0,236.0,0.0,2.0,152.0,1.0,0.2,2.0,0.0,3.0,0 50.0,0.0,2.0,120.0,244.0,0.0,0.0,162.0,0.0,1.1,1.0,0.0,3.0,0 59.0,1.0,1.0,160.0,273.0,0.0,2.0,125.0,0.0,0.0,1.0,0.0,3.0,1 50.0,0.0,4.0,110.0,254.0,0.0,2.0,159.0,0.0,0.0,1.0,0.0,3.0,0 64.0,0.0,4.0,180.0,325.0,0.0,0.0,154.0,1.0,0.0,1.0,0.0,3.0,0 57.0,1.0,3.0,150.0,126.0,1.0,0.0,173.0,0.0,0.2,1.0,1.0,7.0,0 64.0,0.0,3.0,140.0,313.0,0.0,0.0,133.0,0.0,0.2,1.0,0.0,7.0,0 43.0,1.0,4.0,110.0,211.0,0.0,0.0,161.0,0.0,0.0,1.0,0.0,7.0,0 45.0,1.0,4.0,142.0,309.0,0.0,2.0,147.0,1.0,0.0,2.0,3.0,7.0,3 58.0,1.0,4.0,128.0,259.0,0.0,2.0,130.0,1.0,3.0,2.0,2.0,7.0,3 50.0,1.0,4.0,144.0,200.0,0.0,2.0,126.0,1.0,0.9,2.0,0.0,7.0,3 55.0,1.0,2.0,130.0,262.0,0.0,0.0,155.0,0.0,0.0,1.0,0.0,3.0,0 62.0,0.0,4.0,150.0,244.0,0.0,0.0,154.0,1.0,1.4,2.0,0.0,3.0,1 37.0,0.0,3.0,120.0,215.0,0.0,0.0,170.0,0.0,0.0,1.0,0.0,3.0,0 38.0,1.0,1.0,120.0,231.0,0.0,0.0,182.0,1.0,3.8,2.0,0.0,7.0,4 41.0,1.0,3.0,130.0,214.0,0.0,2.0,168.0,0.0,2.0,2.0,0.0,3.0,0 66.0,0.0,4.0,178.0,228.0,1.0,0.0,165.0,1.0,1.0,2.0,2.0,7.0,3 52.0,1.0,4.0,112.0,230.0,0.0,0.0,160.0,0.0,0.0,1.0,1.0,3.0,1 56.0,1.0,1.0,120.0,193.0,0.0,2.0,162.0,0.0,1.9,2.0,0.0,7.0,0 46.0,0.0,2.0,105.0,204.0,0.0,0.0,172.0,0.0,0.0,1.0,0.0,3.0,0 46.0,0.0,4.0,138.0,243.0,0.0,2.0,152.0,1.0,0.0,2.0,0.0,3.0,0 64.0,0.0,4.0,130.0,303.0,0.0,0.0,122.0,0.0,2.0,2.0,2.0,3.0,0 59.0,1.0,4.0,138.0,271.0,0.0,2.0,182.0,0.0,0.0,1.0,0.0,3.0,0 41.0,0.0,3.0,112.0,268.0,0.0,2.0,172.0,1.0,0.0,1.0,0.0,3.0,0 54.0,0.0,3.0,108.0,267.0,0.0,2.0,167.0,0.0,0.0,1.0,0.0,3.0,0 39.0,0.0,3.0,94.0,199.0,0.0,0.0,179.0,0.0,0.0,1.0,0.0,3.0,0 53.0,1.0,4.0,123.0,282.0,0.0,0.0,95.0,1.0,2.0,2.0,2.0,7.0,3 63.0,0.0,4.0,108.0,269.0,0.0,0.0,169.0,1.0,1.8,2.0,2.0,3.0,1 34.0,0.0,2.0,118.0,210.0,0.0,0.0,192.0,0.0,0.7,1.0,0.0,3.0,0 47.0,1.0,4.0,112.0,204.0,0.0,0.0,143.0,0.0,0.1,1.0,0.0,3.0,0 67.0,0.0,3.0,152.0,277.0,0.0,0.0,172.0,0.0,0.0,1.0,1.0,3.0,0 54.0,1.0,4.0,110.0,206.0,0.0,2.0,108.0,1.0,0.0,2.0,1.0,3.0,3 66.0,1.0,4.0,112.0,212.0,0.0,2.0,132.0,1.0,0.1,1.0,1.0,3.0,2 52.0,0.0,3.0,136.0,196.0,0.0,2.0,169.0,0.0,0.1,2.0,0.0,3.0,0 55.0,0.0,4.0,180.0,327.0,0.0,1.0,117.0,1.0,3.4,2.0,0.0,3.0,2 49.0,1.0,3.0,118.0,149.0,0.0,2.0,126.0,0.0,0.8,1.0,3.0,3.0,1 74.0,0.0,2.0,120.0,269.0,0.0,2.0,121.0,1.0,0.2,1.0,1.0,3.0,0 54.0,0.0,3.0,160.0,201.0,0.0,0.0,163.0,0.0,0.0,1.0,1.0,3.0,0 54.0,1.0,4.0,122.0,286.0,0.0,2.0,116.0,1.0,3.2,2.0,2.0,3.0,3 56.0,1.0,4.0,130.0,283.0,1.0,2.0,103.0,1.0,1.6,3.0,0.0,7.0,2 46.0,1.0,4.0,120.0,249.0,0.0,2.0,144.0,0.0,0.8,1.0,0.0,7.0,1 49.0,0.0,2.0,134.0,271.0,0.0,0.0,162.0,0.0,0.0,2.0,0.0,3.0,0 42.0,1.0,2.0,120.0,295.0,0.0,0.0,162.0,0.0,0.0,1.0,0.0,3.0,0 41.0,1.0,2.0,110.0,235.0,0.0,0.0,153.0,0.0,0.0,1.0,0.0,3.0,0 41.0,0.0,2.0,126.0,306.0,0.0,0.0,163.0,0.0,0.0,1.0,0.0,3.0,0 49.0,0.0,4.0,130.0,269.0,0.0,0.0,163.0,0.0,0.0,1.0,0.0,3.0,0 61.0,1.0,1.0,134.0,234.0,0.0,0.0,145.0,0.0,2.6,2.0,2.0,3.0,2 60.0,0.0,3.0,120.0,178.0,1.0,0.0,96.0,0.0,0.0,1.0,0.0,3.0,0 67.0,1.0,4.0,120.0,237.0,0.0,0.0,71.0,0.0,1.0,2.0,0.0,3.0,2 58.0,1.0,4.0,100.0,234.0,0.0,0.0,156.0,0.0,0.1,1.0,1.0,7.0,2 47.0,1.0,4.0,110.0,275.0,0.0,2.0,118.0,1.0,1.0,2.0,1.0,3.0,1 52.0,1.0,4.0,125.0,212.0,0.0,0.0,168.0,0.0,1.0,1.0,2.0,7.0,3 62.0,1.0,2.0,128.0,208.0,1.0,2.0,140.0,0.0,0.0,1.0,0.0,3.0,0 57.0,1.0,4.0,110.0,201.0,0.0,0.0,126.0,1.0,1.5,2.0,0.0,6.0,0 58.0,1.0,4.0,146.0,218.0,0.0,0.0,105.0,0.0,2.0,2.0,1.0,7.0,1 64.0,1.0,4.0,128.0,263.0,0.0,0.0,105.0,1.0,0.2,2.0,1.0,7.0,0 51.0,0.0,3.0,120.0,295.0,0.0,2.0,157.0,0.0,0.6,1.0,0.0,3.0,0 43.0,1.0,4.0,115.0,303.0,0.0,0.0,181.0,0.0,1.2,2.0,0.0,3.0,0 42.0,0.0,3.0,120.0,209.0,0.0,0.0,173.0,0.0,0.0,2.0,0.0,3.0,0 67.0,0.0,4.0,106.0,223.0,0.0,0.0,142.0,0.0,0.3,1.0,2.0,3.0,0 76.0,0.0,3.0,140.0,197.0,0.0,1.0,116.0,0.0,1.1,2.0,0.0,3.0,0 70.0,1.0,2.0,156.0,245.0,0.0,2.0,143.0,0.0,0.0,1.0,0.0,3.0,0 57.0,1.0,2.0,124.0,261.0,0.0,0.0,141.0,0.0,0.3,1.0,0.0,7.0,1 44.0,0.0,3.0,118.0,242.0,0.0,0.0,149.0,0.0,0.3,2.0,1.0,3.0,0 58.0,0.0,2.0,136.0,319.0,1.0,2.0,152.0,0.0,0.0,1.0,2.0,3.0,3 60.0,0.0,1.0,150.0,240.0,0.0,0.0,171.0,0.0,0.9,1.0,0.0,3.0,0 44.0,1.0,3.0,120.0,226.0,0.0,0.0,169.0,0.0,0.0,1.0,0.0,3.0,0 61.0,1.0,4.0,138.0,166.0,0.0,2.0,125.0,1.0,3.6,2.0,1.0,3.0,4 42.0,1.0,4.0,136.0,315.0,0.0,0.0,125.0,1.0,1.8,2.0,0.0,6.0,2 52.0,1.0,4.0,128.0,204.0,1.0,0.0,156.0,1.0,1.0,2.0,0.0,?,2 59.0,1.0,3.0,126.0,218.0,1.0,0.0,134.0,0.0,2.2,2.0,1.0,6.0,2 40.0,1.0,4.0,152.0,223.0,0.0,0.0,181.0,0.0,0.0,1.0,0.0,7.0,1 42.0,1.0,3.0,130.0,180.0,0.0,0.0,150.0,0.0,0.0,1.0,0.0,3.0,0 61.0,1.0,4.0,140.0,207.0,0.0,2.0,138.0,1.0,1.9,1.0,1.0,7.0,1 66.0,1.0,4.0,160.0,228.0,0.0,2.0,138.0,0.0,2.3,1.0,0.0,6.0,0 46.0,1.0,4.0,140.0,311.0,0.0,0.0,120.0,1.0,1.8,2.0,2.0,7.0,2 71.0,0.0,4.0,112.0,149.0,0.0,0.0,125.0,0.0,1.6,2.0,0.0,3.0,0 59.0,1.0,1.0,134.0,204.0,0.0,0.0,162.0,0.0,0.8,1.0,2.0,3.0,1 64.0,1.0,1.0,170.0,227.0,0.0,2.0,155.0,0.0,0.6,2.0,0.0,7.0,0 66.0,0.0,3.0,146.0,278.0,0.0,2.0,152.0,0.0,0.0,2.0,1.0,3.0,0 39.0,0.0,3.0,138.0,220.0,0.0,0.0,152.0,0.0,0.0,2.0,0.0,3.0,0 57.0,1.0,2.0,154.0,232.0,0.0,2.0,164.0,0.0,0.0,1.0,1.0,3.0,1 58.0,0.0,4.0,130.0,197.0,0.0,0.0,131.0,0.0,0.6,2.0,0.0,3.0,0 57.0,1.0,4.0,110.0,335.0,0.0,0.0,143.0,1.0,3.0,2.0,1.0,7.0,2 47.0,1.0,3.0,130.0,253.0,0.0,0.0,179.0,0.0,0.0,1.0,0.0,3.0,0 55.0,0.0,4.0,128.0,205.0,0.0,1.0,130.0,1.0,2.0,2.0,1.0,7.0,3 35.0,1.0,2.0,122.0,192.0,0.0,0.0,174.0,0.0,0.0,1.0,0.0,3.0,0 61.0,1.0,4.0,148.0,203.0,0.0,0.0,161.0,0.0,0.0,1.0,1.0,7.0,2 58.0,1.0,4.0,114.0,318.0,0.0,1.0,140.0,0.0,4.4,3.0,3.0,6.0,4 58.0,0.0,4.0,170.0,225.0,1.0,2.0,146.0,1.0,2.8,2.0,2.0,6.0,2 58.0,1.0,2.0,125.0,220.0,0.0,0.0,144.0,0.0,0.4,2.0,?,7.0,0 56.0,1.0,2.0,130.0,221.0,0.0,2.0,163.0,0.0,0.0,1.0,0.0,7.0,0 56.0,1.0,2.0,120.0,240.0,0.0,0.0,169.0,0.0,0.0,3.0,0.0,3.0,0 67.0,1.0,3.0,152.0,212.0,0.0,2.0,150.0,0.0,0.8,2.0,0.0,7.0,1 55.0,0.0,2.0,132.0,342.0,0.0,0.0,166.0,0.0,1.2,1.0,0.0,3.0,0 44.0,1.0,4.0,120.0,169.0,0.0,0.0,144.0,1.0,2.8,3.0,0.0,6.0,2 63.0,1.0,4.0,140.0,187.0,0.0,2.0,144.0,1.0,4.0,1.0,2.0,7.0,2 63.0,0.0,4.0,124.0,197.0,0.0,0.0,136.0,1.0,0.0,2.0,0.0,3.0,1 41.0,1.0,2.0,120.0,157.0,0.0,0.0,182.0,0.0,0.0,1.0,0.0,3.0,0 59.0,1.0,4.0,164.0,176.0,1.0,2.0,90.0,0.0,1.0,2.0,2.0,6.0,3 57.0,0.0,4.0,140.0,241.0,0.0,0.0,123.0,1.0,0.2,2.0,0.0,7.0,1 45.0,1.0,1.0,110.0,264.0,0.0,0.0,132.0,0.0,1.2,2.0,0.0,7.0,1 68.0,1.0,4.0,144.0,193.0,1.0,0.0,141.0,0.0,3.4,2.0,2.0,7.0,2 57.0,1.0,4.0,130.0,131.0,0.0,0.0,115.0,1.0,1.2,2.0,1.0,7.0,3 57.0,0.0,2.0,130.0,236.0,0.0,2.0,174.0,0.0,0.0,2.0,1.0,3.0,1 38.0,1.0,3.0,138.0,175.0,0.0,0.0,173.0,0.0,0.0,1.0,?,3.0,0 ================================================ FILE: pyproject.toml ================================================ [build-system] requires = ["setuptools>=42", "wheel", "setuptools_scm"] build-backend = "setuptools.build_meta" [project] name = "tensorboardX" dynamic = ["version", "readme"] description = "TensorBoardX lets you watch Tensors Flow without Tensorflow" requires-python = ">=3.9" license ="MIT" authors = [ {name = "Tzu-Wei Huang", email = "huang.dexter@gmail.com"} ] classifiers = [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", ] dependencies = [ "numpy", "packaging", "protobuf>=3.20", ] [project.urls] Homepage = "https://github.com/lanpa/tensorboardX" Repository = "https://github.com/lanpa/tensorboardX.git" [tool.setuptools] include-package-data = true packages = ["tensorboardX"] zip-safe = false [tool.setuptools.dynamic] readme = {file = ["HISTORY.rst"]} [tool.setuptools_scm] version_file = "tensorboardX/_version.py" [tool.uv.sources] torch = { index = "pytorch-cpu" } torchvision = { index = "pytorch-cpu" } [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [dependency-groups] dev = [ "pytest-cov>=6.0.0", "pytest>=8.3.4", "protobuf==4.22.3", "torch>=2.5.1", "torchvision>=0.20.1", "numpy>=2.0.2", "tensorboard>=2.18.0", "boto3>=1.35.81", "matplotlib>=3.9.4", "moto<5", "soundfile>=0.12.1", "visdom>=0.2.4", "onnx>=1.17.0", "imageio==2.27", "ruff>=0.8.4", "pillow==11.0.0", ] [tool.ruff] # Exclude a variety of commonly ignored directories. exclude = [ "proto", ] [tool.ruff.lint] # Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`) codes by default. # Unlike Flake8, Ruff doesn't enable pycodestyle warnings (`W`) or # McCabe complexity (`C901`) by default. select = [ # pycodestyle "E", # Pyflakes "F", # pyupgrade "UP", # flake8-bugbear # "B", # flake8-simplify "SIM", # isort "I", ] ignore = ["F401", "E501", "E721", "E741"] ================================================ FILE: run_pytest.sh ================================================ #!/bin/bash SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" pip install -r $SCRIPT_DIR/test-requirements.txt if [ `ps -ef|grep visdom |wc -l` = "1" ] then echo `ps|grep visdom |wc -l` echo "no visdom" visdom & # kill visdom when done testing trap "kill -SIGTERM $!" EXIT fi pytest ================================================ FILE: tensorboardX/__init__.py ================================================ """A module for visualization with tensorboard """ from .global_writer import GlobalSummaryWriter from .record_writer import RecordWriter from .torchvis import TorchVis from .writer import FileWriter, SummaryWriter try: from ._version import __version__ except ImportError: __version__ = "unknown version" ================================================ FILE: tensorboardX/comet_utils.py ================================================ import functools import json import logging from io import BytesIO import numpy as np from google.protobuf.json_format import MessageToJson from .summary import _clean_tag try: import comet_ml comet_installed = True from PIL import Image except ImportError: comet_installed = False logger = logging.getLogger(__name__) class CometLogger: def __init__(self, comet_config={"disabled": True}): global comet_installed self._logging = None self._comet_config = comet_config if comet_config["disabled"] is True: self._logging = False elif comet_config["disabled"] is False and comet_installed is False: raise Exception("Comet and/or Python Image Library not installed. Run 'pip install comet-ml pillow'") def _requiresComet(method): @functools.wraps(method) def wrapper(*args, **kwargs): self = args[0] global comet_installed if self._logging is None and comet_installed: self._logging = False try: if 'api_key' not in self._comet_config: comet_ml.init() if comet_ml.get_global_experiment() is not None: logger.warning("You have already created a comet \ experiment manually, which might \ cause clashes") self._experiment = comet_ml.Experiment(**self._comet_config) self._logging = True self._experiment.log_other("Created from", "tensorboardX") except Exception as e: logger.warning(e) if self._logging is True: return method(*args, **kwargs) return wrapper @_requiresComet def end(self): """Ends an experiment.""" self._experiment.end() comet_ml.config.experiment = None @_requiresComet def log_metric(self, tag, display_name, value, step=None, epoch=None, include_context=True): """Logs a general metric (i.e accuracy, f1).. Args: tag: String - Data identifier display_name: The title of the plot. If empty string is passed, `tag` will be used. value: Float/Integer/Boolean/String step: Optional. Used as the X axis when plotting on comet.ml epoch: Optional. Used as the X axis when plotting on comet.ml include_context: Optional. If set to True (the default), the current context will be logged along the metric. """ name = _clean_tag(tag) if display_name == "" else display_name self._experiment.log_metric(name, value, step, epoch, include_context) @_requiresComet def log_metrics(self, dic, prefix=None, step=None, epoch=None): """Logs a key,value dictionary of metrics. Args: dic: key,value dictionary of metrics prefix: prefix added to metric name step: Optional. Used as the X axis when plotting on comet.ml epoch: Optional. Used as the X axis when plotting on comet.ml """ self._experiment.log_metrics(dic, prefix, step, epoch) @_requiresComet def log_parameters(self, parameters, prefix=None, step=None): """Logs a dictionary (or dictionary-like object) of multiple parameters. Args: parameters: key,value dictionary of parameters prefix: prefix added to metric name step: Optional. Used as the X axis when plotting on comet.ml """ self._experiment.log_parameters(parameters, prefix, step) @_requiresComet def log_audio(self, audio_data, sample_rate=None, file_name=None, metadata=None, overwrite=False, copy_to_tmp=True, step=None): """Logs the audio Asset determined by audio data. Args: audio_data: String or a numpy array - either the file path of the file you want to log, or a numpy array given to scipy.io.wavfile.write for wav conversion. sample_rate: Integer - Optional. The sampling rate given to scipy.io.wavfile.write for creating the wav file. file_name: String - Optional. A custom file name to be displayed. If not provided, the filename from the audio_data argument will be used. metadata: Some additional data to attach to the the audio asset. Must be a JSON-encodable dict. overwrite: if True will overwrite all existing assets with the same name. copy_to_tmp: If audio_data is a numpy array, then this flag determines if the WAV file is first copied to a temporary file before upload. If copy_to_tmp is False, then it is sent directly to the cloud. step: Optional. Used to associate the audio asset to a specific step. """ self._experiment.log_audio(audio_data, sample_rate, file_name, metadata, overwrite, copy_to_tmp, step) @_requiresComet def log_text(self, text, step=None, metadata=None): """Logs the text. These strings appear on the Text Tab in the Comet UI. Args: text: string to be stored step: Optional. Used to associate the asset to a specific step. metadata: Some additional data to attach to the the text. Must be a JSON-encodable dict. """ self._experiment.log_text(text, step, metadata) @_requiresComet def log_histogram(self, values, name=None, step=None, epoch=None, metadata=None, **kwargs): """Logs a histogram of values for a 3D chart as an asset for this experiment. Calling this method multiple times with the same name and incremented steps will add additional histograms to the 3D chart on Comet.ml. Args: values: a list, tuple, array (any shape) to summarize, or a Histogram object name: str (optional), name of summary step: Optional. Used as the Z axis when plotting on Comet.ml. epoch: Optional. Used as the Z axis when plotting on Comet.ml. metadata: Optional: Used for items like prefix for histogram name. kwargs: Optional. Additional keyword arguments for histogram. """ self._experiment.log_histogram_3d(values, name, step, epoch, metadata, **kwargs) @_requiresComet def log_histogram_raw(self, tag, summary, step=None): """Log Raw Histogram Data to Comet as an Asset. Args: tag: Name given to the logged asset summary: TensorboardX Summary protocol buffer with histogram data step: The Global Step for this experiment run. Defaults to None. """ histogram_proto = summary.value[0].histo histogram_raw_data = MessageToJson(histogram_proto) histogram_raw_data['name'] = tag self.log_asset_data(data=histogram_raw_data, name=tag, step=step) @_requiresComet def log_curve(self, name, x, y, overwrite=False, step=None): """Log timeseries data. Args: name: (str) name of data x: array of x-axis values y: array of y-axis values overwrite: (optional, bool) if True, overwrite previous log step: (optional, int) the step value """ self._experiment.log_curve(name, x.tolist(), y.tolist(), overwrite, step) @_requiresComet def log_image_encoded(self, encoded_image_string, tag, step=None): """Logs the image. Images are displayed on the Graphics tab on Comet.ml. Args: encoded_image_string: Required. An encoded image string tag: String - Data identifier step: Optional. Used to associate the image asset to a specific step. """ buff = BytesIO(encoded_image_string) image_pil = Image.open(buff) name = _clean_tag(tag) self._experiment.log_image(image_pil, name, step=step) @_requiresComet def log_asset(self, file_data, file_name=None, overwrite=False, copy_to_tmp=True, step=None, metadata=None): """Logs the Asset determined by file_data. Args: file_data: String or File-like - either the file path of the file you want to log, or a file-like asset. file_name: String - Optional. A custom file name to be displayed. If not provided the filename from the file_data argument will be used. overwrite: if True will overwrite all existing assets with the same name. copy_to_tmp: If file_data is a file-like object, then this flag determines if the file is first copied to a temporary file before upload. If copy_to_tmp is False, then it is sent directly to the cloud. step: Optional. Used to associate the asset to a specific step. """ self._experiment.log_asset(file_data, file_name, overwrite, copy_to_tmp, step, metadata) @_requiresComet def log_asset_data(self, data, name=None, overwrite=False, step=None, metadata=None, epoch=None): """Logs the data given (str, binary, or JSON). Args: data: data to be saved as asset name: String, optional. A custom file name to be displayed If not provided the filename from the temporary saved file will be used. overwrite: Boolean, optional. Default False. If True will overwrite all existing assets with the same name. step: Optional. Used to associate the asset to a specific step. epoch: Optional. Used to associate the asset to a specific epoch. metadata: Optional. Some additional data to attach to the asset data. Must be a JSON-encodable dict. """ self._experiment.log_asset_data(data, name, overwrite, step, metadata, epoch) @_requiresComet def log_embedding(self, vectors, labels, image_data=None, image_preprocess_function=None, image_transparent_color=None, image_background_color_function=None, title="Comet Embedding", template_filename=None, group=None): """Log a multi-dimensional dataset and metadata for viewing with Comet's Embedding Projector (experimental). Args: vectors: the tensors to visualize in 3D labels: labels for each tensor image_data: (optional) list of arrays or Images image_preprocess_function: (optional) if image_data is an array, apply this function to each element first image_transparent_color: a (red, green, blue) tuple image_background_color_function: a function that takes an index, and returns a (red, green, blue) color tuple title: (optional) name of tensor template_filename: (optional) name of template JSON file """ image_size = None if labels is None: return if image_data is not None: image_data = image_data.cpu().detach().numpy() image_size = image_data.shape[1:] if image_size[0] == 1: image_size = image_size[1:] if type(labels) == list: labels = np.array(labels) else: labels = labels.cpu().detach().numpy() self._experiment.log_embedding(vectors, labels, image_data, image_size, image_preprocess_function, image_transparent_color, image_background_color_function, title, template_filename, group) @_requiresComet def log_mesh(self, tag, vertices, colors, faces, config_dict, step, walltime): """Logs a mesh as an asset Args: tag: Data identifier vertices: List of the 3D coordinates of vertices. colors: Colors for each vertex faces: Indices of vertices within each triangle. config_dict: Dictionary with ThreeJS classes names and configuration. step: step value to record walltime: Optional override default walltime (time.time()) seconds after epoch of event """ mesh_json = {} mesh_json['tag'] = tag mesh_json['vertices'] = vertices.tolist() mesh_json['colors'] = colors.tolist() mesh_json['faces'] = faces.tolist() mesh_json['config_dict'] = config_dict mesh_json['walltime'] = walltime mesh_json['asset_type'] = 'mesh' mesh_json = json.dumps(mesh_json) self.log_asset_data(mesh_json, tag, step=step) @_requiresComet def log_raw_figure(self, tag, asset_type, step=None, **kwargs): """Logs a histogram as an asset. Args: tag: Data identifier asset_type: List of the 3D coordinates of vertices. step: step value to record """ file_json = kwargs file_json['asset_type'] = asset_type self.log_asset_data(file_json, tag, step=step) @_requiresComet def log_pr_data(self, tag, summary, num_thresholds, step=None): """Logs a Precision-Recall Curve Data as an asset. Args: tag: An identifier for the PR curve summary: TensorboardX Summary protocol buffer. step: step value to record """ tensor_proto = summary.value[0].tensor shape = [d.size for d in tensor_proto.tensor_shape.dim] values = np.fromiter(tensor_proto.float_val, dtype=np.float32).reshape(shape) thresholds = [1.0 / num_thresholds * i for i in range(num_thresholds)] tp, fp, tn, fn, precision, recall = map(lambda x: x.flatten().tolist(), np.vsplit(values, values.shape[0])) pr_data = { 'TP': tp, 'FP': fp, 'TN': tn, 'FN': fn, 'precision': precision, 'recall': recall, 'thresholds': thresholds, 'name': tag, } self.log_asset_data(pr_data, name=tag, step=step) @_requiresComet def log_pr_raw_data(self, tag, true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, num_thresholds, weights, step=None): """Logs a Precision-Recall Curve Data as an asset. Args: tag: An identifier for the PR curve summary: TensorboardX Summary protocol buffer. step: step value to record """ thresholds = [1.0 / num_thresholds * i for i in range(num_thresholds)] tp, fp, tn, fn, precision, recall = map(lambda x: x.flatten().tolist(), [ true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall]) pr_data = { 'TP': tp, 'FP': fp, 'TN': tn, 'FN': fn, 'precision': precision, 'recall': recall, 'thresholds': thresholds, 'weights': weights, 'name': tag, } self.log_asset_data(pr_data, name=tag, step=step) ================================================ FILE: tensorboardX/crc32c.py ================================================ # https://www.ietf.org/rfc/rfc3309.txt import array import os try: if os.environ.get('CRC32C_SW_MODE', None) is None: os.environ['CRC32C_SW_MODE'] = 'auto' from crc32c import crc32c as _crc32c_native except ImportError: _crc32c_native = None CRC_TABLE = ( 0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351, ) CRC_INIT = 0 _MASK = 0xFFFFFFFF def crc_update(crc, data): """Update CRC-32C checksum with data. Args: crc: 32-bit checksum to update as long. data: byte array, string or iterable over bytes. Returns: 32-bit updated CRC-32C as long. """ if type(data) != array.array or data.itemsize != 1: buf = array.array("B", data) else: buf = data crc ^= _MASK for b in buf: table_index = (crc ^ b) & 0xff crc = (CRC_TABLE[table_index] ^ (crc >> 8)) & _MASK return crc ^ _MASK def crc_finalize(crc): """Finalize CRC-32C checksum. This function should be called as last step of crc calculation. Args: crc: 32-bit checksum as long. Returns: finalized 32-bit checksum as long """ return crc & _MASK def _crc32c(data): """Compute CRC-32C checksum of the data. Args: data: byte array, string or iterable over bytes. Returns: 32-bit CRC-32C checksum of data as long. """ return crc_finalize(crc_update(CRC_INIT, data)) crc32c = _crc32c if _crc32c_native is None else _crc32c_native ================================================ FILE: tensorboardX/embedding.py ================================================ import os import sys # Maximum sprite size allowed by TB frontend, # see https://github.com/lanpa/tensorboardX/issues/516 TB_MAX_SPRITE_SIZE = 8192 def maybe_upload_file(local_path): '''Upload a file to remote cloud storage if the path starts with gs:// or s3:// ''' if local_path.startswith(('s3://', 'gs://')): prefix = local_path.split(':')[0] remote_bucket_path = local_path[len("s3://"):] # same length bp = remote_bucket_path.split("/") bucket = bp[0] path = remote_bucket_path[1 + len(bucket):] # s3://example/file becomes s3:/example/file in Linux local_path = prefix + ':/' + remote_bucket_path if prefix == 's3': import boto3 s3 = boto3.client('s3', endpoint_url=os.environ.get('S3_ENDPOINT')) s3.upload_file(local_path, bucket, path) elif prefix == 'gs': from google.cloud import storage client = storage.Client() Hbucket = storage.Bucket(client, bucket) blob = storage.Blob(path, Hbucket) blob.upload_from_filename(local_path) def make_tsv(metadata, save_path, metadata_header=None): if not metadata_header: metadata = [str(x) for x in metadata] else: assert len(metadata_header) == len(metadata[0]), \ 'len of header must be equal to the number of columns in metadata' metadata = ['\t'.join(str(e) for e in l) for l in [metadata_header] + metadata] named_path = os.path.join(save_path, 'metadata.tsv') with open(named_path, 'w', encoding='utf8') as f: for x in metadata: f.write(x + '\n') maybe_upload_file(named_path) # https://github.com/tensorflow/tensorboard/issues/44 image label will be squared def make_sprite(label_img, save_path): import math import numpy as np from PIL import Image from .utils import make_grid from .x2num import make_np # this ensures the sprite image has correct dimension as described in # https://www.tensorflow.org/get_started/embedding_viz # There are some constraints for the sprite image: # 1. The sprite image should be square. # 2. Each image patch in the sprite image should be square. # 2. The content is row major order, so we can padding the image on the # bottom, but not on the right, otherwise, TB will treat some padded location # as images to be shown. # args: label_img: tensor in NCHW assert label_img.shape[2] == label_img.shape[3], 'Image should be square, see tensorflow/tensorboard#670' total_pixels = label_img.shape[0] * label_img.shape[2] * label_img.shape[3] pixels_one_side = total_pixels ** 0.5 number_of_images_per_row = int(math.ceil(pixels_one_side / label_img.shape[3])) arranged_img_CHW = make_grid(make_np(label_img), ncols=number_of_images_per_row) arranged_img_HWC = arranged_img_CHW.transpose(1, 2, 0) # chw -> hwc sprite_size = arranged_img_CHW.shape[2] assert sprite_size <= TB_MAX_SPRITE_SIZE, 'Sprite too large, see label_img shape limits' arranged_augment_square_HWC = np.ndarray((sprite_size, sprite_size, 3)) arranged_augment_square_HWC[:arranged_img_HWC.shape[0], :, :] = arranged_img_HWC im = Image.fromarray(np.uint8((arranged_augment_square_HWC * 255).clip(0, 255))) named_path = os.path.join(save_path, 'sprite.png') im.save(named_path) maybe_upload_file(named_path) def append_pbtxt(metadata, label_img, save_path, subdir, global_step, tag): from posixpath import join named_path = os.path.join(save_path, 'projector_config.pbtxt') with open(named_path, 'a') as f: # step = os.path.split(save_path)[-1] f.write('embeddings {\n') f.write(f'tensor_name: "{tag}:{str(global_step).zfill(5)}"\n') f.write('tensor_path: "{}"\n'.format(join(subdir, 'tensors.tsv'))) if metadata is not None: f.write('metadata_path: "{}"\n'.format( join(subdir, 'metadata.tsv'))) if label_img is not None: f.write('sprite {\n') f.write('image_path: "{}"\n'.format(join(subdir, 'sprite.png'))) f.write(f'single_image_dim: {label_img.shape[3]}\n') f.write(f'single_image_dim: {label_img.shape[2]}\n') f.write('}\n') f.write('}\n') maybe_upload_file(named_path) def make_mat(matlist, save_path): named_path = os.path.join(save_path, 'tensors.tsv') with open(named_path, 'w') as f: for x in matlist: x = [str(i.item()) for i in x] f.write('\t'.join(x) + '\n') maybe_upload_file(named_path) ================================================ FILE: tensorboardX/event_file_writer.py ================================================ # Copyright 2015 The TensorFlow Authors. All Rights Reserved. # # 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. # ============================================================================== """Writes events to disk in a logdir.""" import multiprocessing import os import queue import socket import threading import time from .proto import event_pb2 from .record_writer import RecordWriter, directory_check class EventsWriter: '''Writes `Event` protocol buffers to an event file.''' def __init__(self, file_prefix, filename_suffix=''): ''' Events files have a name of the form '/some/file/path/events.out.tfevents.[timestamp].[hostname]' ''' self._file_name = file_prefix + ".out.tfevents." + str(time.time())[:10] + "." +\ socket.gethostname() + filename_suffix self._num_outstanding_events = 0 self._py_recordio_writer = RecordWriter(self._file_name) # Initialize an event instance. self._event = event_pb2.Event() self._event.wall_time = time.time() self._event.file_version = 'brain.Event:2' self._lock = threading.Lock() self.write_event(self._event) def write_event(self, event): '''Append "event" to the file.''' # Check if event is of type event_pb2.Event proto. if not isinstance(event, event_pb2.Event): raise TypeError("Expected an event_pb2.Event proto, " f" but got {type(event)}") return self._write_serialized_event(event.SerializeToString()) def _write_serialized_event(self, event_str): with self._lock: self._num_outstanding_events += 1 self._py_recordio_writer.write(event_str) def flush(self): '''Flushes the event file to disk.''' with self._lock: self._num_outstanding_events = 0 self._py_recordio_writer.flush() return True def close(self): '''Call self.flush().''' return_value = self.flush() with self._lock: self._py_recordio_writer.close() return return_value class EventFileWriter: """Writes `Event` protocol buffers to an event file. The `EventFileWriter` class creates an event file in the specified directory, and asynchronously writes Event protocol buffers to the file. The Event file is encoded using the tfrecord format, which is similar to RecordIO. """ def __init__(self, logdir, max_queue_size=10, flush_secs=120, filename_suffix=''): """Creates a `EventFileWriter` and an event file to write to. On construction the summary writer creates a new event file in `logdir`. This event file will contain `Event` protocol buffers, which are written to disk via the add_event method. The other arguments to the constructor control the asynchronous writes to the event file: Args: logdir: A string. Directory where event file will be written. max_queue_size: Integer. Size of the queue for pending events and summaries. flush_secs: Number. How often, in seconds, to flush the pending events and summaries to disk. """ self._logdir = logdir directory_check(self._logdir) self._event_queue = multiprocessing.Queue(max_queue_size) self._ev_writer = EventsWriter(os.path.join( self._logdir, "events"), filename_suffix) self._flush_secs = flush_secs self._closed = False self._worker = _EventLoggerThread(self._event_queue, self._ev_writer, flush_secs) self._worker.start() def get_logdir(self): """Returns the directory where event file will be written.""" return self._logdir def reopen(self): """Reopens the EventFileWriter. Can be called after `close()` to add more events in the same directory. The events will go into a new events file and a new write/flush worker is created. Does nothing if the EventFileWriter was not closed. """ if self._closed: self._closed = False self._worker = _EventLoggerThread( self._event_queue, self._ev_writer, self._flush_secs ) self._worker.start() def add_event(self, event): """Adds an event to the event file. Args: event: An `Event` protocol buffer. """ if not self._closed: self._event_queue.put(event) def flush(self): """Flushes the event file to disk. Call this method to make sure that all pending events have been written to disk. """ if not self._closed: self._ev_writer.flush() def close(self): """Performs a final flush of the event file to disk, stops the write/flush worker and closes the file. Call this method when you do not need the summary writer anymore. """ if not self._closed: self.flush() self._worker.stop() self._ev_writer.close() self._event_queue.close() self._event_queue = None # this is critical self._worker = None # this is critical too self._closed = True class _EventLoggerThread(threading.Thread): """Thread that logs events.""" def __init__(self, queue, record_writer, flush_secs): """Creates an _EventLoggerThread. Args: queue: A Queue from which to dequeue data. record_writer: An data writer. Used to log brain events for the visualizer. flush_secs: How often, in seconds, to flush the pending file to disk. """ threading.Thread.__init__(self) self.daemon = True self._queue = queue self._record_writer = record_writer self._flush_secs = flush_secs # The first data will be flushed immediately. self._next_flush_time = 0 self._has_pending_data = False self._shutdown_signal = object() def stop(self): self._queue.put(self._shutdown_signal) self.join() def run(self): # Here wait on the queue until an data appears, or till the next # time to flush the writer, whichever is earlier. If we have an # data, write it. If not, an empty queue exception will be raised # and we can proceed to flush the writer. while True: now = time.time() queue_wait_duration = self._next_flush_time - now data = None try: if queue_wait_duration > 0: data = self._queue.get(True, queue_wait_duration) else: data = self._queue.get(False) if type(data) == type(self._shutdown_signal): return self._record_writer.write_event(data) self._has_pending_data = True except queue.Empty: pass now = time.time() if now > self._next_flush_time: if self._has_pending_data: # Small optimization - if there are no pending data, # there's no need to flush, since each flush can be # expensive (e.g. uploading a new file to a server). self._record_writer.flush() self._has_pending_data = False # Do it again in flush_secs. self._next_flush_time = now + self._flush_secs ================================================ FILE: tensorboardX/global_writer.py ================================================ import multiprocessing as mp from multiprocessing import Value from .writer import SummaryWriter global _writer _writer = None class GlobalSummaryWriter: """A class that implements an event writer that supports concurrent logging and global logging across different modules. The GlobalSummaryWriter class provides a set of API to write TensorBoard events from different processes. The writer instance can be accessed from different processes or modules. Also, the instance maintains the ``global_step`` value itself so that the interleaved requests to write an event will not conflict each other. This ensures that the resulting event file is TensorBoard compatible. With GlobalSummaryWriter, you can easily log the metrics of your parallel-trained model. The GlobalSummaryWriter and also be used like the ``logging`` module of Python. See how ``getSummaryWriter`` is used below. """ def __init__(self, logdir=None, comment='', purge_step=None, max_queue=10, flush_secs=120, filename_suffix='', write_to_disk=True, log_dir=None, coalesce_process=True, **kwargs): """ Initialize a GlobalSummaryWriter. The resulting instance will maintain a monotonically increasing ``global_step`` for the the event to be written. So there is no need to pass the global_step when calling its member functions such as ``add_scalar()``. All arguments for the constructor will be passed to the ordinary ``SummaryWriter.__init__()`` directly. Examples:: import multiprocessing as mp import numpy as np import time from tensorboardX import GlobalSummaryWriter w = GlobalSummaryWriter() def train(x): w.add_scalar('poolmap/1', x*np.random.randn()) time.sleep(0.05*np.random.randint(0, 10)) w.add_scalar('poolmap/2', x*np.random.randn()) with mp.Pool() as pool: pool.map(train, range(100)) Expected result: .. image:: _static/img/tensorboard/add_scalar_global.png :scale: 50 % """ self.smw = SummaryWriter(logdir=logdir, comment=comment, purge_step=purge_step, max_queue=max_queue, flush_secs=flush_secs, filename_suffix=filename_suffix, write_to_disk=write_to_disk, log_dir=log_dir) self.lock = mp.Lock() self.scalar_tag_to_step = mp.Manager().dict() self.image_tag_to_step = mp.Manager().dict() self.histogram_tag_to_step = mp.Manager().dict() self.text_tag_to_step = mp.Manager().dict() self.audio_tag_to_step = mp.Manager().dict() def add_scalar(self, tag, scalar_value, walltime=None): """Add scalar data to summary. Args: tag (string): Data identifier scalar_value (float): Value to save walltime (float): Optional override default walltime (time.time()) of event """ with self.lock: if tag in self.scalar_tag_to_step: self.scalar_tag_to_step[tag] += 1 else: self.scalar_tag_to_step[tag] = 0 self.smw.add_scalar(tag, scalar_value, self.scalar_tag_to_step[tag], walltime) # def add_histogram(self, tag, values, bins='tensorflow', walltime=None, max_bins=None): # """Add histogram to summary. # Args: # tag (string): Data identifier # values (torch.Tensor, numpy.array): Values to build histogram # bins (string): One of {'tensorflow','auto', 'fd', ...}. # This determines how the bins are made. You can find # other options in: https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html # walltime (float): Optional override default walltime (time.time()) of event # """ # with self.new_tag_mutex.get_lock(): # if tag in self.histogram_tag_to_step: # self.histogram_tag_to_step[tag] += 1 # else: # self.histogram_tag_to_step[tag] = 0 # self.smw.add_histogram(tag, # values, # self.histogram_tag_to_step[tag], # bins=bins, # walltime=walltime, # max_bins=max_bins) def add_image(self, tag, img_tensor, walltime=None, dataformats='CHW'): """Add image data to summary. Note that this requires the ``pillow`` package. Args: tag (string): Data identifier img_tensor (torch.Tensor, numpy.array): An `uint8` or `float` Tensor of shape `[channel, height, width]` where `channel` is 1, 3, or 4. The elements in img_tensor can either have values in [0, 1] (float32) or [0, 255] (uint8). Users are responsible to scale the data in the correct range/type. walltime (float): Optional override default walltime (time.time()) of event. dataformats (string): This parameter specifies the meaning of each dimension of the input tensor. Shape: img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to convert a batch of tensor into 3xHxW format or use ``add_images()`` and let us do the job. Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitible as long as corresponding ``dataformats`` argument is passed. e.g. CHW, HWC, HW. """ with self.lock: if tag in self.image_tag_to_step: self.image_tag_to_step[tag] += 1 else: self.image_tag_to_step[tag] = 0 self.smw.add_image(tag, img_tensor, self.image_tag_to_step[tag], walltime=walltime, dataformats=dataformats) # def add_audio(self, tag, snd_tensor, sample_rate=44100, walltime=None): # """Add audio data to summary. # Args: # tag (string): Data identifier # snd_tensor (torch.Tensor): Sound data # sample_rate (int): sample rate in Hz # walltime (float): Optional override default walltime (time.time()) of event # Shape: # snd_tensor: :math:`(1, L)`. The values should lie between [-1, 1]. # """ # with self.new_tag_mutex.get_lock(): # if tag in self.audio_tag_to_step: # self.audio_tag_to_step[tag] += 1 # else: # self.audio_tag_to_step[tag] = 0 # self.smw.add_audio(tag, snd_tensor, self.audio_tag_to_step[tag], sample_rate=44100, walltime=walltime) def add_text(self, tag, text_string, walltime=None): """Add text data to summary. Args: tag (string): Data identifier text_string (string): String to save walltime (float): Optional override default walltime (time.time()) of event """ with self.lock: if tag in self.text_tag_to_step: self.text_tag_to_step[tag] += 1 else: self.text_tag_to_step[tag] = 0 self.smw.add_text(tag, text_string, global_step=self.text_tag_to_step[tag], walltime=walltime) @staticmethod def getSummaryWriter(): """Get the writer from global namespace. Examples:: # main.py import global_1 import global_2 # global1.py from tensorboardX import GlobalSummaryWriter writer = GlobalSummaryWriter.getSummaryWriter() # This creates a new instance. writer.add_text('my_log', 'greeting from global1') # global2.py from tensorboardX import GlobalSummaryWriter writer = GlobalSummaryWriter.getSummaryWriter() # Get the instance in global1.py. writer.add_text('my_log', 'greeting from global2') """ global _writer if not hasattr(_writer, "smw") or _writer.smw is None: _writer = GlobalSummaryWriter() print("Using the global logger in:", _writer.smw.file_writer.get_logdir()) return _writer @property def file_writer(self): return self.smw._get_file_writer() def close(self): self.smw.flush() self.smw.close() ================================================ FILE: tensorboardX/onnx_graph.py ================================================ from .proto.attr_value_pb2 import AttrValue from .proto.graph_pb2 import GraphDef from .proto.node_def_pb2 import NodeDef from .proto.tensor_shape_pb2 import TensorShapeProto from .proto.versions_pb2 import VersionDef def load_onnx_graph(fname): import onnx m = onnx.load(fname) g = m.graph return parse(g) def parse(graph): nodes_proto = [] nodes = [] import itertools for node in itertools.chain(graph.input, graph.output): nodes_proto.append(node) for node in nodes_proto: print(node.name) shapeproto = TensorShapeProto( dim=[TensorShapeProto.Dim(size=d.dim_value) for d in node.type.tensor_type.shape.dim]) nodes.append(NodeDef( name=node.name.encode(encoding='utf_8'), op='Variable', input=[], attr={ 'dtype': AttrValue(type=node.type.tensor_type.elem_type), 'shape': AttrValue(shape=shapeproto), }) ) for node in graph.node: attr = [] for s in node.attribute: attr.append(' = '.join([str(f[1]) for f in s.ListFields()])) attr = ', '.join(attr).encode(encoding='utf_8') print(node.output[0]) nodes.append(NodeDef( name=node.output[0].encode(encoding='utf_8'), op=node.op_type, input=node.input, attr={'parameters': AttrValue(s=attr)}, )) # two pass token replacement, appends opname to object id mapping = {} for node in nodes: mapping[node.name] = node.op + '_' + node.name return GraphDef(node=nodes, versions=VersionDef(producer=22)) ================================================ FILE: tensorboardX/openvino_graph.py ================================================ from .proto.attr_value_pb2 import AttrValue from .proto.graph_pb2 import GraphDef from .proto.node_def_pb2 import NodeDef from .proto.tensor_shape_pb2 import TensorShapeProto from .proto.versions_pb2 import VersionDef def load_openvino_graph(fname): nodes = [] import xml.etree.ElementTree as ET tree = ET.parse(fname) root = tree.getroot() layers = root.find('layers') edges = root.find('edges') layers_dict = {} for layer in layers: nodeid = layer.attrib['id'] name = layer.attrib['name'] layers_dict[nodeid] = name for edge in edges: nodeinput = edge.attrib['from-layer'] nodeself = edge.attrib['to-layer'] attr = [] # for s in node.attribute: # attr.append(' = '.join([str(f[1]) for f in s.ListFields()])) attr = ', '.join(attr).encode(encoding='utf_8') nodes.append(NodeDef( name=layers_dict[nodeself], op='op', input=[str(layers_dict[nodeinput])], attr={'parameters': AttrValue(s=attr)}, )) return GraphDef(node=nodes, versions=VersionDef(producer=22)) ================================================ FILE: tensorboardX/proto/__init__.py ================================================ ================================================ FILE: tensorboardX/proto/api.proto ================================================ /* Copyright 2019 The TensorFlow Authors. All Rights Reserved. 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. ==============================================================================*/ // Defines a proto3-based REST API that the HParams web-component of the plugin // would use to read data from a hyperparameter-tuning experiment. // This file defines the message types (resources) used // to pass information into and out of the API methods. These messages will be // transmitted using proto3 native JSON encoding. See http_api.md for a // description of the actual HTTP API. // General note: in what follows we use the field 'name' of a message to // stores its id. We avoid calling this field 'id' since it is a reserved word // in Python, as well as to be more compliant with the API style guide // detailed in https://cloud.google.com/apis/design/. // IMPORTANT: If you change any of the messages here, make sure to also update // api.d.ts accordingly. syntax = "proto3"; import "google/protobuf/struct.proto"; package tensorboardX.hparam; // Represents a single experiment. // An experiment consists of multiple "sessions". Typically, in each session // a model is trained for a given set of hyperparameter values. In each session // a training program may generate one or more series of real numbers--each // containing the evaluation of some metric on the model at different training // steps. // // Note that Sessions can consist of multiple Tensorboard "runs", since in // a distributed Tensorflow deployment, training can be accomplished using // several cooporating processes, each one emitting Summary data to a different // log directory or run. For example, in a single session one process could // periodically compute the loss on the validation set, and another could // compute the loss on the training set. // NEXT_TAG: 7 message Experiment { // -- Experiments are scoped by a global name. // Currently, Tensorboard supports displaying data for a single experiment. string name = 6; // A description. May contain markdown. string description = 1; // An id for the owning user or group. string user = 2; // The time the experiment was created. In seconds since the UNIX epoch. double time_created_secs = 3; // Information about each hyperparameter used in the experiment. repeated HParamInfo hparam_infos = 4; // Information about each metric used in the experiment. repeated MetricInfo metric_infos = 5; } // NEXT_TAG: 7 message HParamInfo { // An id for the hyperparameter. string name = 1; // A string used to display the hyperparameter in the UI. If empty, the UI // will display the 'name' field. string display_name = 2; // A description. May contain markdown. string description = 3; // The data type of this hyperparameter. DataType type = 4; // Specifies the set of values this hyperparameter can hold. The UI assumes // every instance of this hyperparameter will hold a value from this set. It // is used by the UI to allow filtering so that only session groups (see // below) whose associated hyperparameter value "passes" the filter are // displayed. If this is not populated, the domain is assumed to be the // entire domain of the type of the hyperparameter. oneof domain { // A discrete set of the values this hyperparameter can hold. google.protobuf.ListValue domain_discrete = 5; // Numeric data type only. The (real) interval from which values of this // hyperparameter are taken. Interval domain_interval = 6; } } enum DataType { DATA_TYPE_UNSET = 0; DATA_TYPE_STRING = 1; DATA_TYPE_BOOL = 2; DATA_TYPE_FLOAT64 = 3; } // Represents the closed interval [min_value, max_value] of the real line. // NEXT_TAG: 3 message Interval { double min_value = 1; double max_value = 2; } // NEXT_TAG: 3 message MetricName { // An identifier for a metric. A metric is a real-valued function of the // model. The UI can plot metrics for a session evaluated on the model at // different training steps. // // We identify a metric by a (group, tag) pair of strings. The UI treats // both of these as opaque strings. The only requirement is that the pair // uniquely identifies a metric in the experiment. // // We use a pair so the UI could allow the user to group metrics for a // single session by either group or tag to be displayed in the same chart. // For instance, one can set the metric group to correspond to the dataset // on which the model was evaluated, and the UI can then display different // metrics describing the same underlying computation and using different // datasets, on the same chart. // // When exporting summaries from Tensorflow, in a typical setup, a // training session exports evaluations of metrics at different training steps // as Scalar-plugin summaries--each having a run of the form // "/", and some associated tag. The same // metric for different sessions would use the same sub_dir and tag, but // would have a different session_base_log_dir. For example, a session // computing two metrics: model loss on the validation set and model loss on // the training set, can export these as scalar summaries with the tag "loss" // and runs session_base_log_dir/validation and session_base_log_dir/training, // respectively. In this setup, the 'group' field can be populated with // the "sub_dir" associated with the metric, and the 'tag' field can be // populated with the tag: "loss". string group = 1; string tag = 2; } // NEXT_TAG: 6 message MetricInfo { MetricName name = 1; // A string used to display the metric in the UI. If empty, the UI // will display the 'name' field. string display_name = 3; // A description. May contain markdown. string description = 4; // The dataset type (validation, training) on which the metric is computed. DatasetType dataset_type = 5; } enum DatasetType { DATASET_UNKNOWN = 0; DATASET_TRAINING = 1; DATASET_VALIDATION = 2; } // In some experiments, the user trains a model with the same set of // hyperparameters multiple times to get the distribution of metric // evaluations, when the computation (such as the training algorithm, or metric // evaluation) is non-deterministic. To make the UI aware of this, sessions // are partitioned into groups: each group consists of all training sessions // which share the same values for the hyperparameters. In experiments with no // repeated executions, each group consists of exactly one session. // NEXT_TAG: 6 message SessionGroup { string name = 1; // Stores the hyperparameters for sessions within this group as a mapping // from the hyperparameter name to its value. map hparams = 2; // A list of pairs (metric, value)--one for each metric in the experiment. // The value denotes the evaluation of the corresponding metric on // the model aggregated across the sessions in this group. The exact method // of aggregation is specified in the comments of ListSessionGroupsRequest. // Unfortunately, we can't store these as a map, since proto maps can't have // message keys. repeated MetricValue metric_values = 3; // The sessions belonging to this group. repeated Session sessions = 4; // An optional link to a web page monitoring the session group. string monitor_url = 5; } // NEXT_TAG: 5 message MetricValue { MetricName name = 1; double value = 2; // The training step at which this value is computed. int32 training_step = 3; // The wall time in seconds since UNIX epoch at which this value is computed. double wall_time_secs = 4; } // NEXT_TAG: 8 message Session { // An id for the session. Unique within an experiment (not just the group). string name = 1; // In seconds since the UNIX epoch. double start_time_secs = 2; // In seconds since the UNIX epoch. // May be 0 if unavailable or the session has not finished yet. double end_time_secs = 3; // May be STATUS_UNKNOWN if unavailable. Status status = 4; // A URI for a resource that will allow the user to reconstruct the model for // this session. E.g., in Tensorflow this could point to a directory where the // checkpoints are stored. Currently, this is treated opaquely by the UI // and only displayed to the user as it is passed here. string model_uri = 5; // Stores each metric evaluation on the model at the current training step. // Unfortunately, we can't store these as a map, since proto maps can't have // message keys. repeated MetricValue metric_values = 6; // An optional link to a web page monitoring the session. string monitor_url = 7; } // Represents the status of a Session. enum Status { STATUS_UNKNOWN = 0; STATUS_SUCCESS = 1; STATUS_FAILURE = 2; STATUS_RUNNING = 3; } // Parameters for a GetExperiment API call. // Each experiment is scoped by a unique global id. // NEXT_TAG: 2 message GetExperimentRequest { // REQUIRED string experiment_name = 1; } // Parameters for a ListSessionGroups API call. // Computes a list of the current session groups allowing for filtering and // sorting by metrics and hyperparameter values. Returns a "slice" of // that list specified by start_index and slice_size. // NEXT_TAG: 8 message ListSessionGroupsRequest { string experiment_name = 6; // Filters the set of sessions (from which the session groups are formed) to // contain only these sessions whose status is contained in // 'allowed_statuses'. repeated Status allowed_statuses = 7; // A list of ColParams messages--one for each "column" of a session group. A // session group column contains either a metric evaluated at the current // reported computation step or a hyperparameter value. In addition to // 'regular' values, a column may take on a special 'missing-value' which // denotes that the hyperparameter or metric is not available // for the session group (for example, if the metric is not used in the // group). // // The ColParams messages in the repeated field below configure filtering and // sorting of the resulting collection of session groups. See the comments of // the fields in the ColParam message below for more details. repeated ColParams col_params = 1; // Fields controlling how to aggregate metrics across sessions within a // session group. // If aggregation_type is AGGREGATION_AVG, each metric value of the // session group is the average of the values of the metric across the // sessions. // Otherwise, the session group metric values are taken directly from a // "representative" session in the group, selected as a session for which // primary_metric takes on its minimum, maximum, or median value, as // specified by the choice of aggregation_type (for median, if the number of // sessions in the group is even, a session with a lower "middle" value is // chosen as the representative session). AggregationType aggregation_type = 2; // See comment for 'aggregation_type' above. MetricName aggregation_metric = 3; // The next two parameters determine the "slice" of the full list of // session groups--sorted and filtered by the parameters above--to return. // The 0-based index of the first session group to return. int32 start_index = 4; // The number of session groups to return starting at the session group // indexed by 'start_index'. The actual number of session groups returned // is min{slice_size, total_size - start_index}, where // total_size is the number of session groups in the full list // sorted and filtered by the parameters above (if start_index > total_size // no session groups are returned). int32 slice_size = 5; } // Defines parmeters for a ListSessionGroupsRequest for a specific column. // See the comment for "ListSessionGroupsRequest" above for more details. // NEXT_TAG: 9 message ColParams { oneof name { MetricName metric = 1; string hparam = 2; } // Sorting. // The final order of session groups in the response is defined by the sub // collection of ColParams messages (out of the // ListSessionGroupsRequest.col_params repeated field) whose 'order' field // (below) is not ORDER_UNSPECIFIED. In each of the messages in this // sub-collection, the next two fields specify the ordering of the values // and missing_values in the associated column of the session group. The // order of the ColParams messages themselves within the sub-collection // determines the "significance" of the associated column as a sorting key: // with the first being the primary sorting key, the second being the // secondary sorting key, etc. // Note: The 'session group name' is added as a least significant sorting // key to the keys defined by the user, so the order in the response is always // deterministic. SortOrder order = 3; // This field is ignored if order is ORDER_UNSPECIFIED. // Otherwise, if true, missing values are ordered before every other value in // the column; if false they are ordered after every other value in the // column. bool missing_values_first = 4; // Filtering. // The 'filter' oneof specifies a subset of the domain of the values a column // may take. Only session groups with each of their column values belonging // to this subset are included in the response. If this field is not // specified, the subset is taken to be the entire column domain. oneof filter { // Only valid for string-valued hyperparameter columns. The subset is // the set of all strings matching the regular expression stored // in 'regexp' as a partial match (use '^$' to have a full // match against regexp). string filter_regexp = 5; // Only valid for numeric-valued columns. The subset is the given interval. Interval filter_interval = 6; // Valid for all data types. The subset is defined explicitly. google.protobuf.ListValue filter_discrete = 7; } // Specifies whether to exclude session groups whose column value is missing // from the response. bool exclude_missing_values = 8; } enum SortOrder { ORDER_UNSPECIFIED = 0; ORDER_ASC = 1; ORDER_DESC = 2; } enum AggregationType { AGGREGATION_UNSET = 0; AGGREGATION_AVG = 1; AGGREGATION_MEDIAN = 2; AGGREGATION_MIN = 3; AGGREGATION_MAX = 4; } // See ListSessionGroups in http_api.md. // NEXT_TAG: 4 message ListSessionGroupsResponse { repeated SessionGroup session_groups = 1; // Denotes the total number of session groups in the full filtered list. // (Recall that this response may only be a slice). // It is used by the UI to calculate total number of pages and can be // set here to -1 to mean "unknown". int32 total_size = 3; } // See ListMetricEvalsRequest in http_api.md. // NEXT_TAG: 4 message ListMetricEvalsRequest { string experiment_name = 3; string session_name = 1; MetricName metric_name = 2; } ================================================ FILE: tensorboardX/proto/api_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/api.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ctensorboardX/proto/api.proto\x12\x13tensorboardX.hparam\x1a\x1cgoogle/protobuf/struct.proto\"\xc6\x01\n\nExperiment\x12\x0c\n\x04name\x18\x06 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12\x0c\n\x04user\x18\x02 \x01(\t\x12\x19\n\x11time_created_secs\x18\x03 \x01(\x01\x12\x35\n\x0chparam_infos\x18\x04 \x03(\x0b\x32\x1f.tensorboardX.hparam.HParamInfo\x12\x35\n\x0cmetric_infos\x18\x05 \x03(\x0b\x32\x1f.tensorboardX.hparam.MetricInfo\"\xed\x01\n\nHParamInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12+\n\x04type\x18\x04 \x01(\x0e\x32\x1d.tensorboardX.hparam.DataType\x12\x35\n\x0f\x64omain_discrete\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.ListValueH\x00\x12\x38\n\x0f\x64omain_interval\x18\x06 \x01(\x0b\x32\x1d.tensorboardX.hparam.IntervalH\x00\x42\x08\n\x06\x64omain\"0\n\x08Interval\x12\x11\n\tmin_value\x18\x01 \x01(\x01\x12\x11\n\tmax_value\x18\x02 \x01(\x01\"(\n\nMetricName\x12\r\n\x05group\x18\x01 \x01(\t\x12\x0b\n\x03tag\x18\x02 \x01(\t\"\x9e\x01\n\nMetricInfo\x12-\n\x04name\x18\x01 \x01(\x0b\x32\x1f.tensorboardX.hparam.MetricName\x12\x14\n\x0c\x64isplay_name\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\x36\n\x0c\x64\x61taset_type\x18\x05 \x01(\x0e\x32 .tensorboardX.hparam.DatasetType\"\xa3\x02\n\x0cSessionGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12?\n\x07hparams\x18\x02 \x03(\x0b\x32..tensorboardX.hparam.SessionGroup.HparamsEntry\x12\x37\n\rmetric_values\x18\x03 \x03(\x0b\x32 .tensorboardX.hparam.MetricValue\x12.\n\x08sessions\x18\x04 \x03(\x0b\x32\x1c.tensorboardX.hparam.Session\x12\x13\n\x0bmonitor_url\x18\x05 \x01(\t\x1a\x46\n\x0cHparamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\"z\n\x0bMetricValue\x12-\n\x04name\x18\x01 \x01(\x0b\x32\x1f.tensorboardX.hparam.MetricName\x12\r\n\x05value\x18\x02 \x01(\x01\x12\x15\n\rtraining_step\x18\x03 \x01(\x05\x12\x16\n\x0ewall_time_secs\x18\x04 \x01(\x01\"\xd5\x01\n\x07Session\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0fstart_time_secs\x18\x02 \x01(\x01\x12\x15\n\rend_time_secs\x18\x03 \x01(\x01\x12+\n\x06status\x18\x04 \x01(\x0e\x32\x1b.tensorboardX.hparam.Status\x12\x11\n\tmodel_uri\x18\x05 \x01(\t\x12\x37\n\rmetric_values\x18\x06 \x03(\x0b\x32 .tensorboardX.hparam.MetricValue\x12\x13\n\x0bmonitor_url\x18\x07 \x01(\t\"/\n\x14GetExperimentRequest\x12\x17\n\x0f\x65xperiment_name\x18\x01 \x01(\t\"\xc4\x02\n\x18ListSessionGroupsRequest\x12\x17\n\x0f\x65xperiment_name\x18\x06 \x01(\t\x12\x35\n\x10\x61llowed_statuses\x18\x07 \x03(\x0e\x32\x1b.tensorboardX.hparam.Status\x12\x32\n\ncol_params\x18\x01 \x03(\x0b\x32\x1e.tensorboardX.hparam.ColParams\x12>\n\x10\x61ggregation_type\x18\x02 \x01(\x0e\x32$.tensorboardX.hparam.AggregationType\x12;\n\x12\x61ggregation_metric\x18\x03 \x01(\x0b\x32\x1f.tensorboardX.hparam.MetricName\x12\x13\n\x0bstart_index\x18\x04 \x01(\x05\x12\x12\n\nslice_size\x18\x05 \x01(\x05\"\xd9\x02\n\tColParams\x12\x31\n\x06metric\x18\x01 \x01(\x0b\x32\x1f.tensorboardX.hparam.MetricNameH\x00\x12\x10\n\x06hparam\x18\x02 \x01(\tH\x00\x12-\n\x05order\x18\x03 \x01(\x0e\x32\x1e.tensorboardX.hparam.SortOrder\x12\x1c\n\x14missing_values_first\x18\x04 \x01(\x08\x12\x17\n\rfilter_regexp\x18\x05 \x01(\tH\x01\x12\x38\n\x0f\x66ilter_interval\x18\x06 \x01(\x0b\x32\x1d.tensorboardX.hparam.IntervalH\x01\x12\x35\n\x0f\x66ilter_discrete\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.ListValueH\x01\x12\x1e\n\x16\x65xclude_missing_values\x18\x08 \x01(\x08\x42\x06\n\x04nameB\x08\n\x06\x66ilter\"j\n\x19ListSessionGroupsResponse\x12\x39\n\x0esession_groups\x18\x01 \x03(\x0b\x32!.tensorboardX.hparam.SessionGroup\x12\x12\n\ntotal_size\x18\x03 \x01(\x05\"}\n\x16ListMetricEvalsRequest\x12\x17\n\x0f\x65xperiment_name\x18\x03 \x01(\t\x12\x14\n\x0csession_name\x18\x01 \x01(\t\x12\x34\n\x0bmetric_name\x18\x02 \x01(\x0b\x32\x1f.tensorboardX.hparam.MetricName*`\n\x08\x44\x61taType\x12\x13\n\x0f\x44\x41TA_TYPE_UNSET\x10\x00\x12\x14\n\x10\x44\x41TA_TYPE_STRING\x10\x01\x12\x12\n\x0e\x44\x41TA_TYPE_BOOL\x10\x02\x12\x15\n\x11\x44\x41TA_TYPE_FLOAT64\x10\x03*P\n\x0b\x44\x61tasetType\x12\x13\n\x0f\x44\x41TASET_UNKNOWN\x10\x00\x12\x14\n\x10\x44\x41TASET_TRAINING\x10\x01\x12\x16\n\x12\x44\x41TASET_VALIDATION\x10\x02*X\n\x06Status\x12\x12\n\x0eSTATUS_UNKNOWN\x10\x00\x12\x12\n\x0eSTATUS_SUCCESS\x10\x01\x12\x12\n\x0eSTATUS_FAILURE\x10\x02\x12\x12\n\x0eSTATUS_RUNNING\x10\x03*A\n\tSortOrder\x12\x15\n\x11ORDER_UNSPECIFIED\x10\x00\x12\r\n\tORDER_ASC\x10\x01\x12\x0e\n\nORDER_DESC\x10\x02*\x7f\n\x0f\x41ggregationType\x12\x15\n\x11\x41GGREGATION_UNSET\x10\x00\x12\x13\n\x0f\x41GGREGATION_AVG\x10\x01\x12\x16\n\x12\x41GGREGATION_MEDIAN\x10\x02\x12\x13\n\x0f\x41GGREGATION_MIN\x10\x03\x12\x13\n\x0f\x41GGREGATION_MAX\x10\x04\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.api_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _SESSIONGROUP_HPARAMSENTRY._options = None _SESSIONGROUP_HPARAMSENTRY._serialized_options = b'8\001' _globals['_DATATYPE']._serialized_start=2370 _globals['_DATATYPE']._serialized_end=2466 _globals['_DATASETTYPE']._serialized_start=2468 _globals['_DATASETTYPE']._serialized_end=2548 _globals['_STATUS']._serialized_start=2550 _globals['_STATUS']._serialized_end=2638 _globals['_SORTORDER']._serialized_start=2640 _globals['_SORTORDER']._serialized_end=2705 _globals['_AGGREGATIONTYPE']._serialized_start=2707 _globals['_AGGREGATIONTYPE']._serialized_end=2834 _globals['_EXPERIMENT']._serialized_start=84 _globals['_EXPERIMENT']._serialized_end=282 _globals['_HPARAMINFO']._serialized_start=285 _globals['_HPARAMINFO']._serialized_end=522 _globals['_INTERVAL']._serialized_start=524 _globals['_INTERVAL']._serialized_end=572 _globals['_METRICNAME']._serialized_start=574 _globals['_METRICNAME']._serialized_end=614 _globals['_METRICINFO']._serialized_start=617 _globals['_METRICINFO']._serialized_end=775 _globals['_SESSIONGROUP']._serialized_start=778 _globals['_SESSIONGROUP']._serialized_end=1069 _globals['_SESSIONGROUP_HPARAMSENTRY']._serialized_start=999 _globals['_SESSIONGROUP_HPARAMSENTRY']._serialized_end=1069 _globals['_METRICVALUE']._serialized_start=1071 _globals['_METRICVALUE']._serialized_end=1193 _globals['_SESSION']._serialized_start=1196 _globals['_SESSION']._serialized_end=1409 _globals['_GETEXPERIMENTREQUEST']._serialized_start=1411 _globals['_GETEXPERIMENTREQUEST']._serialized_end=1458 _globals['_LISTSESSIONGROUPSREQUEST']._serialized_start=1461 _globals['_LISTSESSIONGROUPSREQUEST']._serialized_end=1785 _globals['_COLPARAMS']._serialized_start=1788 _globals['_COLPARAMS']._serialized_end=2133 _globals['_LISTSESSIONGROUPSRESPONSE']._serialized_start=2135 _globals['_LISTSESSIONGROUPSRESPONSE']._serialized_end=2241 _globals['_LISTMETRICEVALSREQUEST']._serialized_start=2243 _globals['_LISTMETRICEVALSREQUEST']._serialized_end=2368 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/attr_value.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "AttrValueProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; import "tensorboardX/proto/tensor.proto"; import "tensorboardX/proto/tensor_shape.proto"; import "tensorboardX/proto/types.proto"; // Protocol buffer representing the value for an attr used to configure an Op. // Comment indicates the corresponding attr type. Only the field matching the // attr type may be filled. message AttrValue { // LINT.IfChange message ListValue { repeated bytes s = 2; // "list(string)" repeated int64 i = 3 [packed = true]; // "list(int)" repeated float f = 4 [packed = true]; // "list(float)" repeated bool b = 5 [packed = true]; // "list(bool)" repeated DataType type = 6 [packed = true]; // "list(type)" repeated TensorShapeProto shape = 7; // "list(shape)" repeated TensorProto tensor = 8; // "list(tensor)" repeated NameAttrList func = 9; // "list(attr)" } // LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.cc) oneof value { bytes s = 2; // "string" int64 i = 3; // "int" float f = 4; // "float" bool b = 5; // "bool" DataType type = 6; // "type" TensorShapeProto shape = 7; // "shape" TensorProto tensor = 8; // "tensor" ListValue list = 1; // any "list(...)" // "func" represents a function. func.name is a function's name or // a primitive op's name. func.attr.first is the name of an attr // defined for that function. func.attr.second is the value for // that attr in the instantiation. NameAttrList func = 10; // This is a placeholder only used in nodes defined inside a // function. It indicates the attr value will be supplied when // the function is instantiated. For example, let us suppose a // node "N" in function "FN". "N" has an attr "A" with value // placeholder = "foo". When FN is instantiated with attr "foo" // set to "bar", the instantiated node N's attr A will have been // given the value "bar". string placeholder = 9; } } // A list of attr names and their values. The whole list is attached // with a string name. E.g., MatMul[T=float]. message NameAttrList { string name = 1; map attr = 2; } ================================================ FILE: tensorboardX/proto/attr_value_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/attr_value.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import tensor_pb2 as tensorboardX_dot_proto_dot_tensor__pb2 from tensorboardX.proto import tensor_shape_pb2 as tensorboardX_dot_proto_dot_tensor__shape__pb2 from tensorboardX.proto import types_pb2 as tensorboardX_dot_proto_dot_types__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n#tensorboardX/proto/attr_value.proto\x12\x0ctensorboardX\x1a\x1ftensorboardX/proto/tensor.proto\x1a%tensorboardX/proto/tensor_shape.proto\x1a\x1etensorboardX/proto/types.proto\"\xb8\x04\n\tAttrValue\x12\x0b\n\x01s\x18\x02 \x01(\x0cH\x00\x12\x0b\n\x01i\x18\x03 \x01(\x03H\x00\x12\x0b\n\x01\x66\x18\x04 \x01(\x02H\x00\x12\x0b\n\x01\x62\x18\x05 \x01(\x08H\x00\x12&\n\x04type\x18\x06 \x01(\x0e\x32\x16.tensorboardX.DataTypeH\x00\x12/\n\x05shape\x18\x07 \x01(\x0b\x32\x1e.tensorboardX.TensorShapeProtoH\x00\x12+\n\x06tensor\x18\x08 \x01(\x0b\x32\x19.tensorboardX.TensorProtoH\x00\x12\x31\n\x04list\x18\x01 \x01(\x0b\x32!.tensorboardX.AttrValue.ListValueH\x00\x12*\n\x04\x66unc\x18\n \x01(\x0b\x32\x1a.tensorboardX.NameAttrListH\x00\x12\x15\n\x0bplaceholder\x18\t \x01(\tH\x00\x1a\xf1\x01\n\tListValue\x12\t\n\x01s\x18\x02 \x03(\x0c\x12\r\n\x01i\x18\x03 \x03(\x03\x42\x02\x10\x01\x12\r\n\x01\x66\x18\x04 \x03(\x02\x42\x02\x10\x01\x12\r\n\x01\x62\x18\x05 \x03(\x08\x42\x02\x10\x01\x12(\n\x04type\x18\x06 \x03(\x0e\x32\x16.tensorboardX.DataTypeB\x02\x10\x01\x12-\n\x05shape\x18\x07 \x03(\x0b\x32\x1e.tensorboardX.TensorShapeProto\x12)\n\x06tensor\x18\x08 \x03(\x0b\x32\x19.tensorboardX.TensorProto\x12(\n\x04\x66unc\x18\t \x03(\x0b\x32\x1a.tensorboardX.NameAttrListB\x07\n\x05value\"\x96\x01\n\x0cNameAttrList\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x32\n\x04\x61ttr\x18\x02 \x03(\x0b\x32$.tensorboardX.NameAttrList.AttrEntry\x1a\x44\n\tAttrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tensorboardX.AttrValue:\x02\x38\x01\x42\x30\n\x18org.tensorflow.frameworkB\x0f\x41ttrValueProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.attr_value_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\017AttrValueProtosP\001\370\001\001' _ATTRVALUE_LISTVALUE.fields_by_name['i']._options = None _ATTRVALUE_LISTVALUE.fields_by_name['i']._serialized_options = b'\020\001' _ATTRVALUE_LISTVALUE.fields_by_name['f']._options = None _ATTRVALUE_LISTVALUE.fields_by_name['f']._serialized_options = b'\020\001' _ATTRVALUE_LISTVALUE.fields_by_name['b']._options = None _ATTRVALUE_LISTVALUE.fields_by_name['b']._serialized_options = b'\020\001' _ATTRVALUE_LISTVALUE.fields_by_name['type']._options = None _ATTRVALUE_LISTVALUE.fields_by_name['type']._serialized_options = b'\020\001' _NAMEATTRLIST_ATTRENTRY._options = None _NAMEATTRLIST_ATTRENTRY._serialized_options = b'8\001' _globals['_ATTRVALUE']._serialized_start=158 _globals['_ATTRVALUE']._serialized_end=726 _globals['_ATTRVALUE_LISTVALUE']._serialized_start=476 _globals['_ATTRVALUE_LISTVALUE']._serialized_end=717 _globals['_NAMEATTRLIST']._serialized_start=729 _globals['_NAMEATTRLIST']._serialized_end=879 _globals['_NAMEATTRLIST_ATTRENTRY']._serialized_start=811 _globals['_NAMEATTRLIST_ATTRENTRY']._serialized_end=879 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/event.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "EventProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.util"; import "tensorboardX/proto/summary.proto"; // Protocol buffer representing an event that happened during // the execution of a Brain model. message Event { // Timestamp of the event. double wall_time = 1; // Global step of the event. int64 step = 2; oneof what { // An event file was started, with the specified version. // This is use to identify the contents of the record IO files // easily. Current version is "brain.Event:2". All versions // start with "brain.Event:". string file_version = 3; // An encoded version of a GraphDef. bytes graph_def = 4; // A summary was generated. Summary summary = 5; // The user output a log message. Not all messages are logged, only ones // generated via the Python tensorboard_logging module. LogMessage log_message = 6; // The state of the session which can be used for restarting after crashes. SessionLog session_log = 7; // The metadata returned by running a session.run() call. TaggedRunMetadata tagged_run_metadata = 8; // An encoded version of a MetaGraphDef. bytes meta_graph_def = 9; } } // Protocol buffer used for logging messages to the events file. message LogMessage { enum Level { UNKNOWN = 0; DEBUG = 10; INFO = 20; WARN = 30; ERROR = 40; FATAL = 50; } Level level = 1; string message = 2; } // Protocol buffer used for logging session state. message SessionLog { enum SessionStatus { STATUS_UNSPECIFIED = 0; START = 1; STOP = 2; CHECKPOINT = 3; } SessionStatus status = 1; // This checkpoint_path contains both the path and filename. string checkpoint_path = 2; string msg = 3; } // For logging the metadata output for a single session.run() call. message TaggedRunMetadata { // Tag name associated with this metadata. string tag = 1; // Byte-encoded version of the `RunMetadata` proto in order to allow lazy // deserialization. bytes run_metadata = 2; } ================================================ FILE: tensorboardX/proto/event_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/event.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import summary_pb2 as tensorboardX_dot_proto_dot_summary__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1etensorboardX/proto/event.proto\x12\x0ctensorboardX\x1a tensorboardX/proto/summary.proto\"\xc3\x02\n\x05\x45vent\x12\x11\n\twall_time\x18\x01 \x01(\x01\x12\x0c\n\x04step\x18\x02 \x01(\x03\x12\x16\n\x0c\x66ile_version\x18\x03 \x01(\tH\x00\x12\x13\n\tgraph_def\x18\x04 \x01(\x0cH\x00\x12(\n\x07summary\x18\x05 \x01(\x0b\x32\x15.tensorboardX.SummaryH\x00\x12/\n\x0blog_message\x18\x06 \x01(\x0b\x32\x18.tensorboardX.LogMessageH\x00\x12/\n\x0bsession_log\x18\x07 \x01(\x0b\x32\x18.tensorboardX.SessionLogH\x00\x12>\n\x13tagged_run_metadata\x18\x08 \x01(\x0b\x32\x1f.tensorboardX.TaggedRunMetadataH\x00\x12\x18\n\x0emeta_graph_def\x18\t \x01(\x0cH\x00\x42\x06\n\x04what\"\x97\x01\n\nLogMessage\x12-\n\x05level\x18\x01 \x01(\x0e\x32\x1e.tensorboardX.LogMessage.Level\x12\x0f\n\x07message\x18\x02 \x01(\t\"I\n\x05Level\x12\x0b\n\x07UNKNOWN\x10\x00\x12\t\n\x05\x44\x45\x42UG\x10\n\x12\x08\n\x04INFO\x10\x14\x12\x08\n\x04WARN\x10\x1e\x12\t\n\x05\x45RROR\x10(\x12\t\n\x05\x46\x41TAL\x10\x32\"\xb8\x01\n\nSessionLog\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32&.tensorboardX.SessionLog.SessionStatus\x12\x17\n\x0f\x63heckpoint_path\x18\x02 \x01(\t\x12\x0b\n\x03msg\x18\x03 \x01(\t\"L\n\rSessionStatus\x12\x16\n\x12STATUS_UNSPECIFIED\x10\x00\x12\t\n\x05START\x10\x01\x12\x08\n\x04STOP\x10\x02\x12\x0e\n\nCHECKPOINT\x10\x03\"6\n\x11TaggedRunMetadata\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12\x14\n\x0crun_metadata\x18\x02 \x01(\x0c\x42\'\n\x13org.tensorflow.utilB\x0b\x45ventProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.event_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\023org.tensorflow.utilB\013EventProtosP\001\370\001\001' _globals['_EVENT']._serialized_start=83 _globals['_EVENT']._serialized_end=406 _globals['_LOGMESSAGE']._serialized_start=409 _globals['_LOGMESSAGE']._serialized_end=560 _globals['_LOGMESSAGE_LEVEL']._serialized_start=487 _globals['_LOGMESSAGE_LEVEL']._serialized_end=560 _globals['_SESSIONLOG']._serialized_start=563 _globals['_SESSIONLOG']._serialized_end=747 _globals['_SESSIONLOG_SESSIONSTATUS']._serialized_start=671 _globals['_SESSIONLOG_SESSIONSTATUS']._serialized_end=747 _globals['_TAGGEDRUNMETADATA']._serialized_start=749 _globals['_TAGGEDRUNMETADATA']._serialized_end=803 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/graph.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "GraphProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; import "tensorboardX/proto/node_def.proto"; //import "tensorflow/core/framework/function.proto"; import "tensorboardX/proto/versions.proto"; // Represents the graph of operations message GraphDef { repeated NodeDef node = 1; // Compatibility versions of the graph. See core/public/version.h for version // history. The GraphDef version is distinct from the TensorFlow version, and // each release of TensorFlow will support a range of GraphDef versions. VersionDef versions = 4; // Deprecated single version field; use versions above instead. Since all // GraphDef changes before "versions" was introduced were forward // compatible, this field is entirely ignored. int32 version = 3 [deprecated = true]; // EXPERIMENTAL. DO NOT USE OR DEPEND ON THIS YET. // // "library" provides user-defined functions. // // Naming: // * library.function.name are in a flat namespace. // NOTE: We may need to change it to be hierarchical to support // different orgs. E.g., // { "/google/nn", { ... }}, // { "/google/vision", { ... }} // { "/org_foo/module_bar", { ... }} // map named_lib; // * If node[i].op is the name of one function in "library", // node[i] is deemed as a function call. Otherwise, node[i].op // must be a primitive operation supported by the runtime. // // // Function call semantics: // // * The callee may start execution as soon as some of its inputs // are ready. The caller may want to use Tuple() mechanism to // ensure all inputs are ready in the same time. // // * The consumer of return values may start executing as soon as // the return values the consumer depends on are ready. The // consumer may want to use Tuple() mechanism to ensure the // consumer does not start until all return values of the callee // function are ready. //FunctionDefLibrary library = 2; }; ================================================ FILE: tensorboardX/proto/graph_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/graph.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import node_def_pb2 as tensorboardX_dot_proto_dot_node__def__pb2 from tensorboardX.proto import versions_pb2 as tensorboardX_dot_proto_dot_versions__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1etensorboardX/proto/graph.proto\x12\x0ctensorboardX\x1a!tensorboardX/proto/node_def.proto\x1a!tensorboardX/proto/versions.proto\"p\n\x08GraphDef\x12#\n\x04node\x18\x01 \x03(\x0b\x32\x15.tensorboardX.NodeDef\x12*\n\x08versions\x18\x04 \x01(\x0b\x32\x18.tensorboardX.VersionDef\x12\x13\n\x07version\x18\x03 \x01(\x05\x42\x02\x18\x01\x42,\n\x18org.tensorflow.frameworkB\x0bGraphProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.graph_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\013GraphProtosP\001\370\001\001' _GRAPHDEF.fields_by_name['version']._options = None _GRAPHDEF.fields_by_name['version']._serialized_options = b'\030\001' _globals['_GRAPHDEF']._serialized_start=118 _globals['_GRAPHDEF']._serialized_end=230 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/layout.proto ================================================ /* Copyright 2017 The TensorFlow Authors. All Rights Reserved. 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. ==============================================================================*/ syntax = "proto3"; package tensorboardX; /** * Encapsulates information on a single chart. Many charts appear in a category. */ message Chart { // The title shown atop this chart. Optional. Defaults to 'untitled'. string title = 1; // The content of the chart. This depends on the type of the chart. oneof content { MultilineChartContent multiline = 2; MarginChartContent margin = 3; } } /** * Encapsulates information on a single line chart. This line chart may have * lines associated with several tags. */ message MultilineChartContent { // A list of regular expressions for tags that should appear in this chart. // Tags are matched from beginning to end. Each regex captures a set of tags. repeated string tag = 1; } /** * Encapsulates information on a single margin chart. A margin chart uses fill * area to visualize lower and upper bounds that surround a value. */ message MarginChartContent { /** * Encapsulates a tag of data for the chart. */ message Series { // The exact tag string associated with the scalar summaries making up the // main value between the bounds. string value = 1; // The exact tag string associated with the scalar summaries making up the // lower bound. string lower = 2; // The exact tag string associated with the scalar summaries making up the // upper bound. string upper = 3; } // A list of data series to include within this margin chart. repeated Series series = 1; } /** * A category contains a group of charts. Each category maps to a collapsible * within the dashboard. */ message Category { // This string appears atop each grouping of charts within the dashboard. string title = 1; // Encapsulates data on charts to be shown in the category. repeated Chart chart = 2; // Whether this category should be initially closed. False by default. bool closed = 3; } /** * A layout encapsulates how charts are laid out within the custom scalars * dashboard. */ message Layout { // Version `0` is the only supported version. int32 version = 1; // The categories here are rendered from top to bottom. repeated Category category = 2; } ================================================ FILE: tensorboardX/proto/layout_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/layout.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ftensorboardX/proto/layout.proto\x12\x0ctensorboardX\"\x8f\x01\n\x05\x43hart\x12\r\n\x05title\x18\x01 \x01(\t\x12\x38\n\tmultiline\x18\x02 \x01(\x0b\x32#.tensorboardX.MultilineChartContentH\x00\x12\x32\n\x06margin\x18\x03 \x01(\x0b\x32 .tensorboardX.MarginChartContentH\x00\x42\t\n\x07\x63ontent\"$\n\x15MultilineChartContent\x12\x0b\n\x03tag\x18\x01 \x03(\t\"\x84\x01\n\x12MarginChartContent\x12\x37\n\x06series\x18\x01 \x03(\x0b\x32\'.tensorboardX.MarginChartContent.Series\x1a\x35\n\x06Series\x12\r\n\x05value\x18\x01 \x01(\t\x12\r\n\x05lower\x18\x02 \x01(\t\x12\r\n\x05upper\x18\x03 \x01(\t\"M\n\x08\x43\x61tegory\x12\r\n\x05title\x18\x01 \x01(\t\x12\"\n\x05\x63hart\x18\x02 \x03(\x0b\x32\x13.tensorboardX.Chart\x12\x0e\n\x06\x63losed\x18\x03 \x01(\x08\"C\n\x06Layout\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12(\n\x08\x63\x61tegory\x18\x02 \x03(\x0b\x32\x16.tensorboardX.Categoryb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.layout_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _globals['_CHART']._serialized_start=50 _globals['_CHART']._serialized_end=193 _globals['_MULTILINECHARTCONTENT']._serialized_start=195 _globals['_MULTILINECHARTCONTENT']._serialized_end=231 _globals['_MARGINCHARTCONTENT']._serialized_start=234 _globals['_MARGINCHARTCONTENT']._serialized_end=366 _globals['_MARGINCHARTCONTENT_SERIES']._serialized_start=313 _globals['_MARGINCHARTCONTENT_SERIES']._serialized_end=366 _globals['_CATEGORY']._serialized_start=368 _globals['_CATEGORY']._serialized_end=445 _globals['_LAYOUT']._serialized_start=447 _globals['_LAYOUT']._serialized_end=514 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/node_def.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "NodeProto"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; import "tensorboardX/proto/attr_value.proto"; message NodeDef { // The name given to this operator. Used for naming inputs, // logging, visualization, etc. Unique within a single GraphDef. // Must match the regexp "[A-Za-z0-9.][A-Za-z0-9_./]*". string name = 1; // The operation name. There may be custom parameters in attrs. // Op names starting with an underscore are reserved for internal use. string op = 2; // Each input is "node:src_output" with "node" being a string name and // "src_output" indicating which output tensor to use from "node". If // "src_output" is 0 the ":0" suffix can be omitted. Regular inputs // may optionally be followed by control inputs that have the format // "^node". repeated string input = 3; // A (possibly partial) specification for the device on which this // node should be placed. // The expected syntax for this string is as follows: // // DEVICE_SPEC ::= PARTIAL_SPEC // // PARTIAL_SPEC ::= ("/" CONSTRAINT) * // CONSTRAINT ::= ("job:" JOB_NAME) // | ("replica:" [1-9][0-9]*) // | ("task:" [1-9][0-9]*) // | ( ("gpu" | "cpu") ":" ([1-9][0-9]* | "*") ) // // Valid values for this string include: // * "/job:worker/replica:0/task:1/gpu:3" (full specification) // * "/job:worker/gpu:3" (partial specification) // * "" (no specification) // // If the constraints do not resolve to a single device (or if this // field is empty or not present), the runtime will attempt to // choose a device automatically. string device = 4; // Operation-specific graph-construction-time configuration. // Note that this should include all attrs defined in the // corresponding OpDef, including those with a value matching // the default -- this allows the default to change and makes // NodeDefs easier to interpret on their own. However, if // an attr with a default is not specified in this list, the // default will be used. // The "names" (keys) must match the regexp "[a-z][a-z0-9_]+" (and // one of the names from the corresponding OpDef's attr field). // The values must have a type matching the corresponding OpDef // attr's type field. // TODO(josh11b): Add some examples here showing best practices. map attr = 5; }; ================================================ FILE: tensorboardX/proto/node_def_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/node_def.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import attr_value_pb2 as tensorboardX_dot_proto_dot_attr__value__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!tensorboardX/proto/node_def.proto\x12\x0ctensorboardX\x1a#tensorboardX/proto/attr_value.proto\"\xb7\x01\n\x07NodeDef\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\n\n\x02op\x18\x02 \x01(\t\x12\r\n\x05input\x18\x03 \x03(\t\x12\x0e\n\x06\x64\x65vice\x18\x04 \x01(\t\x12-\n\x04\x61ttr\x18\x05 \x03(\x0b\x32\x1f.tensorboardX.NodeDef.AttrEntry\x1a\x44\n\tAttrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.tensorboardX.AttrValue:\x02\x38\x01\x42*\n\x18org.tensorflow.frameworkB\tNodeProtoP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.node_def_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\tNodeProtoP\001\370\001\001' _NODEDEF_ATTRENTRY._options = None _NODEDEF_ATTRENTRY._serialized_options = b'8\001' _globals['_NODEDEF']._serialized_start=89 _globals['_NODEDEF']._serialized_end=272 _globals['_NODEDEF_ATTRENTRY']._serialized_start=204 _globals['_NODEDEF_ATTRENTRY']._serialized_end=272 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/plugin_hparams.proto ================================================ /* Copyright 2019 The TensorFlow Authors. All Rights Reserved. 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. ==============================================================================*/ // Defines protos for storing a hypertuning experiment data inside Summary tags. // // A hypertuning-experiment data consists of metadata that's constant // throughout the experiment and evolving metric data for each training session // in the experiment. The HParams plugin assumes the following organization of // this entire data set. Experiment metadata is recorded in the empty run in a // tag (named by the Python constant) metadata.EXPERIMENT_TAG. Within the // experiment, for a session named by its metadata is recorded // in the run in the tags metadata.SESSION_START_INFO and // metadata.SESSION_END_INFO. Finally, the session's metric data for a metric // with a (, ) name (see MetricName in api.proto), is recorded // in a Scalar-plugin summary with tag in the run . syntax = "proto3"; import "tensorboardX/proto/api.proto"; import "google/protobuf/struct.proto"; package tensorboardX.hparam; // HParam summaries created by `tensorboard.plugins.hparams.summary` // module will include `SummaryMetadata` whose `plugin_data` field has // as `content` a serialized HParamsPluginData message. message HParamsPluginData { // The version of the plugin data schema. int32 version = 1; oneof data { Experiment experiment = 2; SessionStartInfo session_start_info = 3; SessionEndInfo session_end_info = 4; } } message SessionStartInfo { // A map describing the hyperparameter values for the session. // Maps each hyperparameter name to its value. // Currently only scalars are supported. map hparams = 1; // A URI for where checkpoints are saved. string model_uri = 2; // An optional URL to a website monitoring the session. string monitor_url = 3; // The name of the session group containing this session. If empty, the // group name is taken to be the session id (so this session is the only // member of its group). string group_name = 4; // The time the session started in seconds since epoch. double start_time_secs = 5; } message SessionEndInfo { Status status = 1; // The time the session ended in seconds since epoch. double end_time_secs = 2; } ================================================ FILE: tensorboardX/proto/plugin_hparams_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/plugin_hparams.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import api_pb2 as tensorboardX_dot_proto_dot_api__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'tensorboardX/proto/plugin_hparams.proto\x12\x13tensorboardX.hparam\x1a\x1ctensorboardX/proto/api.proto\x1a\x1cgoogle/protobuf/struct.proto\"\xe9\x01\n\x11HParamsPluginData\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x35\n\nexperiment\x18\x02 \x01(\x0b\x32\x1f.tensorboardX.hparam.ExperimentH\x00\x12\x43\n\x12session_start_info\x18\x03 \x01(\x0b\x32%.tensorboardX.hparam.SessionStartInfoH\x00\x12?\n\x10session_end_info\x18\x04 \x01(\x0b\x32#.tensorboardX.hparam.SessionEndInfoH\x00\x42\x06\n\x04\x64\x61ta\"\xf4\x01\n\x10SessionStartInfo\x12\x43\n\x07hparams\x18\x01 \x03(\x0b\x32\x32.tensorboardX.hparam.SessionStartInfo.HparamsEntry\x12\x11\n\tmodel_uri\x18\x02 \x01(\t\x12\x13\n\x0bmonitor_url\x18\x03 \x01(\t\x12\x12\n\ngroup_name\x18\x04 \x01(\t\x12\x17\n\x0fstart_time_secs\x18\x05 \x01(\x01\x1a\x46\n\x0cHparamsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\"T\n\x0eSessionEndInfo\x12+\n\x06status\x18\x01 \x01(\x0e\x32\x1b.tensorboardX.hparam.Status\x12\x15\n\rend_time_secs\x18\x02 \x01(\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.plugin_hparams_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _SESSIONSTARTINFO_HPARAMSENTRY._options = None _SESSIONSTARTINFO_HPARAMSENTRY._serialized_options = b'8\001' _globals['_HPARAMSPLUGINDATA']._serialized_start=125 _globals['_HPARAMSPLUGINDATA']._serialized_end=358 _globals['_SESSIONSTARTINFO']._serialized_start=361 _globals['_SESSIONSTARTINFO']._serialized_end=605 _globals['_SESSIONSTARTINFO_HPARAMSENTRY']._serialized_start=535 _globals['_SESSIONSTARTINFO_HPARAMSENTRY']._serialized_end=605 _globals['_SESSIONENDINFO']._serialized_start=607 _globals['_SESSIONENDINFO']._serialized_end=691 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/plugin_mesh.proto ================================================ syntax = "proto3"; package tensorboardX.mesh; // A MeshPluginData encapsulates information on which plugins are able to make // use of a certain summary value. message MeshPluginData { enum ContentType { UNDEFINED = 0; VERTEX = 1; FACE = 2; // Triangle face. COLOR = 3; } // Version `0` is the only supported version. int32 version = 1; // The name of the mesh summary this particular summary belongs to. string name = 2; // Type of data in the summary. ContentType content_type = 3; // JSON-serialized dictionary of ThreeJS classes configuration. string json_config = 5; // Shape of underlying data. Cache it here for performance reasons. repeated int32 shape = 6; } ================================================ FILE: tensorboardX/proto/plugin_mesh_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/plugin_mesh.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$tensorboardX/proto/plugin_mesh.proto\x12\x11tensorboardX.mesh\"\xd7\x01\n\x0eMeshPluginData\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x43\n\x0c\x63ontent_type\x18\x03 \x01(\x0e\x32-.tensorboardX.mesh.MeshPluginData.ContentType\x12\x13\n\x0bjson_config\x18\x05 \x01(\t\x12\r\n\x05shape\x18\x06 \x03(\x05\"=\n\x0b\x43ontentType\x12\r\n\tUNDEFINED\x10\x00\x12\n\n\x06VERTEX\x10\x01\x12\x08\n\x04\x46\x41\x43\x45\x10\x02\x12\t\n\x05\x43OLOR\x10\x03\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.plugin_mesh_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _globals['_MESHPLUGINDATA']._serialized_start=60 _globals['_MESHPLUGINDATA']._serialized_end=275 _globals['_MESHPLUGINDATA_CONTENTTYPE']._serialized_start=214 _globals['_MESHPLUGINDATA_CONTENTTYPE']._serialized_end=275 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/plugin_pr_curve.proto ================================================ /* Copyright 2017 The TensorFlow Authors. All Rights Reserved. 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. ==============================================================================*/ syntax = "proto3"; package tensorboardX; message PrCurvePluginData { // Version `0` is the only supported version. int32 version = 1; uint32 num_thresholds = 2; } ================================================ FILE: tensorboardX/proto/plugin_pr_curve_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/plugin_pr_curve.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(tensorboardX/proto/plugin_pr_curve.proto\x12\x0ctensorboardX\"<\n\x11PrCurvePluginData\x12\x0f\n\x07version\x18\x01 \x01(\x05\x12\x16\n\x0enum_thresholds\x18\x02 \x01(\rb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.plugin_pr_curve_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _globals['_PRCURVEPLUGINDATA']._serialized_start=58 _globals['_PRCURVEPLUGINDATA']._serialized_end=118 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/plugin_text.proto ================================================ /* Copyright 2017 The TensorFlow Authors. All Rights Reserved. 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. ==============================================================================*/ syntax = "proto3"; package tensorboardX; // Text summaries created by the `tensorboard.plugins.text.summary` // module will include `SummaryMetadata` whose `plugin_data` field has // as `content` a binary string that is the encoding of an // `TextPluginData` proto. message TextPluginData { // Version `0` is the only supported version. int32 version = 1; } ================================================ FILE: tensorboardX/proto/plugin_text_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/plugin_text.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$tensorboardX/proto/plugin_text.proto\x12\x0ctensorboardX\"!\n\x0eTextPluginData\x12\x0f\n\x07version\x18\x01 \x01(\x05\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.plugin_text_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None _globals['_TEXTPLUGINDATA']._serialized_start=54 _globals['_TEXTPLUGINDATA']._serialized_end=87 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/resource_handle.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "ResourceHandle"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; // Protocol buffer representing a handle to a tensorflow resource. Handles are // not valid across executions, but can be serialized back and forth from within // a single run. message ResourceHandleProto { // Unique name for the device containing the resource. string device = 1; // Container in which this resource is placed. string container = 2; // Unique name of this resource. string name = 3; // Hash code for the type of the resource. Is only valid in the same device // and in the same execution. uint64 hash_code = 4; // For debug-only, the name of the type pointed to by this handle, if // available. string maybe_type_name = 5; }; ================================================ FILE: tensorboardX/proto/resource_handle_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/resource_handle.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(tensorboardX/proto/resource_handle.proto\x12\x0ctensorboardX\"r\n\x13ResourceHandleProto\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tcontainer\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x11\n\thash_code\x18\x04 \x01(\x04\x12\x17\n\x0fmaybe_type_name\x18\x05 \x01(\tB/\n\x18org.tensorflow.frameworkB\x0eResourceHandleP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.resource_handle_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\016ResourceHandleP\001\370\001\001' _globals['_RESOURCEHANDLEPROTO']._serialized_start=58 _globals['_RESOURCEHANDLEPROTO']._serialized_end=172 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/summary.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "SummaryProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; import "tensorboardX/proto/tensor.proto"; // Metadata associated with a series of Summary data message SummaryDescription { // Hint on how plugins should process the data in this series. // Supported values include "scalar", "histogram", "image", "audio" string type_hint = 1; } // Serialization format for histogram module in // core/lib/histogram/histogram.h message HistogramProto { double min = 1; double max = 2; double num = 3; double sum = 4; double sum_squares = 5; // Parallel arrays encoding the bucket boundaries and the bucket values. // bucket(i) is the count for the bucket i. The range for // a bucket is: // i == 0: -DBL_MAX .. bucket_limit(0) // i != 0: bucket_limit(i-1) .. bucket_limit(i) repeated double bucket_limit = 6 [packed = true]; repeated double bucket = 7 [packed = true]; }; // A SummaryMetadata encapsulates information on which plugins are able to make // use of a certain summary value. message SummaryMetadata { message PluginData { // The name of the plugin this data pertains to. string plugin_name = 1; // The content to store for the plugin. The best practice is for this to be // a binary serialized protocol buffer. bytes content = 2; } // Data that associates a summary with a certain plugin. PluginData plugin_data = 1; // Display name for viewing in TensorBoard. string display_name = 2; // Longform readable description of the summary sequence. Markdown supported. string summary_description = 3; }; // A Summary is a set of named values to be displayed by the // visualizer. // // Summaries are produced regularly during training, as controlled by // the "summary_interval_secs" attribute of the training operation. // Summaries are also produced at the end of an evaluation. message Summary { message Image { // Dimensions of the image. int32 height = 1; int32 width = 2; // Valid colorspace values are // 1 - grayscale // 2 - grayscale + alpha // 3 - RGB // 4 - RGBA // 5 - DIGITAL_YUV // 6 - BGRA int32 colorspace = 3; // Image data in encoded format. All image formats supported by // image_codec::CoderUtil can be stored here. bytes encoded_image_string = 4; } message Audio { // Sample rate of the audio in Hz. float sample_rate = 1; // Number of channels of audio. int64 num_channels = 2; // Length of the audio in frames (samples per channel). int64 length_frames = 3; // Encoded audio data and its associated RFC 2045 content type (e.g. // "audio/wav"). bytes encoded_audio_string = 4; string content_type = 5; } message Value { // This field is deprecated and will not be set. string node_name = 7; // Tag name for the data. Used by TensorBoard plugins to organize data. Tags // are often organized by scope (which contains slashes to convey // hierarchy). For example: foo/bar/0 string tag = 1; // Contains metadata on the summary value such as which plugins may use it. // Take note that many summary values may lack a metadata field. This is // because the FileWriter only keeps a metadata object on the first summary // value with a certain tag for each tag. TensorBoard then remembers which // tags are associated with which plugins. This saves space. SummaryMetadata metadata = 9; // Value associated with the tag. oneof value { float simple_value = 2; bytes obsolete_old_style_histogram = 3; Image image = 4; HistogramProto histo = 5; Audio audio = 6; TensorProto tensor = 8; } } // Set of values for the summary. repeated Value value = 1; } ================================================ FILE: tensorboardX/proto/summary_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/summary.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import tensor_pb2 as tensorboardX_dot_proto_dot_tensor__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n tensorboardX/proto/summary.proto\x12\x0ctensorboardX\x1a\x1ftensorboardX/proto/tensor.proto\"\'\n\x12SummaryDescription\x12\x11\n\ttype_hint\x18\x01 \x01(\t\"\x87\x01\n\x0eHistogramProto\x12\x0b\n\x03min\x18\x01 \x01(\x01\x12\x0b\n\x03max\x18\x02 \x01(\x01\x12\x0b\n\x03num\x18\x03 \x01(\x01\x12\x0b\n\x03sum\x18\x04 \x01(\x01\x12\x13\n\x0bsum_squares\x18\x05 \x01(\x01\x12\x18\n\x0c\x62ucket_limit\x18\x06 \x03(\x01\x42\x02\x10\x01\x12\x12\n\x06\x62ucket\x18\x07 \x03(\x01\x42\x02\x10\x01\"\xb7\x01\n\x0fSummaryMetadata\x12=\n\x0bplugin_data\x18\x01 \x01(\x0b\x32(.tensorboardX.SummaryMetadata.PluginData\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x1b\n\x13summary_description\x18\x03 \x01(\t\x1a\x32\n\nPluginData\x12\x13\n\x0bplugin_name\x18\x01 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x02 \x01(\x0c\"\xea\x04\n\x07Summary\x12*\n\x05value\x18\x01 \x03(\x0b\x32\x1b.tensorboardX.Summary.Value\x1aX\n\x05Image\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05width\x18\x02 \x01(\x05\x12\x12\n\ncolorspace\x18\x03 \x01(\x05\x12\x1c\n\x14\x65ncoded_image_string\x18\x04 \x01(\x0c\x1a}\n\x05\x41udio\x12\x13\n\x0bsample_rate\x18\x01 \x01(\x02\x12\x14\n\x0cnum_channels\x18\x02 \x01(\x03\x12\x15\n\rlength_frames\x18\x03 \x01(\x03\x12\x1c\n\x14\x65ncoded_audio_string\x18\x04 \x01(\x0c\x12\x14\n\x0c\x63ontent_type\x18\x05 \x01(\t\x1a\xd9\x02\n\x05Value\x12\x11\n\tnode_name\x18\x07 \x01(\t\x12\x0b\n\x03tag\x18\x01 \x01(\t\x12/\n\x08metadata\x18\t \x01(\x0b\x32\x1d.tensorboardX.SummaryMetadata\x12\x16\n\x0csimple_value\x18\x02 \x01(\x02H\x00\x12&\n\x1cobsolete_old_style_histogram\x18\x03 \x01(\x0cH\x00\x12,\n\x05image\x18\x04 \x01(\x0b\x32\x1b.tensorboardX.Summary.ImageH\x00\x12-\n\x05histo\x18\x05 \x01(\x0b\x32\x1c.tensorboardX.HistogramProtoH\x00\x12,\n\x05\x61udio\x18\x06 \x01(\x0b\x32\x1b.tensorboardX.Summary.AudioH\x00\x12+\n\x06tensor\x18\x08 \x01(\x0b\x32\x19.tensorboardX.TensorProtoH\x00\x42\x07\n\x05valueB.\n\x18org.tensorflow.frameworkB\rSummaryProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.summary_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\rSummaryProtosP\001\370\001\001' _HISTOGRAMPROTO.fields_by_name['bucket_limit']._options = None _HISTOGRAMPROTO.fields_by_name['bucket_limit']._serialized_options = b'\020\001' _HISTOGRAMPROTO.fields_by_name['bucket']._options = None _HISTOGRAMPROTO.fields_by_name['bucket']._serialized_options = b'\020\001' _globals['_SUMMARYDESCRIPTION']._serialized_start=83 _globals['_SUMMARYDESCRIPTION']._serialized_end=122 _globals['_HISTOGRAMPROTO']._serialized_start=125 _globals['_HISTOGRAMPROTO']._serialized_end=260 _globals['_SUMMARYMETADATA']._serialized_start=263 _globals['_SUMMARYMETADATA']._serialized_end=446 _globals['_SUMMARYMETADATA_PLUGINDATA']._serialized_start=396 _globals['_SUMMARYMETADATA_PLUGINDATA']._serialized_end=446 _globals['_SUMMARY']._serialized_start=449 _globals['_SUMMARY']._serialized_end=1067 _globals['_SUMMARY_IMAGE']._serialized_start=504 _globals['_SUMMARY_IMAGE']._serialized_end=592 _globals['_SUMMARY_AUDIO']._serialized_start=594 _globals['_SUMMARY_AUDIO']._serialized_end=719 _globals['_SUMMARY_VALUE']._serialized_start=722 _globals['_SUMMARY_VALUE']._serialized_end=1067 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/tensor.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "TensorProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; import "tensorboardX/proto/resource_handle.proto"; import "tensorboardX/proto/tensor_shape.proto"; import "tensorboardX/proto/types.proto"; // Protocol buffer representing a tensor. message TensorProto { DataType dtype = 1; // Shape of the tensor. TODO(touts): sort out the 0-rank issues. TensorShapeProto tensor_shape = 2; // Only one of the representations below is set, one of "tensor_contents" and // the "xxx_val" attributes. We are not using oneof because as oneofs cannot // contain repeated fields it would require another extra set of messages. // Version number. // // In version 0, if the "repeated xxx" representations contain only one // element, that element is repeated to fill the shape. This makes it easy // to represent a constant Tensor with a single value. int32 version_number = 3; // Serialized raw tensor content from either Tensor::AsProtoTensorContent or // memcpy in tensorflow::grpc::EncodeTensorToByteBuffer. This representation // can be used for all tensor types. The purpose of this representation is to // reduce serialization overhead during RPC call by avoiding serialization of // many repeated small items. bytes tensor_content = 4; // Type specific representations that make it easy to create tensor protos in // all languages. Only the representation corresponding to "dtype" can // be set. The values hold the flattened representation of the tensor in // row major order. // DT_HALF. Note that since protobuf has no int16 type, we'll have some // pointless zero padding for each value here. repeated int32 half_val = 13 [packed = true]; // DT_FLOAT. repeated float float_val = 5 [packed = true]; // DT_DOUBLE. repeated double double_val = 6 [packed = true]; // DT_INT32, DT_INT16, DT_INT8, DT_UINT8. repeated int32 int_val = 7 [packed = true]; // DT_STRING repeated bytes string_val = 8; // DT_COMPLEX64. scomplex_val(2*i) and scomplex_val(2*i+1) are real // and imaginary parts of i-th single precision complex. repeated float scomplex_val = 9 [packed = true]; // DT_INT64 repeated int64 int64_val = 10 [packed = true]; // DT_BOOL repeated bool bool_val = 11 [packed = true]; // DT_COMPLEX128. dcomplex_val(2*i) and dcomplex_val(2*i+1) are real // and imaginary parts of i-th double precision complex. repeated double dcomplex_val = 12 [packed = true]; // DT_RESOURCE repeated ResourceHandleProto resource_handle_val = 14; }; ================================================ FILE: tensorboardX/proto/tensor_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/tensor.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() from tensorboardX.proto import resource_handle_pb2 as tensorboardX_dot_proto_dot_resource__handle__pb2 from tensorboardX.proto import tensor_shape_pb2 as tensorboardX_dot_proto_dot_tensor__shape__pb2 from tensorboardX.proto import types_pb2 as tensorboardX_dot_proto_dot_types__pb2 DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1ftensorboardX/proto/tensor.proto\x12\x0ctensorboardX\x1a(tensorboardX/proto/resource_handle.proto\x1a%tensorboardX/proto/tensor_shape.proto\x1a\x1etensorboardX/proto/types.proto\"\xa9\x03\n\x0bTensorProto\x12%\n\x05\x64type\x18\x01 \x01(\x0e\x32\x16.tensorboardX.DataType\x12\x34\n\x0ctensor_shape\x18\x02 \x01(\x0b\x32\x1e.tensorboardX.TensorShapeProto\x12\x16\n\x0eversion_number\x18\x03 \x01(\x05\x12\x16\n\x0etensor_content\x18\x04 \x01(\x0c\x12\x14\n\x08half_val\x18\r \x03(\x05\x42\x02\x10\x01\x12\x15\n\tfloat_val\x18\x05 \x03(\x02\x42\x02\x10\x01\x12\x16\n\ndouble_val\x18\x06 \x03(\x01\x42\x02\x10\x01\x12\x13\n\x07int_val\x18\x07 \x03(\x05\x42\x02\x10\x01\x12\x12\n\nstring_val\x18\x08 \x03(\x0c\x12\x18\n\x0cscomplex_val\x18\t \x03(\x02\x42\x02\x10\x01\x12\x15\n\tint64_val\x18\n \x03(\x03\x42\x02\x10\x01\x12\x14\n\x08\x62ool_val\x18\x0b \x03(\x08\x42\x02\x10\x01\x12\x18\n\x0c\x64\x63omplex_val\x18\x0c \x03(\x01\x42\x02\x10\x01\x12>\n\x13resource_handle_val\x18\x0e \x03(\x0b\x32!.tensorboardX.ResourceHandleProtoB-\n\x18org.tensorflow.frameworkB\x0cTensorProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.tensor_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\014TensorProtosP\001\370\001\001' _TENSORPROTO.fields_by_name['half_val']._options = None _TENSORPROTO.fields_by_name['half_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['float_val']._options = None _TENSORPROTO.fields_by_name['float_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['double_val']._options = None _TENSORPROTO.fields_by_name['double_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['int_val']._options = None _TENSORPROTO.fields_by_name['int_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['scomplex_val']._options = None _TENSORPROTO.fields_by_name['scomplex_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['int64_val']._options = None _TENSORPROTO.fields_by_name['int64_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['bool_val']._options = None _TENSORPROTO.fields_by_name['bool_val']._serialized_options = b'\020\001' _TENSORPROTO.fields_by_name['dcomplex_val']._options = None _TENSORPROTO.fields_by_name['dcomplex_val']._serialized_options = b'\020\001' _globals['_TENSORPROTO']._serialized_start=163 _globals['_TENSORPROTO']._serialized_end=588 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/tensor_shape.proto ================================================ // Protocol buffer representing the shape of tensors. syntax = "proto3"; option cc_enable_arenas = true; option java_outer_classname = "TensorShapeProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; package tensorboardX; // Dimensions of a tensor. message TensorShapeProto { // One dimension of the tensor. message Dim { // Size of the tensor in that dimension. // This value must be >= -1, but values of -1 are reserved for "unknown" // shapes (values of -1 mean "unknown" dimension). Certain wrappers // that work with TensorShapeProto may fail at runtime when deserializing // a TensorShapeProto containing a dim value of -1. int64 size = 1; // Optional name of the tensor dimension. string name = 2; }; // Dimensions of the tensor, such as {"input", 30}, {"output", 40} // for a 30 x 40 2D tensor. If an entry has size -1, this // corresponds to a dimension of unknown size. The names are // optional. // // The order of entries in "dim" matters: It indicates the layout of the // values in the tensor in-memory representation. // // The first entry in "dim" is the outermost dimension used to layout the // values, the last entry is the innermost dimension. This matches the // in-memory layout of RowMajor Eigen tensors. // // If "dim.size()" > 0, "unknown_rank" must be false. repeated Dim dim = 2; // If true, the number of dimensions in the shape is unknown. // // If true, "dim.size()" must be 0. bool unknown_rank = 3; }; ================================================ FILE: tensorboardX/proto/tensor_shape_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/tensor_shape.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%tensorboardX/proto/tensor_shape.proto\x12\x0ctensorboardX\"|\n\x10TensorShapeProto\x12/\n\x03\x64im\x18\x02 \x03(\x0b\x32\".tensorboardX.TensorShapeProto.Dim\x12\x14\n\x0cunknown_rank\x18\x03 \x01(\x08\x1a!\n\x03\x44im\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\tB2\n\x18org.tensorflow.frameworkB\x11TensorShapeProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.tensor_shape_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\021TensorShapeProtosP\001\370\001\001' _globals['_TENSORSHAPEPROTO']._serialized_start=55 _globals['_TENSORSHAPEPROTO']._serialized_end=179 _globals['_TENSORSHAPEPROTO_DIM']._serialized_start=146 _globals['_TENSORSHAPEPROTO_DIM']._serialized_end=179 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/types.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "TypesProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; // LINT.IfChange enum DataType { // Not a legal value for DataType. Used to indicate a DataType field // has not been set. DT_INVALID = 0; // Data types that all computation devices are expected to be // capable to support. DT_FLOAT = 1; DT_DOUBLE = 2; DT_INT32 = 3; DT_UINT8 = 4; DT_INT16 = 5; DT_INT8 = 6; DT_STRING = 7; DT_COMPLEX64 = 8; // Single-precision complex DT_INT64 = 9; DT_BOOL = 10; DT_QINT8 = 11; // Quantized int8 DT_QUINT8 = 12; // Quantized uint8 DT_QINT32 = 13; // Quantized int32 DT_BFLOAT16 = 14; // Float32 truncated to 16 bits. Only for cast ops. DT_QINT16 = 15; // Quantized int16 DT_QUINT16 = 16; // Quantized uint16 DT_UINT16 = 17; DT_COMPLEX128 = 18; // Double-precision complex DT_HALF = 19; DT_RESOURCE = 20; // TODO(josh11b): DT_GENERIC_PROTO = ??; // TODO(jeff,josh11b): DT_UINT64? DT_UINT32? // Do not use! These are only for parameters. Every enum above // should have a corresponding value below (verified by types_test). DT_FLOAT_REF = 101; DT_DOUBLE_REF = 102; DT_INT32_REF = 103; DT_UINT8_REF = 104; DT_INT16_REF = 105; DT_INT8_REF = 106; DT_STRING_REF = 107; DT_COMPLEX64_REF = 108; DT_INT64_REF = 109; DT_BOOL_REF = 110; DT_QINT8_REF = 111; DT_QUINT8_REF = 112; DT_QINT32_REF = 113; DT_BFLOAT16_REF = 114; DT_QINT16_REF = 115; DT_QUINT16_REF = 116; DT_UINT16_REF = 117; DT_COMPLEX128_REF = 118; DT_HALF_REF = 119; DT_RESOURCE_REF = 120; } // LINT.ThenChange(https://www.tensorflow.org/code/tensorflow/c/c_api.h,https://www.tensorflow.org/code/tensorflow/go/tensor.go) ================================================ FILE: tensorboardX/proto/types_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/types.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1etensorboardX/proto/types.proto\x12\x0ctensorboardX*\xc2\x05\n\x08\x44\x61taType\x12\x0e\n\nDT_INVALID\x10\x00\x12\x0c\n\x08\x44T_FLOAT\x10\x01\x12\r\n\tDT_DOUBLE\x10\x02\x12\x0c\n\x08\x44T_INT32\x10\x03\x12\x0c\n\x08\x44T_UINT8\x10\x04\x12\x0c\n\x08\x44T_INT16\x10\x05\x12\x0b\n\x07\x44T_INT8\x10\x06\x12\r\n\tDT_STRING\x10\x07\x12\x10\n\x0c\x44T_COMPLEX64\x10\x08\x12\x0c\n\x08\x44T_INT64\x10\t\x12\x0b\n\x07\x44T_BOOL\x10\n\x12\x0c\n\x08\x44T_QINT8\x10\x0b\x12\r\n\tDT_QUINT8\x10\x0c\x12\r\n\tDT_QINT32\x10\r\x12\x0f\n\x0b\x44T_BFLOAT16\x10\x0e\x12\r\n\tDT_QINT16\x10\x0f\x12\x0e\n\nDT_QUINT16\x10\x10\x12\r\n\tDT_UINT16\x10\x11\x12\x11\n\rDT_COMPLEX128\x10\x12\x12\x0b\n\x07\x44T_HALF\x10\x13\x12\x0f\n\x0b\x44T_RESOURCE\x10\x14\x12\x10\n\x0c\x44T_FLOAT_REF\x10\x65\x12\x11\n\rDT_DOUBLE_REF\x10\x66\x12\x10\n\x0c\x44T_INT32_REF\x10g\x12\x10\n\x0c\x44T_UINT8_REF\x10h\x12\x10\n\x0c\x44T_INT16_REF\x10i\x12\x0f\n\x0b\x44T_INT8_REF\x10j\x12\x11\n\rDT_STRING_REF\x10k\x12\x14\n\x10\x44T_COMPLEX64_REF\x10l\x12\x10\n\x0c\x44T_INT64_REF\x10m\x12\x0f\n\x0b\x44T_BOOL_REF\x10n\x12\x10\n\x0c\x44T_QINT8_REF\x10o\x12\x11\n\rDT_QUINT8_REF\x10p\x12\x11\n\rDT_QINT32_REF\x10q\x12\x13\n\x0f\x44T_BFLOAT16_REF\x10r\x12\x11\n\rDT_QINT16_REF\x10s\x12\x12\n\x0e\x44T_QUINT16_REF\x10t\x12\x11\n\rDT_UINT16_REF\x10u\x12\x15\n\x11\x44T_COMPLEX128_REF\x10v\x12\x0f\n\x0b\x44T_HALF_REF\x10w\x12\x13\n\x0f\x44T_RESOURCE_REF\x10xB,\n\x18org.tensorflow.frameworkB\x0bTypesProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.types_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\013TypesProtosP\001\370\001\001' _globals['_DATATYPE']._serialized_start=49 _globals['_DATATYPE']._serialized_end=755 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/proto/versions.proto ================================================ syntax = "proto3"; package tensorboardX; option cc_enable_arenas = true; option java_outer_classname = "VersionsProtos"; option java_multiple_files = true; option java_package = "org.tensorflow.framework"; // Version information for a piece of serialized data // // There are different types of versions for each type of data // (GraphDef, etc.), but they all have the same common shape // described here. // // Each consumer has "consumer" and "min_producer" versions (specified // elsewhere). A consumer is allowed to consume this data if // // producer >= min_producer // consumer >= min_consumer // consumer not in bad_consumers // message VersionDef { // The version of the code that produced this data. int32 producer = 1; // Any consumer below this version is not allowed to consume this data. int32 min_consumer = 2; // Specific consumer versions which are disallowed (e.g. due to bugs). repeated int32 bad_consumers = 3; }; ================================================ FILE: tensorboardX/proto/versions_pb2.py ================================================ # -*- coding: utf-8 -*- # Generated by the protocol buffer compiler. DO NOT EDIT! # source: tensorboardX/proto/versions.proto """Generated protocol buffer code.""" from google.protobuf.internal import builder as _builder from google.protobuf import descriptor as _descriptor from google.protobuf import descriptor_pool as _descriptor_pool from google.protobuf import symbol_database as _symbol_database # @@protoc_insertion_point(imports) _sym_db = _symbol_database.Default() DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!tensorboardX/proto/versions.proto\x12\x0ctensorboardX\"K\n\nVersionDef\x12\x10\n\x08producer\x18\x01 \x01(\x05\x12\x14\n\x0cmin_consumer\x18\x02 \x01(\x05\x12\x15\n\rbad_consumers\x18\x03 \x03(\x05\x42/\n\x18org.tensorflow.frameworkB\x0eVersionsProtosP\x01\xf8\x01\x01\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'tensorboardX.proto.versions_pb2', _globals) if _descriptor._USE_C_DESCRIPTORS == False: DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\030org.tensorflow.frameworkB\016VersionsProtosP\001\370\001\001' _globals['_VERSIONDEF']._serialized_start=51 _globals['_VERSIONDEF']._serialized_end=126 # @@protoc_insertion_point(module_scope) ================================================ FILE: tensorboardX/record_writer.py ================================================ """ To write tf_record into file. Here we use it for tensorboard's event writting. The code was borrowed from https://github.com/TeamHG-Memex/tensorboard_logger """ import copy import io import os import os.path import re import struct try: import boto3 S3_ENABLED = True except ImportError: S3_ENABLED = False try: from google.cloud import storage GCS_ENABLED = True except ImportError: GCS_ENABLED = False from .crc32c import crc32c _VALID_OP_NAME_START = re.compile('^[A-Za-z0-9.]') _VALID_OP_NAME_PART = re.compile('[A-Za-z0-9_.\\-/]+') # Registry of writer factories by prefix backends. # # Currently supports "s3://" URLs for S3 based on boto, # "gs://" URLs for Google Cloud Storage and falls # back to local filesystem. REGISTERED_FACTORIES = {} def register_writer_factory(prefix, factory): if ':' in prefix: raise ValueError('prefix cannot contain a :') REGISTERED_FACTORIES[prefix] = factory def directory_check(path): '''Initialize the directory for log files.''' try: prefix = path.split(':')[0] factory = REGISTERED_FACTORIES[prefix] return factory.directory_check(path) except KeyError: if not os.path.exists(path): os.makedirs(path) def open_file(path): '''Open a writer for outputting event files.''' try: prefix = path.split(':')[0] factory = REGISTERED_FACTORIES[prefix] return factory.open(path) except KeyError: return open(path, 'wb') class S3RecordWriter: """Writes tensorboard protocol buffer files to S3.""" def __init__(self, path): if not S3_ENABLED: raise ImportError("boto3 must be installed for S3 support.") self.path = path self.buffer = io.BytesIO() self.closed = False def __del__(self): if not self.closed: self.close() def bucket_and_path(self): path = self.path if path.startswith("s3://"): path = path[len("s3://"):] bp = path.split("/") bucket = bp[0] path = path[1 + len(bucket):] return bucket, path def write(self, val): self.buffer.write(val) def flush(self): s3 = boto3.client('s3', endpoint_url=os.environ.get('S3_ENDPOINT')) bucket, path = self.bucket_and_path() upload_buffer = copy.copy(self.buffer) upload_buffer.seek(0) s3.upload_fileobj(upload_buffer, bucket, path) def close(self): self.flush() self.closed = True class S3RecordWriterFactory: """Factory for event protocol buffer files to S3.""" def open(self, path): return S3RecordWriter(path) def directory_check(self, path): # S3 doesn't need directories created before files are added # so we can just skip this check pass register_writer_factory("s3", S3RecordWriterFactory()) class GCSRecordWriter: """Writes tensorboard protocol buffer files to Google Cloud Storage.""" def __init__(self, path): if not GCS_ENABLED: raise ImportError("`google-cloud-storage` must be installed in order to use " "the 'gs://' protocol") self.path = path self.buffer = io.BytesIO() client = storage.Client() bucket_name, filepath = self.bucket_and_path() bucket = storage.Bucket(client, bucket_name) self.blob = storage.Blob(filepath, bucket) def __del__(self): self.close() def bucket_and_path(self): path = self.path if path.startswith("gs://"): path = path[len("gs://"):] bp = path.split("/") bucket = bp[0] path = path[1 + len(bucket):] return bucket, path def write(self, val): self.buffer.write(val) def flush(self): upload_buffer = copy.copy(self.buffer) upload_buffer.seek(0) # work with blob generation, so that uploading will automatically retry in case of connection errors blob_generation = self.blob.generation self.blob.upload_from_string(data=upload_buffer.getvalue(), if_generation_match=blob_generation) def close(self): self.flush() class GCSRecordWriterFactory: """Factory for event protocol buffer files to Google Cloud Storage.""" def open(self, path): return GCSRecordWriter(path) def directory_check(self, path): # Google Cloud Storage doesn't need directories created before files # are added so we can just skip this check pass register_writer_factory("gs", GCSRecordWriterFactory()) class RecordWriter: def __init__(self, path): self._name_to_tf_name = {} self._tf_names = set() self.path = path self._writer = None self._writer = open_file(path) def write(self, data): w = self._writer.write header = struct.pack('Q', len(data)) w(header) w(struct.pack('I', masked_crc32c(header))) w(data) w(struct.pack('I', masked_crc32c(data))) def flush(self): self._writer.flush() def close(self): self._writer.close() def masked_crc32c(data): x = u32(crc32c(data)) return u32(((x >> 15) | u32(x << 17)) + 0xa282ead8) def u32(x): return x & 0xffffffff def make_valid_tf_name(name): if not _VALID_OP_NAME_START.match(name): # Must make it valid somehow, but don't want to remove stuff name = '.' + name return '_'.join(_VALID_OP_NAME_PART.findall(name)) ================================================ FILE: tensorboardX/summary.py ================================================ import logging import os import re as _re import numpy as np from .proto import layout_pb2 from .proto.plugin_mesh_pb2 import MeshPluginData from .proto.plugin_pr_curve_pb2 import PrCurvePluginData from .proto.plugin_text_pb2 import TextPluginData # pylint: disable=unused-import from .proto.summary_pb2 import HistogramProto, Summary, SummaryMetadata from .proto.tensor_pb2 import TensorProto from .proto.tensor_shape_pb2 import TensorShapeProto from .utils import _prepare_video, convert_to_HWC, convert_to_NTCHW from .x2num import make_np logger = logging.getLogger(__name__) _INVALID_TAG_CHARACTERS = _re.compile(r'[^-/\w\.]') def _clean_tag(name): # In the past, the first argument to summary ops was a tag, which allowed # arbitrary characters. Now we are changing the first argument to be the node # name. This has a number of advantages (users of summary ops now can # take advantage of the tf name scope system) but risks breaking existing # usage, because a much smaller set of characters are allowed in node names. # This function replaces all illegal characters with _s, and logs a warning. # It also strips leading slashes from the name. if name is not None: new_name = _INVALID_TAG_CHARACTERS.sub('_', name) new_name = new_name.lstrip('/') # Remove leading slashes if new_name != name: logger.info( f'Summary name {name} is illegal; using {new_name} instead.') name = new_name return name def _draw_single_box(image, xmin, ymin, xmax, ymax, display_str, color='black', color_text='black', thickness=2): from PIL import ImageDraw, ImageFont font = ImageFont.load_default() draw = ImageDraw.Draw(image) (left, right, top, bottom) = (xmin, xmax, ymin, ymax) draw.line([(left, top), (left, bottom), (right, bottom), (right, top), (left, top)], width=thickness, fill=color) if display_str: text_bottom = bottom # Reverse list and print from bottom to top. l, t, r, b = font.getbbox(display_str) text_width, text_height = r - l, b - t margin = np.ceil(0.05 * text_height) draw.rectangle( [(left, text_bottom - text_height - 2 * margin), (left + text_width, text_bottom)], fill=color ) draw.text( (left + margin, text_bottom - text_height - margin), display_str, fill=color_text, font=font ) return image def hparams(hparam_dict=None, metric_dict=None): from tensorboardX.proto.api_pb2 import ( DataType, Experiment, HParamInfo, MetricInfo, MetricName, Status, ) from tensorboardX.proto.plugin_hparams_pb2 import ( HParamsPluginData, SessionEndInfo, SessionStartInfo, ) PLUGIN_NAME = 'hparams' PLUGIN_DATA_VERSION = 0 EXPERIMENT_TAG = '_hparams_/experiment' SESSION_START_INFO_TAG = '_hparams_/session_start_info' SESSION_END_INFO_TAG = '_hparams_/session_end_info' # TODO: expose other parameters in the future. # hp = HParamInfo(name='lr',display_name='learning rate', type=DataType.DATA_TYPE_FLOAT64, domain_interval=Interval(min_value=10, max_value=100)) # noqa E501 # mt = MetricInfo(name=MetricName(tag='accuracy'), display_name='accuracy', description='', dataset_type=DatasetType.DATASET_VALIDATION) # noqa E501 # exp = Experiment(name='123', description='456', time_created_secs=100.0, hparam_infos=[hp], metric_infos=[mt], user='tw') # noqa E501 hps = [] ssi = SessionStartInfo() for k, v in hparam_dict.items(): if v is None: continue if isinstance(v, str): ssi.hparams[k].string_value = v hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_STRING"))) continue if isinstance(v, bool): ssi.hparams[k].bool_value = v hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_BOOL"))) continue if isinstance(v, (int, float)): v = make_np(v)[0] ssi.hparams[k].number_value = v hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_FLOAT64"))) continue if callable(v): ssi.hparams[k].string_value = getattr(v, '__name__', str(v)) hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_STRING"))) continue hps.append(HParamInfo(name=k, type=DataType.Value("DATA_TYPE_UNSET"))) content = HParamsPluginData(session_start_info=ssi, version=PLUGIN_DATA_VERSION) smd = SummaryMetadata(plugin_data=SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME, content=content.SerializeToString())) ssi = Summary(value=[Summary.Value(tag=SESSION_START_INFO_TAG, metadata=smd)]) mts = [MetricInfo(name=MetricName(tag=k)) for k in metric_dict] exp = Experiment(hparam_infos=hps, metric_infos=mts) content = HParamsPluginData(experiment=exp, version=PLUGIN_DATA_VERSION) smd = SummaryMetadata(plugin_data=SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME, content=content.SerializeToString())) exp = Summary(value=[Summary.Value(tag=EXPERIMENT_TAG, metadata=smd)]) sei = SessionEndInfo(status=Status.Value("STATUS_SUCCESS")) content = HParamsPluginData(session_end_info=sei, version=PLUGIN_DATA_VERSION) smd = SummaryMetadata(plugin_data=SummaryMetadata.PluginData(plugin_name=PLUGIN_NAME, content=content.SerializeToString())) sei = Summary(value=[Summary.Value(tag=SESSION_END_INFO_TAG, metadata=smd)]) return exp, ssi, sei def scalar(name, scalar, display_name="", summary_description=""): """Outputs a `Summary` protocol buffer containing a single scalar value. The generated Summary has a Tensor.proto containing the input Tensor. Args: name: A name for the generated node. Will also serve as the series name in TensorBoard. tensor: A real numeric Tensor containing a single value. display_name: The title of the plot. If empty string is passed, `name` will be used. summary_description: The comprehensive text that will showed by clicking the information icon on TensorBoard. Returns: A scalar `Tensor` of type `string`. Which contains a `Summary` protobuf. Raises: ValueError: If tensor has the wrong shape or type. """ name = _clean_tag(name) scalar = make_np(scalar) assert scalar.squeeze().ndim == 0, 'scalar should be 0D' scalar = float(scalar.squeeze()) if display_name == "" and summary_description == "": return Summary(value=[Summary.Value(tag=name, simple_value=scalar)]) metadata = SummaryMetadata(display_name=display_name, summary_description=summary_description) return Summary(value=[Summary.Value(tag=name, simple_value=scalar, metadata=metadata)]) def histogram_raw(name, min, max, num, sum, sum_squares, bucket_limits, bucket_counts): # pylint: disable=line-too-long """Outputs a `Summary` protocol buffer with a histogram. The generated [`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto) has one summary value containing a histogram for `values`. Args: name: A name for the generated node. Will also serve as a series name in TensorBoard. min: A float or int min value max: A float or int max value num: Int number of values sum: Float or int sum of all values sum_squares: Float or int sum of squares for all values bucket_limits: A numeric `Tensor` with upper value per bucket bucket_counts: A numeric `Tensor` with number of values per bucket Returns: A scalar `Tensor` of type `string`. The serialized `Summary` protocol buffer. """ hist = HistogramProto(min=min, max=max, num=num, sum=sum, sum_squares=sum_squares, bucket_limit=bucket_limits, bucket=bucket_counts) return Summary(value=[Summary.Value(tag=name, histo=hist)]) def histogram(name, values, bins, max_bins=None): # pylint: disable=line-too-long """Outputs a `Summary` protocol buffer with a histogram. The generated [`Summary`](https://www.tensorflow.org/code/tensorflow/core/framework/summary.proto) has one summary value containing a histogram for `values`. This op reports an `InvalidArgument` error if any value is not finite. Args: name: A name for the generated node. Will also serve as a series name in TensorBoard. values: A real numeric `Tensor`. Any shape. Values to use to build the histogram. Returns: A scalar `Tensor` of type `string`. The serialized `Summary` protocol buffer. """ name = _clean_tag(name) values = make_np(values) hist = make_histogram(values.astype(float), bins, max_bins) return Summary(value=[Summary.Value(tag=name, histo=hist)]) def make_histogram(values, bins, max_bins=None): """Convert values into a histogram proto using logic from histogram.cc.""" if values.size == 0: raise ValueError('The input has no element.') values = values.reshape(-1) counts, limits = np.histogram(values, bins=bins) num_bins = len(counts) if max_bins is not None and num_bins > max_bins: subsampling = num_bins // max_bins subsampling_remainder = num_bins % subsampling if subsampling_remainder != 0: counts = np.pad(counts, pad_width=[[0, subsampling - subsampling_remainder]], mode="constant", constant_values=0) counts = counts.reshape(-1, subsampling).sum(axis=-1) new_limits = np.empty((counts.size + 1,), limits.dtype) new_limits[:-1] = limits[:-1:subsampling] new_limits[-1] = limits[-1] limits = new_limits # Find the first and the last bin defining the support of the histogram: cum_counts = np.cumsum(np.greater(counts, 0)) start, end = np.searchsorted(cum_counts, [0, cum_counts[-1] - 1], side="right") start = int(start) end = int(end) + 1 del cum_counts # TensorBoard only includes the right bin limits. To still have the leftmost limit # included, we include an empty bin left. # If start == 0, we need to add an empty one left, otherwise we can just include the bin left to the # first nonzero-count bin: counts = counts[start - 1:end] if start > 0 else np.concatenate([[0], counts[:end]]) limits = limits[start:end + 1] if counts.size == 0 or limits.size == 0: raise ValueError('The histogram is empty, please file a bug report.') sum_sq = values.dot(values) return HistogramProto(min=values.min(), max=values.max(), num=len(values), sum=values.sum(), sum_squares=sum_sq, bucket_limit=limits.tolist(), bucket=counts.tolist()) def image(tag, tensor, rescale=1, dataformats='CHW'): """Outputs a `Summary` protocol buffer with images. The summary has up to `max_images` summary values containing images. The images are built from `tensor` which must be 3-D with shape `[height, width, channels]` and where `channels` can be: * 1: `tensor` is interpreted as Grayscale. * 3: `tensor` is interpreted as RGB. * 4: `tensor` is interpreted as RGBA. Args: tag: A name for the generated node. Will also serve as a series name in TensorBoard. tensor: A 3-D `uint8` or `float32` `Tensor` of shape `[height, width, channels]` where `channels` is 1, 3, or 4. 'tensor' can either have values in [0, 1] (float32) or [0, 255] (uint8). The image() function will scale the image values to [0, 255] by applying a scale factor of either 1 (uint8) or 255 (float32). Returns: A scalar `Tensor` of type `string`. The serialized `Summary` protocol buffer. """ tag = _clean_tag(tag) tensor = make_np(tensor) tensor = convert_to_HWC(tensor, dataformats) # Do not assume that user passes in values in [0, 255], use data type to detect if tensor.dtype != np.uint8: tensor = (tensor * 255.0).astype(np.uint8) image = make_image(tensor, rescale=rescale) return Summary(value=[Summary.Value(tag=tag, image=image)]) def image_boxes(tag, tensor_image, tensor_boxes, rescale=1, dataformats='CHW', labels=None): '''Outputs a `Summary` protocol buffer with images.''' tensor_image = make_np(tensor_image) tensor_image = convert_to_HWC(tensor_image, dataformats) tensor_boxes = make_np(tensor_boxes) if tensor_image.dtype != np.uint8: tensor_image = (tensor_image * 255.0).astype(np.uint8) image = make_image(tensor_image, rescale=rescale, rois=tensor_boxes, labels=labels) return Summary(value=[Summary.Value(tag=tag, image=image)]) def draw_boxes(disp_image, boxes, labels=None): # xyxy format num_boxes = boxes.shape[0] list_gt = range(num_boxes) for i in list_gt: disp_image = _draw_single_box(disp_image, boxes[i, 0], boxes[i, 1], boxes[i, 2], boxes[i, 3], display_str=None if labels is None else labels[i], color='Red') return disp_image def make_image(tensor, rescale=1, rois=None, labels=None): """Convert an numpy representation image to Image protobuf""" import PIL from packaging.version import parse from PIL import Image height, width, channel = tensor.shape scaled_height = int(height * rescale) scaled_width = int(width * rescale) image = Image.fromarray(tensor) if rois is not None: image = draw_boxes(image, rois, labels=labels) if parse(PIL.__version__) >= parse('9.1.0'): image = image.resize((scaled_width, scaled_height), Image.Resampling.LANCZOS) else: image = image.resize((scaled_width, scaled_height), Image.LANCZOS) import io output = io.BytesIO() image.save(output, format='PNG') image_string = output.getvalue() output.close() return Summary.Image(height=height, width=width, colorspace=channel, encoded_image_string=image_string) def video(tag, tensor, fps=4, dataformats="NTCHW"): tag = _clean_tag(tag) tensor = make_np(tensor) tensor = convert_to_NTCHW(tensor, input_format=dataformats) tensor = _prepare_video(tensor) # If user passes in uint8, then we don't need to rescale by 255 if tensor.dtype != np.uint8: tensor = (tensor * 255.0).astype(np.uint8) video = make_video(tensor, fps) return Summary(value=[Summary.Value(tag=tag, image=video)]) def make_video(tensor, fps): import tempfile from importlib.metadata import PackageNotFoundError from importlib.metadata import version as get_version from packaging.version import Version try: moviepy_version = Version(get_version("moviepy")) except PackageNotFoundError: logger.error("moviepy is not installed.") return try: # moviepy v2+ from moviepy import ImageSequenceClip except ImportError: try: # Fallback for all moviepy versions from moviepy.video.io.ImageSequenceClip import ImageSequenceClip except ImportError as e: logger.error( "Can't create video. moviepy is installed, but can't import moviepy.video.io.ImageSequenceClip due to %r", e, ) return # Warn about potential moviepy and imageio version incompatibility imageio_version = Version(get_version("imageio")) if moviepy_version >= Version("2") and imageio_version < Version("2.29"): logger.error( "You are using moviepy >= 2.0.0 and imageio < 2.29.0. " "This combination is known to cause issues when writing videos. " "Please upgrade imageio to 2.29 or later, or use moviepy < 2.0.0." ) t, h, w, c = tensor.shape # Convert to RGB if moviepy v2/imageio>2.27 is used; 1-channel input is not supported. if c == 1 and ( moviepy_version >= Version("2") or imageio_version > Version("2.27") ): tensor = np.repeat(tensor, 3, axis=-1) # encode sequence of images into gif string clip = ImageSequenceClip(list(tensor), fps=fps) with tempfile.NamedTemporaryFile(suffix='.gif', delete=False) as fp: filename = fp.name if moviepy_version < Version("1.0.0"): logger.warning('Upgrade to moviepy >= 1.0.0 to supress the progress bar.') clip.write_gif(filename, verbose=False) elif moviepy_version < Version("2.0.0dev1"): # moviepy >= 1.0.0 use logger=None to suppress output. clip.write_gif(filename, verbose=False, logger=None) else: # Moviepy >= 2.0.0.dev1 removed the verbose argument clip.write_gif(filename, logger=None) with open(filename, 'rb') as f: tensor_string = f.read() try: os.remove(filename) except OSError: logger.warning('The temporary file used by moviepy cannot be deleted.') return Summary.Image(height=h, width=w, colorspace=c, encoded_image_string=tensor_string) def audio(tag, tensor, sample_rate=44100): """ Args: tensor: A 2-D float Tensor of shape `[frames, channels]` where `channels` is 1 or 2. The values should between [-1, 1]. We also accepts 1-D tensor. """ import io import soundfile tensor = make_np(tensor) if abs(tensor).max() > 1: print('warning: audio amplitude out of range, auto clipped.') tensor = tensor.clip(-1, 1) if tensor.ndim == 1: # old API, which expects single channel audio tensor = np.expand_dims(tensor, axis=1) assert tensor.ndim == 2, 'Input tensor should be 2 dimensional.' length_frames, num_channels = tensor.shape assert num_channels == 1 or num_channels == 2, 'The second dimension should be 1 or 2.' with io.BytesIO() as fio: soundfile.write(fio, tensor, samplerate=sample_rate, format='wav') audio_string = fio.getvalue() audio = Summary.Audio(sample_rate=sample_rate, num_channels=num_channels, length_frames=length_frames, encoded_audio_string=audio_string, content_type='audio/wav') return Summary(value=[Summary.Value(tag=tag, audio=audio)]) def custom_scalars(layout): categories = [] for k, v in layout.items(): charts = [] for chart_name, chart_meatadata in v.items(): tags = chart_meatadata[1] if chart_meatadata[0] == 'Margin': assert len(tags) == 3 mgcc = layout_pb2.MarginChartContent(series=[layout_pb2.MarginChartContent.Series(value=tags[0], lower=tags[1], upper=tags[2])]) chart = layout_pb2.Chart(title=chart_name, margin=mgcc) else: mlcc = layout_pb2.MultilineChartContent(tag=tags) chart = layout_pb2.Chart(title=chart_name, multiline=mlcc) charts.append(chart) categories.append(layout_pb2.Category(title=k, chart=charts)) layout = layout_pb2.Layout(category=categories) PluginData = SummaryMetadata.PluginData(plugin_name='custom_scalars') smd = SummaryMetadata(plugin_data=PluginData) tensor = TensorProto(dtype='DT_STRING', string_val=[layout.SerializeToString()], tensor_shape=TensorShapeProto()) return Summary(value=[Summary.Value(tag='custom_scalars__config__', tensor=tensor, metadata=smd)]) def text(tag, text): import json PluginData = SummaryMetadata.PluginData( plugin_name='text', content=TextPluginData(version=0).SerializeToString()) smd = SummaryMetadata(plugin_data=PluginData) tensor = TensorProto(dtype='DT_STRING', string_val=[text.encode(encoding='utf_8')], tensor_shape=TensorShapeProto(dim=[TensorShapeProto.Dim(size=1)])) return Summary(value=[Summary.Value(tag=tag + '/text_summary', metadata=smd, tensor=tensor)]) def pr_curve_raw(tag, tp, fp, tn, fn, precision, recall, num_thresholds=127, weights=None): if num_thresholds > 127: # weird, value > 127 breaks protobuf num_thresholds = 127 data = np.stack((tp, fp, tn, fn, precision, recall)) pr_curve_plugin_data = PrCurvePluginData( version=0, num_thresholds=num_thresholds).SerializeToString() PluginData = SummaryMetadata.PluginData( plugin_name='pr_curves', content=pr_curve_plugin_data) smd = SummaryMetadata(plugin_data=PluginData) tensor = TensorProto(dtype='DT_FLOAT', float_val=data.reshape(-1).tolist(), tensor_shape=TensorShapeProto( dim=[TensorShapeProto.Dim(size=data.shape[0]), TensorShapeProto.Dim(size=data.shape[1])])) return Summary(value=[Summary.Value(tag=tag, metadata=smd, tensor=tensor)]) def pr_curve(tag, labels, predictions, num_thresholds=127, weights=None): # weird, value > 127 breaks protobuf num_thresholds = min(num_thresholds, 127) data = compute_curve(labels, predictions, num_thresholds=num_thresholds, weights=weights) pr_curve_plugin_data = PrCurvePluginData( version=0, num_thresholds=num_thresholds).SerializeToString() PluginData = SummaryMetadata.PluginData( plugin_name='pr_curves', content=pr_curve_plugin_data) smd = SummaryMetadata(plugin_data=PluginData) tensor = TensorProto(dtype='DT_FLOAT', float_val=data.reshape(-1).tolist(), tensor_shape=TensorShapeProto( dim=[TensorShapeProto.Dim(size=data.shape[0]), TensorShapeProto.Dim(size=data.shape[1])])) return Summary(value=[Summary.Value(tag=tag, metadata=smd, tensor=tensor)]) # https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/summary.py def compute_curve(labels, predictions, num_thresholds=None, weights=None): _MINIMUM_COUNT = 1e-7 if weights is None: weights = 1.0 # Compute bins of true positives and false positives. bucket_indices = np.int32(np.floor(predictions * (num_thresholds - 1))) float_labels = labels.astype(float) histogram_range = (0, num_thresholds - 1) tp_buckets, _ = np.histogram( bucket_indices, bins=num_thresholds, range=histogram_range, weights=float_labels * weights) fp_buckets, _ = np.histogram( bucket_indices, bins=num_thresholds, range=histogram_range, weights=(1.0 - float_labels) * weights) # Obtain the reverse cumulative sum. tp = np.cumsum(tp_buckets[::-1])[::-1] fp = np.cumsum(fp_buckets[::-1])[::-1] tn = fp[0] - fp fn = tp[0] - tp precision = tp / np.maximum(_MINIMUM_COUNT, tp + fp) recall = tp / np.maximum(_MINIMUM_COUNT, tp + fn) return np.stack((tp, fp, tn, fn, precision, recall)) def _get_tensor_summary(tag, tensor, content_type, json_config): mesh_plugin_data = MeshPluginData( version=0, name=tag, content_type=content_type, json_config=json_config, shape=tensor.shape, ) content = mesh_plugin_data.SerializeToString() smd = SummaryMetadata( plugin_data=SummaryMetadata.PluginData( plugin_name='mesh', content=content)) tensor = TensorProto(dtype='DT_FLOAT', float_val=tensor.reshape(-1).tolist(), tensor_shape=TensorShapeProto(dim=[ TensorShapeProto.Dim(size=tensor.shape[0]), TensorShapeProto.Dim(size=tensor.shape[1]), TensorShapeProto.Dim(size=tensor.shape[2]), ])) tensor_summary = Summary.Value( tag=f'{tag}_{content_type}', tensor=tensor, metadata=smd, ) return tensor_summary def mesh(tag, vertices, colors, faces, config_dict=None): import json summaries = [] tensors = [ (vertices, 1), (faces, 2), (colors, 3) ] for tensor, content_type in tensors: if tensor is None: continue summaries.append( _get_tensor_summary(tag, make_np(tensor), content_type, json.dumps(config_dict, sort_keys=True))) return Summary(value=summaries) ================================================ FILE: tensorboardX/torchvis.py ================================================ import gc import time from functools import wraps from .visdom_writer import VisdomWriter from .writer import SummaryWriter # Supports both TensorBoard and Visdom (no embedding or graph visualization with Visdom) vis_formats = {'tensorboard': SummaryWriter, 'visdom': VisdomWriter} class TorchVis: def __init__(self, *args, **init_kwargs): """ Args: args (list of strings): The name of the visualization target(s). Accepted targets are 'tensorboard' and 'visdom'. init_kwargs: Additional keyword parameters for the visdom writer (For example, server IP). See `visdom doc `_ for more. """ self.subscribers = {} self.register(*args, **init_kwargs) def register(self, *args, **init_kwargs): # Sets tensorboard as the default visualization format if not specified formats = args if args else ['tensorboard'] for format in formats: if self.subscribers.get(format) is None and format in vis_formats: self.subscribers[format] = vis_formats[format](**init_kwargs.get(format, {})) def unregister(self, *args): for format in args: self.subscribers[format].close() del self.subscribers[format] gc.collect() def __getattr__(self, attr): for _, subscriber in self.subscribers.items(): def wrapper(*args, **kwargs): for _, subscriber in self.subscribers.items(): if hasattr(subscriber, attr): getattr(subscriber, attr)(*args, **kwargs) return wrapper raise AttributeError # Handle writer management (open/close) for the user def __del__(self): for _, subscriber in self.subscribers.items(): subscriber.close() ================================================ FILE: tensorboardX/utils.py ================================================ # Functions for converting def figure_to_image(figures, close=True): """Render matplotlib figure to numpy format. Note that this requires the ``matplotlib`` package. Args: figure (matplotlib.pyplot.figure) or list of figures: figure or a list of figures close (bool): Flag to automatically close the figure Returns: numpy.array: image in [CHW] order """ import numpy as np try: import matplotlib.backends.backend_agg as plt_backend_agg import matplotlib.pyplot as plt except ModuleNotFoundError: print('please install matplotlib') def render_to_rgb(figure): canvas = plt_backend_agg.FigureCanvasAgg(figure) canvas.draw() data = np.frombuffer(canvas.buffer_rgba(), dtype=np.uint8) w, h = figure.canvas.get_width_height() image_hwc = data.reshape([h, w, 4])[:, :, 0:3] image_chw = np.moveaxis(image_hwc, source=2, destination=0) if close: plt.close(figure) return image_chw if isinstance(figures, list): images = [render_to_rgb(figure) for figure in figures] return np.stack(images) else: image = render_to_rgb(figures) return image def graphviz_to_image(): pass def _prepare_video(V): import numpy as np b, t, c, h, w = V.shape if V.dtype == np.uint8: V = np.float32(V) / 255. def is_power2(num): return num != 0 and ((num & (num - 1)) == 0) # pad to nearest power of 2, all at once if not is_power2(V.shape[0]): len_addition = int(2**V.shape[0].bit_length() - V.shape[0]) V = np.concatenate( (V, np.zeros(shape=(len_addition, t, c, h, w))), axis=0) n_rows = 2**((b.bit_length() - 1) // 2) n_cols = V.shape[0] // n_rows V = np.reshape(V, newshape=(n_rows, n_cols, t, c, h, w)) V = np.transpose(V, axes=(2, 0, 4, 1, 5, 3)) V = np.reshape(V, newshape=(t, n_rows * h, n_cols * w, c)) return V def make_grid(I, ncols=8): # I: N1HW or N3HW import numpy as np assert isinstance( I, np.ndarray), 'plugin error, should pass numpy array here' if I.shape[1] == 1: I = np.concatenate([I, I, I], 1) assert I.ndim == 4 and I.shape[1] == 3 or I.shape[1] == 4 nimg = I.shape[0] H = I.shape[2] W = I.shape[3] ncols = min(nimg, ncols) nrows = int(np.ceil(float(nimg) / ncols)) canvas = np.zeros((I.shape[1], H * nrows, W * ncols), dtype=I.dtype) i = 0 for y in range(nrows): for x in range(ncols): if i >= nimg: break canvas[:, y * H:(y + 1) * H, x * W:(x + 1) * W] = I[i] i = i + 1 return canvas def convert_to_NTCHW(tensor, input_format): assert len(input_format) == 5, "Only 5D tensor is supported." assert len(set(input_format)) == len(input_format), f"You can not use the same dimension shorthand twice. \ input_format: {input_format}" assert len(tensor.shape) == len(input_format), f"size of input tensor and input format are different. \ tensor shape: {tensor.shape}, input_format: {input_format}" input_format = input_format.upper() index = [input_format.find(c) for c in 'NTCHW'] tensor_NTCHW = tensor.transpose(index) return tensor_NTCHW def convert_to_HWC(tensor, input_format): # tensor: numpy array import numpy as np assert len(set(input_format)) == len(input_format), f"You can not use the same dimension shorthand twice. \ input_format: {input_format}" assert len(tensor.shape) == len(input_format), f"size of input tensor and input format are different. \ tensor shape: {tensor.shape}, input_format: {input_format}" input_format = input_format.upper() if len(input_format) == 4: index = [input_format.find(c) for c in 'NCHW'] tensor_NCHW = tensor.transpose(index) tensor_CHW = make_grid(tensor_NCHW) return tensor_CHW.transpose(1, 2, 0) if len(input_format) == 3: index = [input_format.find(c) for c in 'HWC'] tensor_HWC = tensor.transpose(index) if tensor_HWC.shape[2] == 1: tensor_HWC = np.concatenate([tensor_HWC, tensor_HWC, tensor_HWC], 2) return tensor_HWC if len(input_format) == 2: index = [input_format.find(c) for c in 'HW'] tensor = tensor.transpose(index) tensor = np.stack([tensor, tensor, tensor], 2) return tensor ================================================ FILE: tensorboardX/visdom_writer.py ================================================ import gc import json import math import time import numpy as np from .summary import compute_curve from .utils import figure_to_image from .x2num import make_np # Decorator that checks if there is a Visdom connection def _check_connection(fn): def wrapper(self, *args, **kwargs): if not self.server_connected: print('ERROR: No Visdom server currently connected') self._try_connect() return fn(self, *args, **kwargs) return wrapper class VisdomWriter: def __init__(self, *args, **kwargs): try: from visdom import Visdom except ImportError: raise ImportError( "Visdom visualization requires installation of Visdom") self.scalar_dict = {} self.server_connected = False self.vis = Visdom(*args, **kwargs) self.windows = {} self._try_connect() def _try_connect(self): startup_sec = 1 self.server_connected = self.vis.check_connection() while not self.server_connected and startup_sec > 0: time.sleep(0.1) startup_sec -= 0.1 self.server_connected = self.vis.check_connection() assert self.server_connected, 'No connection could be formed quickly' @_check_connection def add_scalar(self, tag, scalar_value, global_step=None, main_tag='default'): """Add scalar data to Visdom. Plots the values in a plot titled {main_tag}-{tag}. Args: tag (string): Data identifier scalar_value (float or string/blobname): Value to save global_step (int): Global step value to record main_tag (string): Data group identifier """ if self.scalar_dict.get(main_tag) is None: self.scalar_dict[main_tag] = {} exists = self.scalar_dict[main_tag].get(tag) is not None self.scalar_dict[main_tag][tag] = self.scalar_dict[main_tag][tag] + \ [scalar_value] if exists else [scalar_value] plot_name = f'{main_tag}-{tag}' # If there is no global_step provided, follow sequential order x_val = global_step if global_step else len(self.scalar_dict[main_tag][tag]) if exists: # Update our existing Visdom window self.vis.line( X=make_np(x_val), Y=make_np(scalar_value), name=plot_name, update='append', win=self.windows[plot_name], ) else: # Save the window if we are creating this graph for the first time self.windows[plot_name] = self.vis.line( X=make_np(x_val), Y=make_np(scalar_value), name=plot_name, opts={ 'title': plot_name, 'xlabel': 'timestep', 'ylabel': tag, }, ) @_check_connection def add_scalars(self, main_tag, tag_scalar_dict, global_step=None): """Adds many scalar data to summary. Note that this function also keeps logged scalars in memory. In extreme case it explodes your RAM. Args: tag (string): Data identifier main_tag (string): Data group identifier tag_scalar_dict (dict): Key-value pair storing the tag and corresponding values global_step (int): Global step value to record Examples:: writer.add_scalars('run_14h',{'xsinx':i*np.sin(i/r), 'xcosx':i*np.cos(i/r), 'arctanx': numsteps*np.arctan(i/r)}, i) This function adds three plots: 'run_14h-xsinx', 'run_14h-xcosx', 'run_14h-arctanx' with the corresponding values. """ for key in tag_scalar_dict: self.add_scalar(key, tag_scalar_dict[key], global_step, main_tag) @_check_connection def export_scalars_to_json(self, path): """Exports to the given 'path' an ASCII file containing all the scalars written so far by this instance, with the following format: {writer_id : [[timestamp, step, value], ...], ...} The scalars saved by ``add_scalars()`` will be flushed after export. """ with open(path, "w") as f: json.dump(self.scalar_dict, f) self.scalar_dict = {} @_check_connection def add_histogram(self, tag, values, global_step=None, bins='tensorflow'): """Add histogram to summary. Args: tag (string): Data identifier values (torch.Tensor, numpy.array, or string/blobname): Values to build histogram global_step (int): Global step value to record bins (string): one of {'tensorflow', 'auto', 'fd', ...}, this determines how the bins are made. You can find other options in: https://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html """ values = make_np(values) self.vis.histogram(make_np(values), opts={'title': tag}) @_check_connection def add_image(self, tag, img_tensor, global_step=None, caption=None): """Add image data to summary. Note that this requires the ``pillow`` package. Args: tag (string): Data identifier img_tensor (torch.Tensor, numpy.array, or string/blobname): Image data global_step (int): Global step value to record Shape: img_tensor: :math:`(C, H, W)`. Use ``torchvision.utils.make_grid()`` to prepare it is a good idea. C = colors (can be 1 - grayscale, 3 - RGB, 4 - RGBA) """ img_tensor = make_np(img_tensor) self.vis.image(img_tensor, opts={'title': tag, 'caption': caption}) @_check_connection def add_figure(self, tag, figure, global_step=None, close=True): """Render matplotlib figure into an image and add it to summary. Note that this requires the ``matplotlib`` package. Args: tag (string): Data identifier figure (matplotlib.pyplot.figure) or list of figures: figure or a list of figures global_step (int): Global step value to record close (bool): Flag to automatically close the figure """ self.add_image(tag, figure_to_image(figure, close), global_step) @_check_connection def add_video(self, tag, vid_tensor, global_step=None, fps=4): """Add video data to summary. Note that this requires the ``moviepy`` package. Args: tag (string): Data identifier vid_tensor (torch.Tensor): Video data, the pixel value should in [0, 1] global_step (int): Global step value to record fps (float or int): Frames per second Shape: vid_tensor: :math:`(B, C, T, H, W)`. (if following tensorboardX format) vid_tensor: :math:`(T, H, W, C)`. (if following visdom format) B = batches, C = colors (1, 3, or 4), T = time frames, H = height, W = width """ shape = vid_tensor.shape # A batch of videos (tensorboardX format) is a 5D tensor if len(shape) > 4: for i in range(shape[0]): # Reshape each video to Visdom's (T x H x W x C) and write each video # TODO: reverse the logic here, shoudl do the permutation in numpy if isinstance(vid_tensor, np.ndarray): import torch ind_vid = torch.from_numpy( vid_tensor[i, :, :, :, :]).permute(1, 2, 3, 0) else: ind_vid = vid_tensor[i, :, :, :, :].permute(1, 2, 3, 0) scale_factor = 255 # Visdom looks for .ndim attr, this is something raw Tensors don't have # Cast to Numpy array to get .ndim attr ind_vid = ind_vid.numpy() ind_vid = (ind_vid * scale_factor).astype(np.uint8) assert ind_vid.shape[3] in [1, 3, 4], \ 'Visdom requires the last dimension to be color, which can be 1 (grayscale), 3 (RGB) or 4 (RGBA)' self.vis.video(tensor=ind_vid, opts={'fps': fps}) else: self.vis.video(tensor=vid_tensor, opts={'fps': fps}) @_check_connection def add_audio(self, tag, snd_tensor, global_step=None, sample_rate=44100): """Add audio data to summary. Args: tag (string): Data identifier snd_tensor (torch.Tensor, numpy.array, or string/blobname): Sound data global_step (int): Global step value to record sample_rate (int): sample rate in Hz Shape: snd_tensor: :math:`(1, L)`. The values should lie between [-1, 1]. """ snd_tensor = make_np(snd_tensor) self.vis.audio(tensor=snd_tensor, opts={ 'sample_frequency': sample_rate}) @_check_connection def add_text(self, tag, text_string, global_step=None): """Add text data to summary. Args: tag (string): Data identifier text_string (string): String to save global_step (int): Global step value to record Examples:: writer.add_text('lstm', 'This is an lstm', 0) writer.add_text('rnn', 'This is an rnn', 10) """ if text_string is None: # Visdom doesn't support tags, write the tag as the text_string text_string = tag self.vis.text(text_string) @_check_connection def add_onnx_graph(self, prototxt): # TODO: Visdom doesn't support graph visualization yet, so this is a no-op return @_check_connection def add_graph(self, model, input_to_model=None, verbose=False, **kwargs): # TODO: Visdom doesn't support graph visualization yet, so this is a no-op return @_check_connection def add_embedding(self, mat, metadata=None, label_img=None, global_step=None, tag='default', metadata_header=None): # TODO: Visdom doesn't support embeddings yet, so this is a no-op return @_check_connection def add_pr_curve(self, tag, labels, predictions, global_step=None, num_thresholds=127, weights=None): """Adds precision recall curve. Args: tag (string): Data identifier labels (torch.Tensor, numpy.array, or string/blobname): Ground truth data. Binary label for each element. predictions (torch.Tensor, numpy.array, or string/blobname): The probability that an element be classified as true. Value should in [0, 1] global_step (int): Global step value to record num_thresholds (int): Number of thresholds used to draw the curve. """ labels, predictions = make_np(labels), make_np(predictions) raw_data = compute_curve(labels, predictions, num_thresholds, weights) # compute_curve returns np.stack((tp, fp, tn, fn, precision, recall)) # We want to access 'precision' and 'recall' precision, recall = raw_data[4, :], raw_data[5, :] self.vis.line( X=recall, Y=precision, name=tag, opts={ 'title': f'PR Curve for {tag}', 'xlabel': 'recall', 'ylabel': 'precision', }, ) @_check_connection def add_pr_curve_raw(self, tag, true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, global_step=None, num_thresholds=127, weights=None): """Adds precision recall curve with raw data. Args: tag (string): Data identifier true_positive_counts (torch.Tensor, numpy.array, or string/blobname): true positive counts false_positive_counts (torch.Tensor, numpy.array, or string/blobname): false positive counts true_negative_counts (torch.Tensor, numpy.array, or string/blobname): true negative counts false_negative_counts (torch.Tensor, numpy.array, or string/blobname): false negative counts precision (torch.Tensor, numpy.array, or string/blobname): precision recall (torch.Tensor, numpy.array, or string/blobname): recall global_step (int): Global step value to record num_thresholds (int): Number of thresholds used to draw the curve. see: https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/pr_curve/README.md """ precision, recall = make_np(precision), make_np(recall) self.vis.line( X=recall, Y=precision, name=tag, opts={ 'title': f'PR Curve for {tag}', 'xlabel': 'recall', 'ylabel': 'precision', }, ) def close(self): del self.vis del self.scalar_dict gc.collect() ================================================ FILE: tensorboardX/writer.py ================================================ """Provides an API for writing protocol buffers to event files to be consumed by TensorBoard for visualization.""" import atexit import contextlib import json import logging import os import time from typing import Optional, Union import numpy from .comet_utils import CometLogger from .embedding import append_pbtxt, make_mat, make_sprite, make_tsv from .event_file_writer import EventFileWriter from .onnx_graph import load_onnx_graph from .openvino_graph import load_openvino_graph from .proto import event_pb2, summary_pb2 from .proto.event_pb2 import Event, SessionLog from .summary import ( audio, custom_scalars, histogram, histogram_raw, hparams, image, image_boxes, mesh, pr_curve, pr_curve_raw, scalar, text, video, ) from .utils import figure_to_image logger = logging.getLogger(__name__) numpy_compatible = numpy.ndarray try: import torch numpy_compatible = torch.Tensor except ImportError: pass class DummyFileWriter: """A fake file writer that writes nothing to the disk. """ def __init__(self, logdir): self._logdir = logdir def get_logdir(self): """Returns the directory where event file will be written.""" return self._logdir def add_event(self, event, step=None, walltime=None): return def add_summary(self, summary, global_step=None, walltime=None): return def add_graph(self, graph_profile, walltime=None): return def add_onnx_graph(self, graph, walltime=None): return def flush(self): return def close(self): return def reopen(self): return @contextlib.contextmanager def use_metadata(self, *, global_step=None, walltime=None): yield self class FileWriter: """Writes protocol buffers to event files to be consumed by TensorBoard. The `FileWriter` class provides a mechanism to create an event file in a given directory and add summaries and events to it. The class updates the file contents asynchronously. This allows a training program to call methods to add data to the file directly from the training loop, without slowing down training. """ def __init__(self, logdir, max_queue=10, flush_secs=120, filename_suffix=''): """Creates a `FileWriter` and an event file. On construction the writer creates a new event file in `logdir`. The other arguments to the constructor control the asynchronous writes to the event file. Args: logdir: A string. Directory where event file will be written. max_queue: Integer. Size of the queue for pending events and summaries before one of the 'add' calls forces a flush to disk. Default is ten items. flush_secs: Number. How often, in seconds, to flush the pending events and summaries to disk. Default is every two minutes. filename_suffix: A string. Suffix added to all event filenames in the logdir directory. More details on filename construction in tensorboard.summary.writer.event_file_writer.EventFileWriter. """ # Sometimes PosixPath is passed in and we need to coerce it to # a string in all cases # TODO: See if we can remove this in the future if we are # actually the ones passing in a PosixPath logdir = str(logdir) self.event_writer = EventFileWriter( logdir, max_queue, flush_secs, filename_suffix) def cleanup(): self.event_writer.close() atexit.register(cleanup) self._default_metadata = {} def get_logdir(self): """Returns the directory where event file will be written.""" return self.event_writer.get_logdir() def add_event(self, event, step=None, walltime=None): """Adds an event to the event file. Args: event: An `Event` protocol buffer. step: Number. Optional global step value for training process to record with the event. walltime: float. Optional walltime to override the default (current) walltime (from time.time()) """ walltime = ( self._default_metadata.get("walltime", time.time()) if walltime is None else walltime ) if walltime is not None: event.wall_time = walltime step = self._default_metadata.get("global_step") if step is None else step if step is not None: # Make sure step is converted from numpy or other formats # since protobuf might not convert depending on version event.step = int(step) self.event_writer.add_event(event) def add_summary(self, summary, global_step=None, walltime=None): """Adds a `Summary` protocol buffer to the event file. This method wraps the provided summary in an `Event` protocol buffer and adds it to the event file. Args: summary: A `Summary` protocol buffer. global_step: Number. Optional global step value for training process to record with the summary. walltime: float. Optional walltime to override the default (current) walltime (from time.time()) """ event = event_pb2.Event(summary=summary) self.add_event(event, global_step, walltime) def add_graph(self, graph_profile, walltime=None): """Adds a `Graph` and step stats protocol buffer to the event file. Args: graph_profile: A `Graph` and step stats protocol buffer. walltime: float. Optional walltime to override the default (current) walltime (from time.time()) seconds after epoch """ graph = graph_profile[0] stepstats = graph_profile[1] event = event_pb2.Event(graph_def=graph.SerializeToString()) self.add_event(event, None, walltime) trm = event_pb2.TaggedRunMetadata( tag='profiler', run_metadata=stepstats.SerializeToString()) event = event_pb2.Event(tagged_run_metadata=trm) self.add_event(event, None, walltime) def add_onnx_graph(self, graph, walltime=None): """Adds a `Graph` protocol buffer to the event file. Args: graph: A `Graph` protocol buffer. walltime: float. Optional walltime to override the default (current) _get_file_writerfrom time.time()) """ event = event_pb2.Event(graph_def=graph.SerializeToString()) self.add_event(event, None, walltime) def add_openvino_graph(self, graph, walltime=None): """Adds a `Graph` protocol buffer to the event file. Args: graph: A `Graph` protocol buffer. walltime: float. Optional walltime to override the default (current) _get_file_writerfrom time.time()) """ event = event_pb2.Event(graph_def=graph.SerializeToString()) self.add_event(event, None, walltime) def flush(self): """Flushes the event file to disk. Call this method to make sure that all pending events have been written to disk. """ self.event_writer.flush() def close(self): """Flushes the event file to disk and close the file. Call this method when you do not need the summary writer anymore. """ self.event_writer.close() def reopen(self): """Reopens the EventFileWriter. Can be called after `close()` to add more events in the same directory. The events will go into a new events file. Does nothing if the EventFileWriter was not closed. """ self.event_writer.reopen() @contextlib.contextmanager def use_metadata(self, *, global_step=None, walltime=None): """Context manager to temporarily set default metadata for all enclosed :meth:`add_event` calls. Args: global_step: Global step value to record walltime: Walltime to record (defaults to time.time()) Examples:: with writer.use_metadata(global_step=10): writer.add_event(event) """ assert not self._default_metadata, "Default metadata is already set." assert ( global_step is not None or walltime is not None ), "At least one of `global_step` or `walltime` must be provided." self._default_metadata = {"global_step": global_step, "walltime": walltime} yield self self._default_metadata = {} class SummaryWriter: """Writes entries directly to event files in the logdir to be consumed by TensorBoard. The `SummaryWriter` class provides a high-level API to create an event file in a given directory and add summaries and events to it. The class updates the file contents asynchronously. This allows a training program to call methods to add data to the file directly from the training loop, without slowing down training. """ def __init__( self, logdir: Optional[str] = None, comment: Optional[str] = "", purge_step: Optional[int] = None, max_queue: Optional[int] = 10, flush_secs: Optional[int] = 120, filename_suffix: Optional[str] = '', write_to_disk: Optional[bool] = True, log_dir: Optional[str] = None, comet_config: Optional[dict] = {"disabled": True}, **kwargs): """Creates a `SummaryWriter` that will write out events and summaries to the event file. Args: logdir: Save directory location. Default is runs/**CURRENT_DATETIME_HOSTNAME**, which changes after each run. Use hierarchical folder structure to compare between runs easily. e.g. pass in 'runs/exp1', 'runs/exp2', etc. for each new experiment to compare across them. comment: Comment logdir suffix appended to the default ``logdir``. If ``logdir`` is assigned, this argument has no effect. purge_step: When logging crashes at step :math:`T+X` and restarts at step :math:`T`, any events whose global_step larger or equal to :math:`T` will be purged and hidden from TensorBoard. Note that crashed and resumed experiments should have the same ``logdir``. max_queue: Size of the queue for pending events and summaries before one of the 'add' calls forces a flush to disk. Default is ten items. flush_secs: How often, in seconds, to flush the pending events and summaries to disk. Default is every two minutes. filename_suffix: Suffix added to all event filenames in the logdir directory. More details on filename construction in tensorboard.summary.writer.event_file_writer.EventFileWriter. write_to_disk: If pass `False`, SummaryWriter will not write to disk. comet_config: A comet config dictionary. Contains parameters that need to be passed to comet like workspace, project_name, api_key, disabled etc Examples:: from tensorboardX import SummaryWriter # create a summary writer with automatically generated folder name. writer = SummaryWriter() # folder location: runs/May04_22-14-54_s-MacBook-Pro.local/ # create a summary writer using the specified folder name. writer = SummaryWriter("my_experiment") # folder location: my_experiment # create a summary writer with comment appended. writer = SummaryWriter(comment="LR_0.1_BATCH_16") # folder location: runs/May04_22-14-54_s-MacBook-Pro.localLR_0.1_BATCH_16/ """ if log_dir is not None and logdir is None: logdir = log_dir if not logdir: import socket from datetime import datetime current_time = datetime.now().strftime('%b%d_%H-%M-%S') logdir = os.path.join( 'runs', current_time + '_' + socket.gethostname() + comment) self.logdir = logdir self.purge_step = purge_step self._max_queue = max_queue self._flush_secs = flush_secs self._filename_suffix = filename_suffix self._write_to_disk = write_to_disk self._comet_config = comet_config self._comet_logger = None self.kwargs = kwargs # Initialize the file writers, but they can be cleared out on close # and recreated later as needed. self.file_writer = self.all_writers = None self._get_file_writer() # Create default bins for histograms, see generate_testdata.py in tensorflow/tensorboard v = 1E-12 buckets = [] neg_buckets = [] while v < 1E20: buckets.append(v) neg_buckets.append(-v) v *= 1.1 self.default_bins = neg_buckets[::-1] + [0] + buckets self.scalar_dict = {} self._default_metadata = {} def __append_to_scalar_dict(self, tag, scalar_value, global_step, timestamp): """This adds an entry to the self.scalar_dict datastructure with format {writer_id : [[timestamp, step, value], ...], ...}. """ from .x2num import make_np if tag not in self.scalar_dict: self.scalar_dict[tag] = [] self.scalar_dict[tag].append( [timestamp, global_step, float(make_np(scalar_value).squeeze())]) def _get_file_writer(self): """Returns the default FileWriter instance. Recreates it if closed.""" if not self._write_to_disk: self.file_writer = DummyFileWriter(logdir=self.logdir) self.all_writers = {self.file_writer.get_logdir(): self.file_writer} return self.file_writer if self.all_writers is None or self.file_writer is None: self.file_writer = FileWriter(logdir=self.logdir, max_queue=self._max_queue, flush_secs=self._flush_secs, filename_suffix=self._filename_suffix, **self.kwargs) if self.purge_step is not None: self.file_writer.add_event( Event(step=self.purge_step, file_version='brain.Event:2')) self.file_writer.add_event( Event(step=self.purge_step, session_log=SessionLog(status=SessionLog.START))) self.all_writers = {self.file_writer.get_logdir(): self.file_writer} return self.file_writer def _get_comet_logger(self): """Returns a comet logger instance. Recreates it if closed.""" if self._comet_logger is None: self._comet_logger = CometLogger(self._comet_config) return self._comet_logger def add_hparams( self, hparam_dict: dict[str, Union[bool, str, float, int]], metric_dict: dict[str, float], name: Optional[str] = None, global_step: Optional[int] = None): """Add a set of hyperparameters to be compared in tensorboard. Args: hparam_dict: Each key-value pair in the dictionary is the name of the hyper parameter and it's corresponding value. metric_dict: Each key-value pair in the dictionary is the name of the metric and it's corresponding value. Note that the key used here should be unique in the tensorboard record. Otherwise the value you added by `add_scalar` will be displayed in hparam plugin. In most cases, this is unwanted. name: Personnalised name of the hparam session global_step: Current time step Examples:: from tensorboardX import SummaryWriter with SummaryWriter() as w: for i in range(5): w.add_hparams({'lr': 0.1*i, 'bsize': i}, {'hparam/accuracy': 10*i, 'hparam/loss': 10*i}) Expected result: .. image:: _static/img/tensorboard/add_hparam.png :scale: 50 % """ if type(hparam_dict) is not dict or type(metric_dict) is not dict: raise TypeError('hparam_dict and metric_dict should be dictionary.') exp, ssi, sei = hparams(hparam_dict, metric_dict) if not name: name = str(time.time()) with SummaryWriter(logdir=os.path.join(self.file_writer.get_logdir(), name)) as w_hp: w_hp.file_writer.add_summary(exp) w_hp.file_writer.add_summary(ssi) w_hp.file_writer.add_summary(sei) for k, v in metric_dict.items(): w_hp.add_scalar(k, v, global_step) self._get_comet_logger().log_parameters(hparam_dict, step=global_step) def add_scalar( self, tag: str, scalar_value: Union[float, numpy_compatible], global_step: Optional[int] = None, walltime: Optional[float] = None, display_name: Optional[str] = "", summary_description: Optional[str] = ""): """Add scalar data to summary. Args: tag: Data identifier scalar_value: Value to be logged in tensorboard global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event display_name: The title of the plot. If empty string is passed, `tag` will be used. summary_description: The comprehensive text that will showed by clicking the information icon on TensorBoard. Examples:: from tensorboardX import SummaryWriter writer = SummaryWriter() x = range(100) for i in x: writer.add_scalar('y=2x', i * 2, i) writer.close() Expected result: .. image:: _static/img/tensorboard/add_scalar.png :scale: 50 % """ self._get_file_writer().add_summary( scalar(tag, scalar_value, display_name, summary_description), global_step, walltime) self._get_comet_logger().log_metric(tag, display_name, scalar_value, global_step) def add_scalars( self, main_tag: str, tag_scalar_dict: dict[str, float], global_step: Optional[int] = None, walltime: Optional[float] = None): """Adds many scalar data to summary. Note that this function also keeps logged scalars in memory. In extreme case it explodes your RAM. Args: main_tag: The parent name for the tags tag_scalar_dict: Key-value pair storing the tag and corresponding values global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event Examples:: from tensorboardX import SummaryWriter writer = SummaryWriter() r = 5 for i in range(100): writer.add_scalars('run_14h', {'xsinx':i*np.sin(i/r), 'xcosx':i*np.cos(i/r), 'tanx': np.tan(i/r)}, i) writer.close() # This call adds three values to the same scalar plot with the tag # 'run_14h' in TensorBoard's scalar section. Expected result: .. image:: _static/img/tensorboard/add_scalars.png :scale: 50 % """ walltime = time.time() if walltime is None else walltime fw_logdir = self._get_file_writer().get_logdir() for tag, scalar_value in tag_scalar_dict.items(): fw_tag = os.path.join(str(fw_logdir), main_tag, tag) if fw_tag in self.all_writers: fw = self.all_writers[fw_tag] else: fw = FileWriter(logdir=fw_tag) self.all_writers[fw_tag] = fw fw.add_summary(scalar(main_tag, scalar_value), global_step, walltime) self.__append_to_scalar_dict( fw_tag, scalar_value, global_step, walltime) self._get_comet_logger().log_metrics(tag_scalar_dict, main_tag, step=global_step) def export_scalars_to_json(self, path): """Exports to the given path an ASCII file containing all the scalars written so far by this instance, with the following format: {writer_id : [[timestamp, step, value], ...], ...} The scalars saved by ``add_scalars()`` will be flushed after export. """ with open(path, "w") as f: json.dump(self.scalar_dict, f) self.scalar_dict = {} def add_histogram( self, tag: str, values: numpy_compatible, global_step: Optional[int] = None, bins: Optional[str] = 'tensorflow', walltime: Optional[float] = None, max_bins=None): """Add histogram to summary. Args: tag: Data identifier values: Values to build histogram global_step: Global step value to record bins: One of {'tensorflow','auto', 'fd', ...}. This determines how the bins are made. You can find other options in the `numpy reference `_. walltime: Optional override default walltime (time.time()) of event Examples:: from tensorboardX import SummaryWriter import numpy as np writer = SummaryWriter() for i in range(10): x = np.random.random(1000) writer.add_histogram('distribution centers', x + i, i) writer.close() Expected result: .. image:: _static/img/tensorboard/add_histogram.png :scale: 50 % """ if isinstance(bins, str) and bins == 'tensorflow': bins = self.default_bins self._get_file_writer().add_summary( histogram(tag, values, bins, max_bins=max_bins), global_step, walltime) self._get_comet_logger().log_histogram(values, tag, global_step) def add_histogram_raw( self, tag: str, min, max, num, sum, sum_squares, bucket_limits, bucket_counts, global_step: Optional[int] = None, walltime: Optional[float] = None): """Adds histogram with raw data. Args: tag: Data identifier min (float or int): Min value max (float or int): Max value num (int): Number of values sum (float or int): Sum of all values sum_squares (float or int): Sum of squares for all values bucket_limits (torch.Tensor, numpy.array): Upper value per bucket, note that the bucket_limits returned from `np.histogram` has one more element. See the comment in the following example. bucket_counts (torch.Tensor, numpy.array): Number of values per bucket global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event Examples:: import numpy as np dummy_data = [] for idx, value in enumerate(range(30)): dummy_data += [idx + 0.001] * value values = np.array(dummy_data).astype(float).reshape(-1) counts, limits = np.histogram(values) sum_sq = values.dot(values) with SummaryWriter() as summary_writer: summary_writer.add_histogram_raw( tag='hist_dummy_data', min=values.min(), max=values.max(), num=len(values), sum=values.sum(), sum_squares=sum_sq, bucket_limits=limits[1:].tolist(), # <- note here. bucket_counts=counts.tolist(), global_step=0) """ if len(bucket_limits) != len(bucket_counts): raise ValueError('len(bucket_limits) != len(bucket_counts), see the document.') summary = histogram_raw(tag, min, max, num, sum, sum_squares, bucket_limits, bucket_counts) self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_histogram_raw(tag, summary, step=global_step) def add_image( self, tag: str, img_tensor: numpy_compatible, global_step: Optional[int] = None, walltime: Optional[float] = None, dataformats: Optional[str] = 'CHW'): """Add image data to summary. Note that this requires the ``pillow`` package. Args: tag: Data identifier img_tensor: An `uint8` or `float` Tensor of shape ` [channel, height, width]` where `channel` is 1, 3, or 4. The elements in img_tensor can either have values in [0, 1] (float32) or [0, 255] (uint8). Users are responsible to scale the data in the correct range/type. global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event. dataformats: This parameter specifies the meaning of each dimension of the input tensor. Shape: img_tensor: Default is :math:`(3, H, W)`. You can use ``torchvision.utils.make_grid()`` to convert a batch of tensor into 3xHxW format or use ``add_images()`` and let us do the job. Tensor with :math:`(1, H, W)`, :math:`(H, W)`, :math:`(H, W, 3)` is also suitible as long as corresponding ``dataformats`` argument is passed. e.g. CHW, HWC, HW. Examples:: from tensorboardX import SummaryWriter import numpy as np img = np.zeros((3, 100, 100)) img[0] = np.arange(0, 10000).reshape(100, 100) / 10000 img[1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 img_HWC = np.zeros((100, 100, 3)) img_HWC[:, :, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 img_HWC[:, :, 1] = 1 - np.arange(0, 10000).reshape(100, 100) / 10000 writer = SummaryWriter() writer.add_image('my_image', img, 0) # If you have non-default dimension setting, set the dataformats argument. writer.add_image('my_image_HWC', img_HWC, 0, dataformats='HWC') writer.close() Expected result: .. image:: _static/img/tensorboard/add_image.png :scale: 50 % """ summary = image(tag, img_tensor, dataformats=dataformats) encoded_image_string = summary.value[0].image.encoded_image_string self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_image_encoded(encoded_image_string, tag, step=global_step) def add_images( self, tag: str, img_tensor: numpy_compatible, global_step: Optional[int] = None, walltime: Optional[float] = None, dataformats: Optional[str] = 'NCHW'): """Add batched (4D) image data to summary. Besides passing 4D (NCHW) tensor, you can also pass a list of tensors of the same size. In this case, the ``dataformats`` should be `CHW` or `HWC`. Note that this requires the ``pillow`` package. Args: tag: Data identifier img_tensor: Image data The elements in img_tensor can either have values in [0, 1] (float32) or [0, 255] (uint8). Users are responsible to scale the data in the correct range/type. global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event Shape: img_tensor: Default is :math:`(N, 3, H, W)`. If ``dataformats`` is specified, other shape will be accepted. e.g. NCHW or NHWC. Examples:: from tensorboardX import SummaryWriter import numpy as np img_batch = np.zeros((16, 3, 100, 100)) for i in range(16): img_batch[i, 0] = np.arange(0, 10000).reshape(100, 100) / 10000 / 16 * i img_batch[i, 1] = (1 - np.arange(0, 10000).reshape(100, 100) / 10000) / 16 * i writer = SummaryWriter() writer.add_images('my_image_batch', img_batch, 0) writer.close() Expected result: .. image:: _static/img/tensorboard/add_images.png :scale: 30 % """ if isinstance(img_tensor, list): # a list of tensors in CHW or HWC if dataformats.upper() != 'CHW' and dataformats.upper() != 'HWC': print('A list of image is passed, but the dataformat is neither CHW nor HWC.') print('Nothing is written.') return import torch try: img_tensor = torch.stack(img_tensor, 0) except TypeError: import numpy as np img_tensor = np.stack(img_tensor, 0) dataformats = 'N' + dataformats summary = image(tag, img_tensor, dataformats=dataformats) encoded_image_string = summary.value[0].image.encoded_image_string self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_image_encoded(encoded_image_string, tag, step=global_step) def add_image_with_boxes( self, tag: str, img_tensor: numpy_compatible, box_tensor: numpy_compatible, global_step: Optional[int] = None, walltime: Optional[float] = None, dataformats: Optional[str] = 'CHW', labels: Optional[list[str]] = None, **kwargs): """Add image and draw bounding boxes on the image. Args: tag: Data identifier img_tensor: Image data box_tensor: Box data (for detected objects) box should be represented as [x1, y1, x2, y2]. global_step: Global step value to record walltime: override default walltime (time.time()) of event labels: The strings to be show on each bounding box. Shape: img_tensor: Default is :math:`(3, H, W)`. It can be specified with ``dataformats`` argument. e.g. CHW or HWC box_tensor: (torch.Tensor, numpy.array, or string/blobname): NX4, where N is the number of boxes and each 4 elements in a row represents (xmin, ymin, xmax, ymax). """ if labels is not None: if isinstance(labels, str): labels = [labels] if len(labels) != box_tensor.shape[0]: logger.warning('Number of labels do not equal to number of box, skip the labels.') labels = None summary = image_boxes( tag, img_tensor, box_tensor, dataformats=dataformats, labels=labels, **kwargs) encoded_image_string = summary.value[0].image.encoded_image_string self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_image_encoded(encoded_image_string, tag, step=global_step) def add_figure( self, tag: str, figure, global_step: Optional[int] = None, close: Optional[bool] = True, walltime: Optional[float] = None): """Render matplotlib figure into an image and add it to summary. Note that this requires the ``matplotlib`` package. Args: tag: Data identifier figure (matplotlib.pyplot.figure) or list of figures: Figure or a list of figures global_step: Global step value to record close: Flag to automatically close the figure walltime: Override default walltime (time.time()) of event """ if isinstance(figure, list): self.add_image(tag, figure_to_image(figure, close), global_step, walltime, dataformats='NCHW') else: self.add_image(tag, figure_to_image(figure, close), global_step, walltime, dataformats='CHW') def add_video( self, tag: str, vid_tensor: numpy_compatible, global_step: Optional[int] = None, fps: Optional[Union[int, float]] = 4, walltime: Optional[float] = None, dataformats: Optional[str] = 'NTCHW'): """Add video data to summary. Note that this requires the ``moviepy`` package. Args: tag: Data identifier vid_tensor: Video data global_step: Global step value to record fps: Frames per second walltime: Optional override default walltime (time.time()) of event dataformats: Specify different permutation of the video tensor Shape: vid_tensor: :math:`(N, T, C, H, W)`. The values should lie in [0, 255] for type `uint8` or [0, 1] for type `float`. """ summary = video(tag, vid_tensor, fps, dataformats=dataformats) encoded_image_string = summary.value[0].image.encoded_image_string self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_image_encoded(encoded_image_string, tag, step=global_step) def add_audio( self, tag: str, snd_tensor: numpy_compatible, global_step: Optional[int] = None, sample_rate: Optional[int] = 44100, walltime: Optional[float] = None): """Add audio data to summary. Args: tag: Data identifier snd_tensor: Sound data global_step: Global step value to record sample_rate: sample rate in Hz walltime: Optional override default walltime (time.time()) of event Shape: snd_tensor: :math:`(L, C)`. The values should lie between [-1, 1]. Where `L` is the number of audio frames and `C` is the channel. Set channel equals to 2 for stereo. """ self._get_file_writer().add_summary( audio(tag, snd_tensor, sample_rate=sample_rate), global_step, walltime) self._get_comet_logger().log_audio(snd_tensor, sample_rate, tag, step=global_step) def add_text( self, tag: str, text_string: str, global_step: Optional[int] = None, walltime: Optional[float] = None): """Add text data to summary. Args: tag: Data identifier text_string: String to save global_step: Global step value to record walltime: Optional override default walltime (time.time()) of event Examples:: writer.add_text('lstm', 'This is an lstm', 0) writer.add_text('rnn', 'This is an rnn', 10) """ self._get_file_writer().add_summary( text(tag, text_string), global_step, walltime) self._get_comet_logger().log_text(text_string, global_step) def add_onnx_graph( self, onnx_model_file): """Add onnx graph to TensorBoard. Args: onnx_model_file (string): The path to the onnx model. """ self._get_file_writer().add_onnx_graph(load_onnx_graph(onnx_model_file)) self._get_comet_logger().log_asset(onnx_model_file) def add_openvino_graph( self, xmlname): """Add openvino graph to TensorBoard. Args: xmlname (string): The path to the openvino model. (the xml file) """ self._get_file_writer().add_openvino_graph(load_openvino_graph(xmlname)) self._get_comet_logger().log_asset(xmlname) def add_graph( self, model, input_to_model=None, verbose=False, use_strict_trace=True): """Add graph data to summary. The graph is actually processed by `torch.utils.tensorboard.add_graph()` Args: model (torch.nn.Module): Model to draw. input_to_model (torch.Tensor or list of torch.Tensor): A variable or a tuple of variables to be fed. verbose (bool): Whether to print graph structure in console. use_strict_trace (bool): Whether to pass keyword argument `strict` to `torch.jit.trace`. Pass False when you want the tracer to record your mutable container types (list, dict) """ from torch.utils.tensorboard._pytorch_graph import graph self._get_file_writer().add_graph(graph(model, input_to_model, verbose, use_strict_trace=use_strict_trace)) @staticmethod def _encode(rawstr): # I'd use urllib but, I'm unsure about the differences from python3 to python2, etc. retval = rawstr retval = retval.replace("%", "%{:02x}".format(ord("%"))) retval = retval.replace("/", "%{:02x}".format(ord("/"))) retval = retval.replace("\\", "%{:02x}".format(ord("\\"))) return retval def add_embedding( self, mat: numpy_compatible, metadata=None, label_img: numpy_compatible = None, global_step: Optional[int] = None, tag='default', metadata_header=None): r"""Add embedding projector data to summary. Args: mat: A matrix which each row is the feature vector of the data point metadata (list): A list of labels, each element will be converted to string. label_img: Images correspond to each data point. Each image should be square sized. The amount and the size of the images are limited by the Tensorboard frontend, see limits below. global_step: Global step value to record tag: Name for the embedding Shape: mat: :math:`(N, D)`, where N is number of data and D is feature dimension label_img: :math:`(N, C, H, W)`, where `Height` should be equal to `Width`. Also, :math:`\sqrt{N}*W` must be less than or equal to 8192, so that the generated sprite image can be loaded by the Tensorboard frontend (see `tensorboardX#516 `_ for more). Examples:: import keyword import torch meta = [] while len(meta)<100: meta = meta+keyword.kwlist # get some strings meta = meta[:100] for i, v in enumerate(meta): meta[i] = v+str(i) label_img = torch.rand(100, 3, 32, 32) for i in range(100): label_img[i]*=i/100.0 writer.add_embedding(torch.randn(100, 5), metadata=meta, label_img=label_img) writer.add_embedding(torch.randn(100, 5), label_img=label_img) writer.add_embedding(torch.randn(100, 5), metadata=meta) """ # programmer's note: This function has nothing to do with event files. # The hard-coded projector_config.pbtxt is the only source for TensorBoard's # current implementation. (as of Dec. 2019) from .x2num import make_np mat = make_np(mat) if global_step is None: global_step = 0 # clear pbtxt? # Maybe we should encode the tag so slashes don't trip us up? # I don't think this will mess us up, but better safe than sorry. subdir = f"{str(global_step).zfill(5)}/{self._encode(tag)}" save_path = os.path.join(self._get_file_writer().get_logdir(), subdir) try: os.makedirs(save_path) except OSError: print( 'warning: Embedding dir exists, did you set global_step for add_embedding()?') if metadata is not None: assert mat.shape[0] == len( metadata), '#labels should equal with #data points' make_tsv(metadata, save_path, metadata_header=metadata_header) if label_img is not None: assert mat.shape[0] == label_img.shape[0], '#images should equal with #data points' assert label_img.shape[2] == label_img.shape[3], 'Image should be square, see tensorflow/tensorboard#670' make_sprite(label_img, save_path) assert mat.ndim == 2, 'mat should be 2D, where mat.size(0) is the number of data points' make_mat(mat, save_path) # new funcion to append to the config file a new embedding append_pbtxt(metadata, label_img, self._get_file_writer().get_logdir(), subdir, global_step, tag) template_filename = f'{tag}.json' if tag is not None else None self._get_comet_logger().log_embedding(mat, metadata, label_img, template_filename=template_filename) def add_pr_curve( self, tag: str, labels: numpy_compatible, predictions: numpy_compatible, global_step: Optional[int] = None, num_thresholds: Optional[int] = 127, weights=None, walltime: Optional[float] = None): """Adds precision recall curve. Plotting a precision-recall curve lets you understand your model's performance under different threshold settings. With this function, you provide the ground truth labeling (T/F) and prediction confidence (usually the output of your model) for each target. The TensorBoard UI will let you choose the threshold interactively. Args: tag: Data identifier labels: Ground truth data. Binary label for each element. predictions: The probability that an element be classified as true. Value should in [0, 1] global_step: Global step value to record num_thresholds: Number of thresholds used to draw the curve. walltime: Override default walltime (time.time()) of event Examples:: from tensorboardX import SummaryWriter import numpy as np labels = np.random.randint(2, size=100) # binary label predictions = np.random.rand(100) writer = SummaryWriter() writer.add_pr_curve('pr_curve', labels, predictions, 0) writer.close() """ from .x2num import make_np labels, predictions = make_np(labels), make_np(predictions) summary = pr_curve(tag, labels, predictions, num_thresholds, weights) self._get_file_writer().add_summary( summary, global_step, walltime) self._get_comet_logger().log_pr_data(tag, summary, num_thresholds, step=global_step) def add_pr_curve_raw( self, tag: str, true_positive_counts: numpy_compatible, false_positive_counts: numpy_compatible, true_negative_counts: numpy_compatible, false_negative_counts: numpy_compatible, precision: numpy_compatible, recall: numpy_compatible, global_step: Optional[int] = None, num_thresholds: Optional[int] = 127, weights=None, walltime: Optional[float] = None): """Adds precision recall curve with raw data. Args: tag: Data identifier global_step: Global step value to record num_thresholds (int): Number of thresholds used to draw the curve. walltime: Optional override default walltime (time.time()) of event see: `Tensorboard refenence `_ """ self._get_file_writer().add_summary( pr_curve_raw(tag, true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, num_thresholds, weights), global_step, walltime) self._get_comet_logger().log_pr_raw_data(tag, step=global_step, true_positive_counts=true_positive_counts, false_positive_counts=false_positive_counts, true_negative_counts=true_negative_counts, false_negative_counts=false_negative_counts, precision=precision, recall=recall, num_thresholds=num_thresholds, weights=weights) def add_custom_scalars_multilinechart( self, tags: list[str], category: str = 'default', title: str = 'untitled'): """Shorthand for creating multilinechart. Similar to ``add_custom_scalars()``, but the only necessary argument is *tags*. Args: tags: list of tags that have been used in ``add_scalar()`` Examples:: writer.add_custom_scalars_multilinechart(['twse/0050', 'twse/2330']) """ layout = {category: {title: ['Multiline', tags]}} self._get_file_writer().add_summary(custom_scalars(layout)) def add_custom_scalars_marginchart( self, tags: list[str], category: str = 'default', title: str = 'untitled'): """Shorthand for creating marginchart. Similar to ``add_custom_scalars()``, but the only necessary argument is *tags*, which should have exactly 3 elements. Args: tags: list of tags that have been used in ``add_scalar()`` Examples:: writer.add_custom_scalars_marginchart(['twse/0050', 'twse/2330', 'twse/2006']) """ assert len(tags) == 3 layout = {category: {title: ['Margin', tags]}} self._get_file_writer().add_summary(custom_scalars(layout)) def add_custom_scalars( self, layout: dict[str, dict[str, list]]): """Create special chart by collecting charts tags in 'scalars'. Note that this function can only be called once for each SummaryWriter() object. Because it only provides metadata to tensorboard, the function can be called before or after the training loop. See ``examples/demo_custom_scalars.py`` for more. Args: layout: {categoryName: *charts*}, where *charts* is also a dictionary {chartName: *ListOfProperties*}. The first element in *ListOfProperties* is the chart's type (one of **Multiline** or **Margin**) and the second element should be a list containing the tags you have used in add_scalar function, which will be collected into the new chart. Examples:: layout = {'Taiwan':{'twse':['Multiline',['twse/0050', 'twse/2330']]}, 'USA':{ 'dow':['Margin', ['dow/aaa', 'dow/bbb', 'dow/ccc']], 'nasdaq':['Margin', ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}} writer.add_custom_scalars(layout) """ self._get_file_writer().add_summary(custom_scalars(layout)) def add_mesh( self, tag: str, vertices: numpy_compatible, colors: numpy_compatible = None, faces: numpy_compatible = None, config_dict=None, global_step: Optional[int] = None, walltime: Optional[float] = None): """Add meshes or 3D point clouds to TensorBoard. The visualization is based on Three.js, so it allows users to interact with the rendered object. Besides the basic definitions such as vertices, faces, users can further provide camera parameter, lighting condition, etc. Please check https://threejs.org/docs/index.html#manual/en/introduction/Creating-a-scene for advanced usage. Args: tag: Data identifier vertices: List of the 3D coordinates of vertices. colors: Colors for each vertex faces: Indices of vertices within each triangle. (Optional) config_dict: Dictionary with ThreeJS classes names and configuration. global_step: Global step value to record walltime: Optional override default walltime (time.time()) seconds after epoch of event Shape: vertices: :math:`(B, N, 3)`. (batch, number_of_vertices, channels). If Nothing show on tensorboard, try normalizing the values to [-1, 1]. colors: :math:`(B, N, 3)`. The values should lie in [0, 255]. faces: :math:`(B, N, 3)`. The values should lie in [0, number_of_vertices] for type `uint8`. Expected result after running ``examples/demo_mesh.py``: .. image:: _static/img/tensorboard/add_mesh.png :scale: 30 % """ self._get_file_writer().add_summary(mesh(tag, vertices, colors, faces, config_dict), global_step, walltime) self._get_comet_logger().log_mesh(tag, vertices, colors, faces, config_dict, global_step, walltime) def close(self): """Close the current SummaryWriter. This call flushes the unfinished write operation. Use context manager (with statement) whenever it's possible. """ if self.all_writers is None: return # ignore double close for writer in self.all_writers.values(): writer.flush() writer.close() self.file_writer = self.all_writers = None self._get_comet_logger().end() self._comet_logger = None def flush(self): """Force the data in memory to be flushed to disk. Use this call if tensorboard does not update reqularly. Another way is to set the `flush_secs` when creating the SummaryWriter. """ if self.all_writers is None: return # ignore double close for writer in self.all_writers.values(): writer.flush() def __enter__(self): return self def __exit__(self, exc_type, exc_val, exc_tb): self.close() @contextlib.contextmanager def use_metadata(self, *, global_step=None, walltime=None): """Context manager to temporarily set default metadata for all enclosed :meth:`add_*` calls. Args: global_step: Global step value to record walltime: Walltime to record (defaults to time.time()) Examples:: with writer.use_metadata(global_step=10): writer.add_scalar("loss", 3.0) """ with self._get_file_writer().use_metadata(global_step=global_step, walltime=walltime): yield self ================================================ FILE: tensorboardX/x2num.py ================================================ # DO NOT alter/distruct/free input object ! import logging import numpy as np logger = logging.getLogger(__name__) def check_nan(array): tmp = np.sum(array) if np.isnan(tmp) or np.isinf(tmp): logger.warning('NaN or Inf found in input tensor.') return array def make_np(x): if isinstance(x, list): return check_nan(np.array(x)) if isinstance(x, np.ndarray): return check_nan(x) if np.isscalar(x): return check_nan(np.array([x])) if 'torch' in str(type(x)): return check_nan(prepare_pytorch(x)) if 'chainer' in str(type(x)): return check_nan(prepare_chainer(x)) if 'mxnet' in str(type(x)): return check_nan(prepare_mxnet(x)) if 'jax' in str(type(x)): return check_nan(np.array(x)) if 'paddle' in str(type(x)): return check_nan(np.array(x)) raise NotImplementedError( f'Got {type(x)}, but expected numpy array or torch tensor.') def prepare_pytorch(x): import torch if isinstance(x, torch.autograd.Variable): x = x.data x = x.cpu().numpy() return x def prepare_theano(x): import theano pass def prepare_mxnet(x): x = x.asnumpy() return x def prepare_chainer(x): import chainer x = chainer.cuda.to_cpu(x.data) return x ================================================ FILE: test-requirements.txt ================================================ flake8 pytest torch torchvision protobuf==4.22.3 numpy tensorboard boto3 matplotlib moto<5 soundfile visdom onnx pytest-cov imageio==2.27 # moviepy bug ================================================ FILE: tests/__init__.py ================================================ import torch import tensorboardX.proto ================================================ FILE: tests/event_file_writer_test.py ================================================ # Copyright 2019 The TensorFlow Authors. All Rights Reserved. # # 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. # ============================================================================== # """Tests for EventFileWriter and _AsyncWriter""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import glob import os from tensorboardX.event_file_writer import EventFileWriter from tensorboardX.event_file_writer import EventFileWriter as _AsyncWriter from tensorboardX.proto import event_pb2 from tensorboardX.proto.summary_pb2 import Summary from tensorboard.compat.tensorflow_stub.pywrap_tensorflow import PyRecordReader_New import unittest class EventFileWriterTest(unittest.TestCase): def get_temp_dir(self): import tempfile return tempfile.mkdtemp() def test_event_file_writer_roundtrip(self): _TAGNAME = 'dummy' _DUMMY_VALUE = 42 logdir = self.get_temp_dir() w = EventFileWriter(logdir) summary = Summary(value=[Summary.Value(tag=_TAGNAME, simple_value=_DUMMY_VALUE)]) fakeevent = event_pb2.Event(summary=summary) w.add_event(fakeevent) w.close() event_files = sorted(glob.glob(os.path.join(logdir, '*'))) self.assertEqual(len(event_files), 1) r = PyRecordReader_New(event_files[0]) r.GetNext() # meta data, so skip r.GetNext() self.assertEqual(fakeevent.SerializeToString(), r.record()) def test_setting_filename_suffix_works(self): logdir = self.get_temp_dir() w = EventFileWriter(logdir, filename_suffix='.event_horizon') w.close() event_files = sorted(glob.glob(os.path.join(logdir, '*'))) self.assertEqual(event_files[0].split('.')[-1], 'event_horizon') def test_async_writer_without_write(self): logdir = self.get_temp_dir() w = EventFileWriter(logdir) w.close() event_files = sorted(glob.glob(os.path.join(logdir, '*'))) r = PyRecordReader_New(event_files[0]) r.GetNext() s = event_pb2.Event.FromString(r.record()) self.assertEqual(s.file_version, "brain.Event:2") # skip the test, because tensorboard's implementaion of filewriter # writes raw data while that in tensorboardX writes event protobuf. class AsyncWriterTest(): #unittest.TestCase): def get_temp_dir(self): import tempfile return tempfile.mkdtemp() def test_async_writer_write_once(self): foldername = os.path.join(self.get_temp_dir(), "async_writer_write_once") w = _AsyncWriter(foldername) filename = w._ev_writer._file_name bytes_to_write = b"hello world" w.add_event(bytes_to_write) w.close() with open(filename, 'rb') as f: self.assertEqual(f.read(), bytes_to_write) def test_async_writer_write_queue_full(self): filename = os.path.join(self.get_temp_dir(), "async_writer_write_queue_full") w = _AsyncWriter(filename) bytes_to_write = b"hello world" repeat = 100 for i in range(repeat): w.write(bytes_to_write) w.close() with open(filename, 'rb') as f: self.assertEqual(f.read(), bytes_to_write * repeat) def test_async_writer_write_one_slot_queue(self): filename = os.path.join(self.get_temp_dir(), "async_writer_write_one_slot_queue") w = _AsyncWriter(filename, max_queue_size=1) bytes_to_write = b"hello world" repeat = 10 # faster for i in range(repeat): w.write(bytes_to_write) w.close() with open(filename, 'rb') as f: self.assertEqual(f.read(), bytes_to_write * repeat) def test_async_writer_close_triggers_flush(self): filename = os.path.join(self.get_temp_dir(), "async_writer_close_triggers_flush") w = _AsyncWriter(filename) bytes_to_write = b"x" * 64 w.write(bytes_to_write) w.close() with open(filename, 'rb') as f: self.assertEqual(f.read(), bytes_to_write) def test_write_after_async_writer_closed(self): filename = os.path.join(self.get_temp_dir(), "write_after_async_writer_closed") w = _AsyncWriter(filename) bytes_to_write = b"x" * 64 w.write(bytes_to_write) w.close() with self.assertRaises(IOError): w.write(bytes_to_write) # nothing is written to the file after close with open(filename, 'rb') as f: self.assertEqual(f.read(), bytes_to_write) if __name__ == '__main__': unittest.main() ================================================ FILE: tests/expect/caffe_mnist.expect ================================================ node { name: "conv1/XavierFill" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 20 } dim { size: 1 } dim { size: 5 } dim { size: 5 } } } } } } node { name: "conv1/ConstantFill" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 20 } } } } } } node { name: "conv1/XavierFill_1" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 100 } dim { size: 20 } dim { size: 5 } dim { size: 5 } } } } } } node { name: "conv1/ConstantFill_1" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 100 } } } } } } node { name: "classifier/XavierFill" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 500 } dim { size: 1600 } } } } } } node { name: "classifier/ConstantFill" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 500 } } } } } } node { name: "classifier/XavierFill_1" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 10 } dim { size: 500 } } } } } } node { name: "classifier/ConstantFill_1" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 10 } } } } } } node { name: "ImageInput" op: "ImageInput" input: "db" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "is_test" value { i: 0 } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "NHWC2NCHW" op: "NHWC2NCHW" input: "data_nhwc" device: "/gpu:0" } node { name: "conv1/Conv" op: "Conv" input: "data" input: "conv1/conv1_w" input: "conv1/conv1_b" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool" op: "MaxPool" input: "conv1/conv1" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "conv1/Conv_1" op: "Conv" input: "conv1/pool1" input: "conv1/conv2_w" input: "conv1/conv2_b" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool_1" op: "MaxPool" input: "conv1/conv2" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "classifier/FC" op: "FC" input: "conv1/pool2" input: "classifier/fc3_w" input: "classifier/fc3_b" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Relu" op: "Relu" input: "classifier/fc3" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/FC_1" op: "FC" input: "classifier/fc3_1" input: "classifier/pred_w" input: "classifier/pred_b" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Softmax" op: "Softmax" input: "classifier/pred" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/LabelCrossEntropy" op: "LabelCrossEntropy" input: "classifier/softmax" input: "label" device: "/gpu:0" } node { name: "classifier/AveragedLoss" op: "AveragedLoss" input: "classifier/xent" device: "/gpu:0" } node { name: "GRADIENTS/classifier/ConstantFill" op: "ConstantFill" input: "classifier/loss" device: "/gpu:0" attr { key: "value" value { f: 1.0 } } } node { name: "GRADIENTS/classifier/AveragedLossGradient" op: "AveragedLossGradient" input: "classifier/xent" input: "GRADIENTS/classifier/loss_autogen_grad" device: "/gpu:0" } node { name: "GRADIENTS/classifier/LabelCrossEntropyGradient" op: "LabelCrossEntropyGradient" input: "classifier/softmax" input: "label" input: "GRADIENTS/classifier/xent_grad" device: "/gpu:0" } node { name: "GRADIENTS/classifier/SoftmaxGradient" op: "SoftmaxGradient" input: "classifier/softmax" input: "GRADIENTS/classifier/softmax_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/classifier/FCGradient" op: "FCGradient" input: "classifier/fc3_1" input: "classifier/pred_w" input: "GRADIENTS/classifier/pred_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "GRADIENTS/classifier/ReluGradient" op: "ReluGradient" input: "classifier/fc3_1" input: "GRADIENTS/classifier/fc3_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/c/FCGradient" op: "FCGradient" input: "conv1/pool2" input: "classifier/fc3_w" input: "GRADIENTS/classifier/fc3_grad_1" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "GRADIENTS/conv1/MaxPoolGradient" op: "MaxPoolGradient" input: "conv1/conv2" input: "conv1/pool2" input: "GRADIENTS/conv1/pool2_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "GRADIENTS/conv1/ConvGradient" op: "ConvGradient" input: "conv1/pool1" input: "conv1/conv2_w" input: "GRADIENTS/conv1/conv2_grad" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/conv1/MaxPoolGradient_1" op: "MaxPoolGradient" input: "conv1/conv1" input: "conv1/pool1" input: "GRADIENTS/conv1/pool1_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "GRADIENTS/ConvGradient" op: "ConvGradient" input: "data" input: "conv1/conv1_w" input: "GRADIENTS/conv1/conv1_grad" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/NCHW2NHWC" op: "NCHW2NHWC" input: "GRADIENTS/data_grad" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc3_grad_1" op: "Blob" input: "GRADIENTS/classifier/ReluGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/xent_grad" op: "Blob" input: "GRADIENTS/classifier/AveragedLossGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/pred_w_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/data_nhwc_grad" op: "Blob" input: "GRADIENTS/NCHW2NHWC:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc3_w_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient_1:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_b_grad" op: "Blob" input: "GRADIENTS/ConvGradient:1" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv2_w_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:0" device: "/gpu:0" } node { name: "classifier/pred" op: "Blob" input: "classifier/FC_1:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/pool2_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:2" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_w_grad" op: "Blob" input: "GRADIENTS/ConvGradient:0" device: "/gpu:0" } node { name: "data" op: "Blob" input: "NHWC2NCHW:0" device: "/gpu:0" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/pool1_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:2" device: "/gpu:0" } node { name: "db" op: "Placeholder" } node { name: "classifier/fc3_b" op: "Blob" input: "classifier/ConstantFill:0" device: "/gpu:0" } node { name: "classifier/pred_b" op: "Blob" input: "classifier/ConstantFill_1:0" device: "/gpu:0" } node { name: "classifier/softmax" op: "Blob" input: "classifier/Softmax:0" device: "/gpu:0" } node { name: "GRADIENTS/data_grad" op: "Blob" input: "GRADIENTS/ConvGradient:2" device: "/gpu:0" } node { name: "GRADIENTS/classifier/pred_b_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:1" device: "/gpu:0" } node { name: "label" op: "Blob" input: "ImageInput:1" device: "/gpu:0" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/gpu:0" } node { name: "data_nhwc" op: "Blob" input: "ImageInput:0" device: "/gpu:0" } node { name: "conv1/conv2" op: "Blob" input: "conv1/Conv_1:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv2_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient:0" device: "/gpu:0" } node { name: "conv1/conv2_b" op: "Blob" input: "conv1/ConstantFill_1:0" device: "/gpu:0" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" device: "/gpu:0" } node { name: "classifier/fc3_w" op: "Blob" input: "classifier/XavierFill:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc3_b_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:1" device: "/gpu:0" } node { name: "classifier/pred_w" op: "Blob" input: "classifier/XavierFill_1:0" device: "/gpu:0" } node { name: "conv1/pool2" op: "Blob" input: "conv1/MaxPool_1:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv2_b_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:1" device: "/gpu:0" } node { name: "classifier/fc3_1" op: "Blob" input: "classifier/Relu:0" device: "/gpu:0" } node { name: "classifier/loss" op: "Blob" input: "classifier/AveragedLoss:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc3_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:2" device: "/gpu:0" } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" device: "/gpu:0" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/loss_autogen_grad" op: "Blob" input: "GRADIENTS/classifier/ConstantFill:0" device: "/gpu:0" } node { name: "classifier/fc3" op: "Blob" input: "classifier/FC:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/pred_grad" op: "Blob" input: "GRADIENTS/classifier/SoftmaxGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/softmax_grad" op: "Blob" input: "GRADIENTS/classifier/LabelCrossEntropyGradient:0" device: "/gpu:0" } node { name: "conv1/conv2_w" op: "Blob" input: "conv1/XavierFill_1:0" device: "/gpu:0" } ================================================ FILE: tests/expect/caffe_overfeat.expect ================================================ node { name: "conv1/XavierFill" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 96 } dim { size: 3 } dim { size: 11 } dim { size: 11 } } } } } } node { name: "conv1/ConstantFill" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 96 } } } } } } node { name: "classifier/XavierFill" op: "XavierFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 1000 } dim { size: 4096 } } } } } } node { name: "classifier/ConstantFill" op: "ConstantFill" device: "/gpu:0" attr { key: "_output_shapes" value { list { shape { dim { size: 1000 } } } } } } node { name: "ImageInput" op: "ImageInput" input: "db" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "is_test" value { i: 0 } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "NHWC2NCHW" op: "NHWC2NCHW" input: "data_nhwc" device: "/gpu:0" } node { name: "conv1/Conv" op: "Conv" input: "data" input: "conv1/conv1_w" input: "conv1/conv1_b" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 11 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 4 } } } node { name: "conv1/Relu" op: "Relu" input: "conv1/conv1" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool" op: "MaxPool" input: "conv1/conv1_1" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "classifier/FC" op: "FC" input: "conv1/pool1" input: "classifier/fc_w" input: "classifier/fc_b" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Softmax" op: "Softmax" input: "classifier/fc" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/LabelCrossEntropy" op: "LabelCrossEntropy" input: "classifier/pred" input: "label" device: "/gpu:0" } node { name: "classifier/AveragedLoss" op: "AveragedLoss" input: "classifier/xent" device: "/gpu:0" } node { name: "GRADIENTS/classifier/ConstantFill" op: "ConstantFill" input: "classifier/loss" device: "/gpu:0" attr { key: "value" value { f: 1.0 } } } node { name: "GRADIENTS/classifier/AveragedLossGradient" op: "AveragedLossGradient" input: "classifier/xent" input: "GRADIENTS/classifier/loss_autogen_grad" device: "/gpu:0" } node { name: "GRADIENTS/classifier/LabelCrossEntropyGradient" op: "LabelCrossEntropyGradient" input: "classifier/pred" input: "label" input: "GRADIENTS/classifier/xent_grad" device: "/gpu:0" } node { name: "GRADIENTS/classifier/SoftmaxGradient" op: "SoftmaxGradient" input: "classifier/pred" input: "GRADIENTS/classifier/pred_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/c/FCGradient" op: "FCGradient" input: "conv1/pool1" input: "classifier/fc_w" input: "GRADIENTS/classifier/fc_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "GRADIENTS/conv1/MaxPoolGradient" op: "MaxPoolGradient" input: "conv1/conv1_1" input: "conv1/pool1" input: "GRADIENTS/conv1/pool1_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "GRADIENTS/conv1/ReluGradient" op: "ReluGradient" input: "conv1/conv1_1" input: "GRADIENTS/conv1/conv1_grad" device: "/gpu:0" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/ConvGradient" op: "ConvGradient" input: "data" input: "conv1/conv1_w" input: "GRADIENTS/conv1/conv1_grad_1" device: "/gpu:0" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 11 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 4 } } } node { name: "GRADIENTS/NCHW2NHWC" op: "NCHW2NHWC" input: "GRADIENTS/data_grad" device: "/gpu:0" } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" device: "/gpu:0" } node { name: "classifier/fc" op: "Blob" input: "classifier/FC:0" device: "/gpu:0" } node { name: "data_nhwc" op: "Blob" input: "ImageInput:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_b_grad" op: "Blob" input: "GRADIENTS/ConvGradient:1" device: "/gpu:0" } node { name: "GRADIENTS/classifier/pred_grad" op: "Blob" input: "GRADIENTS/classifier/LabelCrossEntropyGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc_grad" op: "Blob" input: "GRADIENTS/classifier/SoftmaxGradient:0" device: "/gpu:0" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc_b_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:1" device: "/gpu:0" } node { name: "GRADIENTS/classifier/fc_w_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:0" device: "/gpu:0" } node { name: "label" op: "Blob" input: "ImageInput:1" device: "/gpu:0" } node { name: "GRADIENTS/data_grad" op: "Blob" input: "GRADIENTS/ConvGradient:2" device: "/gpu:0" } node { name: "classifier/loss" op: "Blob" input: "classifier/AveragedLoss:0" device: "/gpu:0" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient:0" device: "/gpu:0" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/loss_autogen_grad" op: "Blob" input: "GRADIENTS/classifier/ConstantFill:0" device: "/gpu:0" } node { name: "classifier/fc_w" op: "Blob" input: "classifier/XavierFill:0" device: "/gpu:0" } node { name: "conv1/conv1_1" op: "Blob" input: "conv1/Relu:0" device: "/gpu:0" } node { name: "db" op: "Placeholder" } node { name: "classifier/pred" op: "Blob" input: "classifier/Softmax:0" device: "/gpu:0" } node { name: "classifier/fc_b" op: "Blob" input: "classifier/ConstantFill:0" device: "/gpu:0" } node { name: "GRADIENTS/classifier/xent_grad" op: "Blob" input: "GRADIENTS/classifier/AveragedLossGradient:0" device: "/gpu:0" } node { name: "data" op: "Blob" input: "NHWC2NCHW:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_w_grad" op: "Blob" input: "GRADIENTS/ConvGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/conv1_grad_1" op: "Blob" input: "GRADIENTS/conv1/ReluGradient:0" device: "/gpu:0" } node { name: "GRADIENTS/data_nhwc_grad" op: "Blob" input: "GRADIENTS/NCHW2NHWC:0" device: "/gpu:0" } node { name: "GRADIENTS/conv1/pool1_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:2" device: "/gpu:0" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/gpu:0" } """ ================================================ FILE: tests/expect/test_caffe2.test_simple_cnnmodel.expect ================================================ node { name: "conv1/XavierFill" op: "XavierFill" attr { key: "_output_shapes" value { list { shape { dim { size: 96 } dim { size: 3 } dim { size: 11 } dim { size: 11 } } } } } } node { name: "conv1/ConstantFill" op: "ConstantFill" attr { key: "_output_shapes" value { list { shape { dim { size: 96 } } } } } } node { name: "classifier/XavierFill" op: "XavierFill" attr { key: "_output_shapes" value { list { shape { dim { size: 1000 } dim { size: 4096 } } } } } } node { name: "classifier/ConstantFill" op: "ConstantFill" attr { key: "_output_shapes" value { list { shape { dim { size: 1000 } } } } } } node { name: "conv1/Conv" op: "Conv" input: "conv1/data" input: "conv1/conv1_w" input: "conv1/conv1_b" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 11 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 4 } } } node { name: "conv1/Relu" op: "Relu" input: "conv1/conv1" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool" op: "MaxPool" input: "conv1/conv1_1" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "classifier/FC" op: "FC" input: "conv1/pool1" input: "classifier/fc_w" input: "classifier/fc_b" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Softmax" op: "Softmax" input: "classifier/fc" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/LabelCrossEntropy" op: "LabelCrossEntropy" input: "classifier/pred" input: "classifier/label" } node { name: "classifier/AveragedLoss" op: "AveragedLoss" input: "classifier/xent" } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" } node { name: "classifier/fc_w" op: "Blob" input: "classifier/XavierFill:0" } node { name: "classifier/fc_b" op: "Blob" input: "classifier/ConstantFill:0" } node { name: "conv1/data" op: "Placeholder" } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" } node { name: "conv1/conv1_1" op: "Blob" input: "conv1/Relu:0" } node { name: "conv1/conv1_1" op: "Blob" input: "conv1/Relu:0" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" } node { name: "classifier/fc_w" op: "Blob" input: "classifier/XavierFill:0" } node { name: "classifier/fc_b" op: "Blob" input: "classifier/ConstantFill:0" } node { name: "classifier/fc" op: "Blob" input: "classifier/FC:0" } node { name: "classifier/fc" op: "Blob" input: "classifier/FC:0" } node { name: "classifier/pred" op: "Blob" input: "classifier/Softmax:0" } node { name: "classifier/pred" op: "Blob" input: "classifier/Softmax:0" } node { name: "classifier/label" op: "Placeholder" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" } node { name: "classifier/loss" op: "Blob" input: "classifier/AveragedLoss:0" } ================================================ FILE: tests/expect/test_caffe2.test_simple_model.expect ================================================ node { name: "conv1/XavierFill" op: "XavierFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 20 } dim { size: 1 } dim { size: 5 } dim { size: 5 } } } } } } node { name: "conv1/ConstantFill" op: "ConstantFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 20 } } } } } } node { name: "conv1/XavierFill_1" op: "XavierFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 100 } dim { size: 20 } dim { size: 5 } dim { size: 5 } } } } } } node { name: "conv1/ConstantFill_1" op: "ConstantFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 100 } } } } } } node { name: "classifier/XavierFill" op: "XavierFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 500 } dim { size: 1600 } } } } } } node { name: "classifier/ConstantFill" op: "ConstantFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 500 } } } } } } node { name: "classifier/XavierFill_1" op: "XavierFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 10 } dim { size: 500 } } } } } } node { name: "classifier/ConstantFill_1" op: "ConstantFill" device: "/cpu:*" attr { key: "_output_shapes" value { list { shape { dim { size: 10 } } } } } } node { name: "conv1/Conv" op: "Conv" input: "conv1/data" input: "conv1/conv1_w" input: "conv1/conv1_b" device: "/cpu:*" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool" op: "MaxPool" input: "conv1/conv1" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "conv1/Conv_1" op: "Conv" input: "conv1/pool1" input: "conv1/conv2_w" input: "conv1/conv2_b" device: "/cpu:*" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "conv1/MaxPool_1" op: "MaxPool" input: "conv1/conv2" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "classifier/FC" op: "FC" input: "conv1/pool2" input: "classifier/fc3_w" input: "classifier/fc3_b" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Relu" op: "Relu" input: "classifier/fc3" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/FC_1" op: "FC" input: "classifier/fc3_1" input: "classifier/pred_w" input: "classifier/pred_b" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "classifier/Softmax" op: "Softmax" input: "classifier/pred" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "classifier/LabelCrossEntropy" op: "LabelCrossEntropy" input: "classifier/softmax" input: "classifier/label" device: "/cpu:*" } node { name: "classifier/AveragedLoss" op: "AveragedLoss" input: "classifier/xent" device: "/cpu:*" } node { name: "GRADIENTS/classifier/ConstantFill" op: "ConstantFill" input: "classifier/loss" device: "/cpu:*" attr { key: "value" value { f: 1.0 } } } node { name: "GRADIENTS/classifier/AveragedLossGradient" op: "AveragedLossGradient" input: "classifier/xent" input: "GRADIENTS/classifier/loss_autogen_grad" device: "/cpu:*" } node { name: "GRADIENTS/classifier/LabelCrossEntropyGradient" op: "LabelCrossEntropyGradient" input: "classifier/softmax" input: "classifier/label" input: "GRADIENTS/classifier/xent_grad" device: "/cpu:*" } node { name: "GRADIENTS/classifier/SoftmaxGradient" op: "SoftmaxGradient" input: "classifier/softmax" input: "GRADIENTS/classifier/softmax_grad" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/classifier/FCGradient" op: "FCGradient" input: "classifier/fc3_1" input: "classifier/pred_w" input: "GRADIENTS/classifier/pred_grad" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "GRADIENTS/classifier/ReluGradient" op: "ReluGradient" input: "classifier/fc3_1" input: "GRADIENTS/classifier/fc3_grad" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/c/FCGradient" op: "FCGradient" input: "conv1/pool2" input: "classifier/fc3_w" input: "GRADIENTS/classifier/fc3_grad_1" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "order" value { s: "NCHW" } } attr { key: "use_cudnn" value { i: 1 } } } node { name: "GRADIENTS/conv1/MaxPoolGradient" op: "MaxPoolGradient" input: "conv1/conv2" input: "conv1/pool2" input: "GRADIENTS/conv1/pool2_grad" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "GRADIENTS/conv1/ConvGradient" op: "ConvGradient" input: "conv1/pool1" input: "conv1/conv2_w" input: "GRADIENTS/conv1/conv2_grad" device: "/cpu:*" attr { key: "exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 5 } } attr { key: "order" value { s: "NCHW" } } } node { name: "GRADIENTS/conv1/MaxPoolGradient_1" op: "MaxPoolGradient" input: "conv1/conv1" input: "conv1/pool1" input: "GRADIENTS/conv1/pool1_grad" device: "/cpu:*" attr { key: "cudnn_exhaustive_search" value { i: 0 } } attr { key: "kernel" value { i: 2 } } attr { key: "order" value { s: "NCHW" } } attr { key: "stride" value { i: 2 } } } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" device: "/cpu:*" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" device: "/cpu:*" } node { name: "conv1/conv2_w" op: "Blob" input: "conv1/XavierFill_1:0" device: "/cpu:*" } node { name: "conv1/conv2_b" op: "Blob" input: "conv1/ConstantFill_1:0" device: "/cpu:*" } node { name: "classifier/fc3_w" op: "Blob" input: "classifier/XavierFill:0" device: "/cpu:*" } node { name: "classifier/fc3_b" op: "Blob" input: "classifier/ConstantFill:0" device: "/cpu:*" } node { name: "classifier/pred_w" op: "Blob" input: "classifier/XavierFill_1:0" device: "/cpu:*" } node { name: "classifier/pred_b" op: "Blob" input: "classifier/ConstantFill_1:0" device: "/cpu:*" } node { name: "conv1/data" op: "Placeholder" } node { name: "conv1/conv1_w" op: "Blob" input: "conv1/XavierFill:0" device: "/cpu:*" } node { name: "conv1/conv1_b" op: "Blob" input: "conv1/ConstantFill:0" device: "/cpu:*" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" device: "/cpu:*" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" device: "/cpu:*" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/cpu:*" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/cpu:*" } node { name: "conv1/conv2_w" op: "Blob" input: "conv1/XavierFill_1:0" device: "/cpu:*" } node { name: "conv1/conv2_b" op: "Blob" input: "conv1/ConstantFill_1:0" device: "/cpu:*" } node { name: "conv1/conv2" op: "Blob" input: "conv1/Conv_1:0" device: "/cpu:*" } node { name: "conv1/conv2" op: "Blob" input: "conv1/Conv_1:0" device: "/cpu:*" } node { name: "conv1/pool2" op: "Blob" input: "conv1/MaxPool_1:0" device: "/cpu:*" } node { name: "conv1/pool2" op: "Blob" input: "conv1/MaxPool_1:0" device: "/cpu:*" } node { name: "classifier/fc3_w" op: "Blob" input: "classifier/XavierFill:0" device: "/cpu:*" } node { name: "classifier/fc3_b" op: "Blob" input: "classifier/ConstantFill:0" device: "/cpu:*" } node { name: "classifier/fc3" op: "Blob" input: "classifier/FC:0" device: "/cpu:*" } node { name: "classifier/fc3" op: "Blob" input: "classifier/FC:0" device: "/cpu:*" } node { name: "classifier/fc3_1" op: "Blob" input: "classifier/Relu:0" device: "/cpu:*" } node { name: "classifier/fc3_1" op: "Blob" input: "classifier/Relu:0" device: "/cpu:*" } node { name: "classifier/pred_w" op: "Blob" input: "classifier/XavierFill_1:0" device: "/cpu:*" } node { name: "classifier/pred_b" op: "Blob" input: "classifier/ConstantFill_1:0" device: "/cpu:*" } node { name: "classifier/pred" op: "Blob" input: "classifier/FC_1:0" device: "/cpu:*" } node { name: "classifier/pred" op: "Blob" input: "classifier/FC_1:0" device: "/cpu:*" } node { name: "classifier/softmax" op: "Blob" input: "classifier/Softmax:0" device: "/cpu:*" } node { name: "classifier/softmax" op: "Blob" input: "classifier/Softmax:0" device: "/cpu:*" } node { name: "classifier/label" op: "Placeholder" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" device: "/cpu:*" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" device: "/cpu:*" } node { name: "classifier/loss" op: "Blob" input: "classifier/AveragedLoss:0" device: "/cpu:*" } node { name: "classifier/loss" op: "Blob" input: "classifier/AveragedLoss:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/loss_autogen_grad" op: "Blob" input: "GRADIENTS/classifier/ConstantFill:0" device: "/cpu:*" } node { name: "classifier/xent" op: "Blob" input: "classifier/LabelCrossEntropy:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/loss_autogen_grad" op: "Blob" input: "GRADIENTS/classifier/ConstantFill:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/xent_grad" op: "Blob" input: "GRADIENTS/classifier/AveragedLossGradient:0" device: "/cpu:*" } node { name: "classifier/softmax" op: "Blob" input: "classifier/Softmax:0" device: "/cpu:*" } node { name: "classifier/label" op: "Placeholder" } node { name: "GRADIENTS/classifier/xent_grad" op: "Blob" input: "GRADIENTS/classifier/AveragedLossGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/softmax_grad" op: "Blob" input: "GRADIENTS/classifier/LabelCrossEntropyGradient:0" device: "/cpu:*" } node { name: "classifier/softmax" op: "Blob" input: "classifier/Softmax:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/softmax_grad" op: "Blob" input: "GRADIENTS/classifier/LabelCrossEntropyGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/pred_grad" op: "Blob" input: "GRADIENTS/classifier/SoftmaxGradient:0" device: "/cpu:*" } node { name: "classifier/fc3_1" op: "Blob" input: "classifier/Relu:0" device: "/cpu:*" } node { name: "classifier/pred_w" op: "Blob" input: "classifier/XavierFill_1:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/pred_grad" op: "Blob" input: "GRADIENTS/classifier/SoftmaxGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/pred_w_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/pred_b_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:1" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:2" device: "/cpu:*" } node { name: "classifier/fc3_1" op: "Blob" input: "classifier/Relu:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_grad" op: "Blob" input: "GRADIENTS/classifier/FCGradient:2" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_grad_1" op: "Blob" input: "GRADIENTS/classifier/ReluGradient:0" device: "/cpu:*" } node { name: "conv1/pool2" op: "Blob" input: "conv1/MaxPool_1:0" device: "/cpu:*" } node { name: "classifier/fc3_w" op: "Blob" input: "classifier/XavierFill:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_grad_1" op: "Blob" input: "GRADIENTS/classifier/ReluGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_w_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/classifier/fc3_b_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:1" device: "/cpu:*" } node { name: "GRADIENTS/conv1/pool2_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:2" device: "/cpu:*" } node { name: "conv1/conv2" op: "Blob" input: "conv1/Conv_1:0" device: "/cpu:*" } node { name: "conv1/pool2" op: "Blob" input: "conv1/MaxPool_1:0" device: "/cpu:*" } node { name: "GRADIENTS/conv1/pool2_grad" op: "Blob" input: "GRADIENTS/c/FCGradient:2" device: "/cpu:*" } node { name: "GRADIENTS/conv1/conv2_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient:0" device: "/cpu:*" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/cpu:*" } node { name: "conv1/conv2_w" op: "Blob" input: "conv1/XavierFill_1:0" device: "/cpu:*" } node { name: "GRADIENTS/conv1/conv2_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/conv1/conv2_w_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:0" device: "/cpu:*" } node { name: "GRADIENTS/conv1/conv2_b_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:1" device: "/cpu:*" } node { name: "GRADIENTS/conv1/pool1_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:2" device: "/cpu:*" } node { name: "conv1/conv1" op: "Blob" input: "conv1/Conv:0" device: "/cpu:*" } node { name: "conv1/pool1" op: "Blob" input: "conv1/MaxPool:0" device: "/cpu:*" } node { name: "GRADIENTS/conv1/pool1_grad" op: "Blob" input: "GRADIENTS/conv1/ConvGradient:2" device: "/cpu:*" } node { name: "GRADIENTS/conv1/conv1_grad" op: "Blob" input: "GRADIENTS/conv1/MaxPoolGradient_1:0" device: "/cpu:*" } ================================================ FILE: tests/expect/test_pr_curve.test_pr_purve.expect ================================================ value { tag: "tag" tensor { dtype: DT_FLOAT tensor_shape { dim { size: 6 } dim { size: 1 } } float_val: 57.0 float_val: 43.0 float_val: 0.0 float_val: 0.0 float_val: 0.57 float_val: 1.0 } metadata { plugin_data { plugin_name: "pr_curves" content: "\020\001" } } } ================================================ FILE: tests/expect/test_pr_curve.test_pr_purve_raw.expect ================================================ value { tag: "prcurve with raw data" tensor { dtype: DT_FLOAT tensor_shape { dim { size: 6 } dim { size: 5 } } float_val: 75.0 float_val: 64.0 float_val: 21.0 float_val: 5.0 float_val: 0.0 float_val: 150.0 float_val: 105.0 float_val: 18.0 float_val: 0.0 float_val: 0.0 float_val: 0.0 float_val: 45.0 float_val: 132.0 float_val: 150.0 float_val: 150.0 float_val: 0.0 float_val: 11.0 float_val: 54.0 float_val: 70.0 float_val: 75.0 float_val: 0.3333333 float_val: 0.3786982 float_val: 0.5384616 float_val: 1.0 float_val: 0.0 float_val: 1.0 float_val: 0.8533334 float_val: 0.28 float_val: 0.0666667 float_val: 0.0 } metadata { plugin_data { plugin_name: "pr_curves" content: "\020\001" } } } ================================================ FILE: tests/expect/test_summary.test_audio.expect ================================================ value { tag: "dummy" audio { sample_rate: 44100.0 num_channels: 1 length_frames: 42 encoded_audio_string: "RIFFx\000\000\000WAVEfmt \020\000\000\000\001\000\001\000D\254\000\000\210X\001\000\002\000\020\000dataT\000\000\000\000\000\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177\377\177" content_type: "audio/wav" } } ================================================ FILE: tests/expect/test_summary.test_custom_scalars.expect ================================================ value { tag: "custom_scalars__config__" tensor { dtype: DT_STRING tensor_shape { } string_val: "\022(\n\006Taiwan\022\036\n\004twse\022\026\n\ttwse/0050\n\ttwse/2330\022]\n\003USA\022$\n\003dow\032\035\n\033\n\007dow/aaa\022\007dow/bbb\032\007dow/ccc\0220\n\006nasdaq\032&\n$\n\nnasdaq/aaa\022\nnasdaq/bbb\032\nnasdaq/ccc" } metadata { plugin_data { plugin_name: "custom_scalars" } } } ================================================ FILE: tests/expect/test_summary.test_float32_image.expect ================================================ value { tag: "dummy" image { height: 32 width: 32 colorspace: 3 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000 \010\002\000\000\000\374\030\355\243\000\000\000DIDATx\234cd``\370OK\300\370\340\301\003\232Z\3002j\301\360\267\200QAA\201\266\026\214\346\203Q\013\006\277\005\243\371\200 \030\372\2210\204b\311\233\305/\344G\000\334\236\021Uu\005R\000\377\007\244\224\342\013||\007\2655\330BfP\215\337S`>:{_l\020\335\242\tX6-\000\032r\007G\316\000\2561\226\201\244\252/\005V\357\026\271\003\033\0149\000\232\270\003+\260\301\220\003\240y\000T\221\324V\250_v\320\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_image_with_four_channel.expect ================================================ value { tag: "dummy" image { height: 8 width: 8 colorspace: 4 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\010\000\000\000\010\010\006\000\000\000\304\017\276\213\000\000\000\036IDATx\234cd8\320\340\360\037\017`\371\361\343\307\217\037\204\024\0204a\260+\000\000\240\302\373\327\246\231O\'\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_image_with_four_channel_batched.expect ================================================ value { tag: "dummy" image { height: 8 width: 16 colorspace: 4 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\020\000\000\000\010\010\006\000\000\000\360v\177\227\000\000\000-IDATx\234cd8\320\340\360\037\017`ggg\307\'\317\362\343\307\217\037?\360(\370\001\305x\r\300g\003!0j\000\025\014\000\000\356b\366\370\366\336\316\301\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_image_with_one_channel.expect ================================================ value { tag: "dummy" image { height: 8 width: 8 colorspace: 3 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\010\000\000\000\010\010\002\000\000\000Km)\334\000\000\000\031IDATx\234cd``\370\217\r0\376\370\361\003\253\004\313\240\224\000\000;\267\273\313%\020=\255\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_image_with_one_channel_batched.expect ================================================ value { tag: "dummy" image { height: 8 width: 16 colorspace: 3 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\020\000\000\000\010\010\002\000\000\000\177\024\350\300\000\000\000(IDATx\234cd``\370\217\r\034?~\034\2538\313\217\037?~\374\370\201)\201U\020\252\001\253\304\250\006$\000\000\230\346y\315\204l;t\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_image_without_channel.expect ================================================ value { tag: "dummy" image { height: 8 width: 8 colorspace: 3 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000\010\000\000\000\010\010\002\000\000\000Km)\334\000\000\000\031IDATx\234cd``\370\217\r0\376\370\361\003\253\004\313\240\224\000\000;\267\273\313%\020=\255\000\000\000\000IEND\256B`\202" } } ================================================ FILE: tests/expect/test_summary.test_mesh.expect ================================================ value { tag: "my_mesh_1" tensor { dtype: DT_FLOAT tensor_shape { dim { size: 1 } dim { size: 4 } dim { size: 3 } } float_val: 1.0 float_val: 1.0 float_val: 1.0 float_val: -1.0 float_val: -1.0 float_val: 1.0 float_val: 1.0 float_val: -1.0 float_val: -1.0 float_val: -1.0 float_val: 1.0 float_val: -1.0 } metadata { plugin_data { plugin_name: "mesh" content: "\022\007my_mesh\030\001*\004null2\003\001\004\003" } } } value { tag: "my_mesh_2" tensor { dtype: DT_FLOAT tensor_shape { dim { size: 1 } dim { size: 4 } dim { size: 3 } } float_val: 0.0 float_val: 2.0 float_val: 3.0 float_val: 0.0 float_val: 3.0 float_val: 1.0 float_val: 0.0 float_val: 1.0 float_val: 2.0 float_val: 1.0 float_val: 3.0 float_val: 2.0 } metadata { plugin_data { plugin_name: "mesh" content: "\022\007my_mesh\030\002*\004null2\003\001\004\003" } } } value { tag: "my_mesh_3" tensor { dtype: DT_FLOAT tensor_shape { dim { size: 1 } dim { size: 4 } dim { size: 3 } } float_val: 255.0 float_val: 0.0 float_val: 0.0 float_val: 0.0 float_val: 255.0 float_val: 0.0 float_val: 0.0 float_val: 0.0 float_val: 255.0 float_val: 255.0 float_val: 0.0 float_val: 255.0 } metadata { plugin_data { plugin_name: "mesh" content: "\022\007my_mesh\030\003*\004null2\003\001\004\003" } } } ================================================ FILE: tests/expect/test_summary.test_text.expect ================================================ value { tag: "dummy/text_summary" tensor { dtype: DT_STRING tensor_shape { dim { size: 1 } } string_val: "text 123" } metadata { plugin_data { plugin_name: "text" } } } ================================================ FILE: tests/expect/test_summary.test_uint8_image.expect ================================================ value { tag: "dummy" image { height: 32 width: 32 colorspace: 3 encoded_image_string: "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\000 \000\000\000 \010\002\000\000\000\374\030\355\243\000\000\000CIDATx\234cd```\244)PPP\240\251\371,\243\026\014\177\013\030\037>>===<<<;;;:::999888777666555444333222111000///...---,,,+++***)))(((\'\'\'&&&%%%$$$###\"\"\"!!! \037\037\037\036\036\036\035\035\035\034\034\034\033\033\033\032\032\032\031\031\031\030\030\030\027\027\027\026\026\026\025\025\025\024\024\024\023\023\023\022\022\022\021\021\021\020\020\020\017\017\017\016\016\016\r\r\r\014\014\014\013\013\013\n\n\n\t\t\t\010\010\010\007\007\007\006\006\006\005\005\005\004\004\004\003\003\003\002\002\002\001\001\001\000\000\000!\377\013NETSCAPE2.0\003\001\377\377\000!\371\004\010\031\000\000\000,\000\000\000\000\020\000\020\000\000\010\377\000\377\001\010 `\000\201\002\006~\001\013&l\030\261b\306\016 H\240`\001\203\006\016\216!K\246l\031\263f\316\036@\210 a\002\205\n\026\236A\213&m\032\265j\326.`\310\240a\003\207\016\036\256a\313\246m\033\267n\336>\200\010!b\004\211\022&\276\201\013\'n\034\271r\346N\240H\241b\005\213\026.\316\241K\247n\035\273v\356^\300\210!c\006\215\0326\336\301\213\'o\036\275z\366n\340\310\241c\007\217\036>\356\341\313\247o\037\277~\376\376\000\n$h\020\241B\206~\000\t\"d\010\221\"F\016!J\244h\021\243F\216\216 I\242d\t\223&N\036A\212$i\022\245J\226\236@\211\"e\n\225*V.a\312\244i\023\247N\236\256`\311\242e\013\227.^>\201\n%j\024\251R\246\276\200\t#f\014\2312fN\241J\245j\025\253V\256\316\240I\243f\r\2336n^\301%\212%k\026\255Z\266\336\300\211#g\016\235:vn\341\312\245k\027\257^\276\356\340\311\243g\017\037\200}\374\004\004\000!\371\004\010\031\000\000\000,\000\000\000\000\020\000\020\000\000\010\377\000\177\000\t\"d\010\221\"F\376\001\010 `\000\201\002\006\216 I\242d\t\223&N\016 H\240`\001\203\006\016\236@\211\"e\n\225*V\036@\210 a\002\205\n\026\256`\311\242e\013\227.^.`\310\240a\003\207\016\036\276\200\t#f\014\2312f>\200\010!b\004\211\022&\316\240I\243f\r\2336nN\240H\241b\005\213\026.\336\300\211#g\016\235:v^\300\210!c\006\215\0326\356\340\311\243g\017\237>~n\340\310\241c\007\217\036>~\001\013&l\030\261b\306\376\000\n$h\020\241B\206\216!K\246l\031\263f\316\016!J\244h\021\243F\216\236A\213&m\032\265j\326\036A\212$i\022\245J\226\256a\313\246m\033\267n\336.a\312\244i\023\247N\236\276\201\013\'n\034\271r\346>\201\n%j\024\251R\246\316\241K\247n\035\273v\356N\241J\245j\025\253V\256\336\301%\213\'o\036\275z\366^\301\212%k\026\255Z\266\356\341\313\247o\037\277~\376n\341\312\245k\027/\200\275|\005\004\000!\371\004\010\031\000\000\000,\000\000\000\000\020\000\020\000\000\010\377\000\377\000\n$h\020\241B\206~\000\t\"d\010\221\"F\016!J\244h\021\243F\216\216 I\242d\t\223&N\036A\212$i\022\245J\226\236@\211\"e\n\225*V.a\312\244i\023\247N\236\256`\311\242e\013\227.^>\201\n%j\024\251R\246\276\200\t#f\014\2312fN\241J\245j\025\253V\256\316\240I\243f\r\2336n^\301\212%k\026\255Z\266\336\300\211#g\016\235:vn\341\312\245k\027\257^\276\356\340\311\243g\017\237>~\376\001\010 `\000\201\002\006~\001\013&l\030\261b\306\016 H\240`\001\203\006\016\216!K\246l\031\263f\316\036@\210 a\002\205\n\026\236A\213&m\032\265j\326.`\310\240a\003\207\016\036\256a\313\246m\033\267n\336>\200\010!b\004\211\022&\276\201\013\'n\034\271r\346N\240H\241b\005\213\026.\316\241K\247n\035\273v\356^\300%\210!c\006\215\0326\336\301\213\'o\036\275z\366n\340\310\241c\007\217\036>\356\341\313\247o\037?\200\375\374\005\004\000;" } } ================================================ FILE: tests/expect_reader.py ================================================ from __future__ import absolute_import, division, print_function, unicode_literals import importlib import os import sys import google.protobuf.text_format as text_format from google.protobuf.message import Message def removeWhiteChar(string): return string.replace(' ', '').replace('\t', '').replace('\n', '') def compare_proto(str_to_compare, function_ptr): module_id = function_ptr.__class__.__module__ functionName = function_ptr.id().split('.')[-1] test_file = os.path.realpath(sys.modules[module_id].__file__) expected_file = os.path.join(os.path.dirname(test_file), "expect", module_id.split('.')[-1] + '.' + functionName + ".expect") print("expected_file: %s" % expected_file) assert os.path.exists(expected_file) with open(expected_file) as f: expected = f.read() if isinstance(str_to_compare, Message): proto_msg_module_name = str_to_compare.__class__.__module__ proto_msg_class_name = str_to_compare.__class__.__name__ proto_msg_module = importlib.import_module(proto_msg_module_name) ProtoMessage = getattr(proto_msg_module, proto_msg_class_name) expected_proto = ProtoMessage() text_format.Parse(expected, expected_proto) assert expected_proto == str_to_compare else: # TODO refactor tests to not compare tuple of protobuf messages in string # representation but protobuf messages themselves str_to_compare = str(str_to_compare) print("str_to_compare:", removeWhiteChar(str_to_compare)) print("expected:", removeWhiteChar(expected)) assert removeWhiteChar(str_to_compare) == removeWhiteChar(expected) def write_proto(str_to_compare, function_ptr): module_id = function_ptr.__class__.__module__ functionName = function_ptr.id().split('.')[-1] test_file = os.path.realpath(sys.modules[module_id].__file__) expected_file = os.path.join(os.path.dirname(test_file), "expect", module_id.split('.')[-1] + '.' + functionName + ".expect") print(expected_file) with open(expected_file, 'w') as f: f.write(str(str_to_compare)) ================================================ FILE: tests/record_writer_test.py ================================================ # Copyright 2019 The TensorFlow Authors. All Rights Reserved. # # 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. # ============================================================================== # """Tests for RecordWriter""" from __future__ import absolute_import from __future__ import division from __future__ import print_function import os from tensorboardX.record_writer import RecordWriter from tensorboard.compat.tensorflow_stub.pywrap_tensorflow import PyRecordReader_New import unittest class RecordWriterTest(unittest.TestCase): def get_temp_dir(self): import tempfile return tempfile.mkdtemp() def test_expect_bytes_written(self): filename = os.path.join(self.get_temp_dir(), "expect_bytes_written") byte_len = 64 w = RecordWriter(filename) bytes_to_write = b"x" * byte_len w.write(bytes_to_write) w.close() with open(filename, 'rb') as f: self.assertEqual(len(f.read()), (8 + 4 + byte_len + 4)) # uint64+uint32+data+uint32 def test_empty_record(self): filename = os.path.join(self.get_temp_dir(), "empty_record") w = RecordWriter(filename) bytes_to_write = b"" w.write(bytes_to_write) w.close() r = PyRecordReader_New(filename) r.GetNext() self.assertEqual(r.record(), bytes_to_write) def test_record_writer_roundtrip(self): filename = os.path.join(self.get_temp_dir(), "record_writer_roundtrip") w = RecordWriter(filename) bytes_to_write = b"hello world" times_to_test = 50 for _ in range(times_to_test): w.write(bytes_to_write) w.close() r = PyRecordReader_New(filename) for i in range(times_to_test): r.GetNext() self.assertEqual(r.record(), bytes_to_write) # def test_expect_bytes_written_bytes_IO(self): # byte_len = 64 # Bytes_io = six.BytesIO() # w = RecordWriter(Bytes_io) # bytes_to_write = b"x" * byte_len # w.write(bytes_to_write) # self.assertEqual(len(Bytes_io.getvalue()), (8 + 4 + byte_len + 4)) # uint64+uint32+data+uint32 if __name__ == '__main__': unittest.main() ================================================ FILE: tests/test_chainer_np.py ================================================ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals from tensorboardX import x2num, SummaryWriter try: import chainer chainer_installed = True except ImportError: print('Chainer is not installed, skipping test') chainer_installed = False import numpy as np import unittest if chainer_installed: chainer.Variable tensors = [chainer.Variable(np.random.rand(3, 10, 10)), chainer.Variable(np.random.rand(1)), chainer.Variable(np.random.rand(1, 2, 3, 4, 5))] class ChainerTest(unittest.TestCase): def test_chainer_np(self): for tensor in tensors: # regular variable assert isinstance(x2num.make_np(tensor), np.ndarray) # python primitive type assert(isinstance(x2num.make_np(0), np.ndarray)) assert(isinstance(x2num.make_np(0.1), np.ndarray)) def test_chainer_img(self): shapes = [(77, 3, 13, 7), (77, 1, 13, 7), (3, 13, 7), (1, 13, 7), (13, 7)] for s in shapes: x = chainer.Variable(np.random.random_sample(s)) # assert x2num.make_np(x, 'IMG').shape[2] == 3 def test_chainer_write(self): with SummaryWriter() as w: w.add_scalar('scalar', chainer.Variable(np.random.rand(1)), 0) ================================================ FILE: tests/test_crc32c.py ================================================ import unittest from tensorboardX.crc32c import _crc32c, _crc32c_native, crc32c class CRC32CTest(unittest.TestCase): def test_crc32c(self): data = b'abcd' assert crc32c(data) == 0x92c80a31 def test_crc32c_python(self): data = b'abcd' assert _crc32c(data) == 0x92c80a31 def test_crc32c_native(self): if _crc32c_native is None: return data = b'abcd' assert _crc32c_native(data) == 0x92c80a31 ================================================ FILE: tests/test_embedding.py ================================================ import unittest import torch import boto3 from tensorboardX import SummaryWriter from moto import mock_s3 class EmbeddingTest(unittest.TestCase): def test_embedding(self): w = SummaryWriter() all_features = torch.Tensor([[1, 2, 3], [5, 4, 1], [3, 7, 7]]) all_labels = torch.Tensor([33, 44, 55]) all_images = torch.zeros(3, 3, 5, 5) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, global_step=2) dataset_label = ['test'] * 2 + ['train'] * 2 all_labels = list(zip(all_labels, dataset_label)) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, metadata_header=['digit', 'dataset'], global_step=2) def test_embedding_64(self): w = SummaryWriter() all_features = torch.Tensor([[1, 2, 3], [5, 4, 1], [3, 7, 7]]) all_labels = torch.Tensor([33, 44, 55]) all_images = torch.zeros((3, 3, 5, 5), dtype=torch.float64) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, global_step=2) dataset_label = ['test'] * 2 + ['train'] * 2 all_labels = list(zip(all_labels, dataset_label)) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, metadata_header=['digit', 'dataset'], global_step=2) def test_embedding_square(self): w = SummaryWriter(comment='sq') all_features = torch.rand(228,256) all_images = torch.rand(228, 3, 32, 32) for i in range(all_images.shape[0]): all_images[i] *= (float(i)+60)/(all_images.shape[0]+60) w.add_embedding(all_features, label_img=all_images, global_step=2) def test_embedding_fail(self): with self.assertRaises(AssertionError): w = SummaryWriter(comment='shouldfail') all_features = torch.rand(228,256) all_images = torch.rand(228, 3, 16, 32) for i in range(all_images.shape[0]): all_images[i] *= (float(i)+60)/(all_images.shape[0]+60) w.add_embedding(all_features, label_img=all_images, global_step=2) @mock_s3 def test_embedding_s3_mock(self): client = boto3.client('s3', region_name='us-east-1') client.create_bucket(Bucket='this') w = SummaryWriter("s3://this/is/apen") all_features = torch.Tensor([[1, 2, 3], [5, 4, 1], [3, 7, 7]]) all_labels = torch.Tensor([33, 44, 55]) all_images = torch.zeros(3, 3, 5, 5) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, global_step=2) dataset_label = ['test'] * 2 + ['train'] * 2 all_labels = list(zip(all_labels, dataset_label)) w.add_embedding(all_features, metadata=all_labels, label_img=all_images, metadata_header=['digit', 'dataset'], global_step=2) w.close() ================================================ FILE: tests/test_figure.py ================================================ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import matplotlib matplotlib.use('agg') import matplotlib.pyplot as plt import unittest from tensorboardX import SummaryWriter class FigureTest(unittest.TestCase): def test_figure(self): writer = SummaryWriter() figure, axes = plt.figure(), plt.gca() circle1 = plt.Circle((0.2, 0.5), 0.2, color='r') circle2 = plt.Circle((0.8, 0.5), 0.2, color='g') axes.add_patch(circle1) axes.add_patch(circle2) plt.axis('scaled') plt.tight_layout() writer.add_figure("add_figure/figure", figure, 0, close=False) assert plt.fignum_exists(figure.number) is True writer.add_figure("add_figure/figure", figure, 1) assert plt.fignum_exists(figure.number) is False writer.close() def test_figure_list(self): writer = SummaryWriter() figures = [] for i in range(5): figure = plt.figure() plt.plot([i * 1, i * 2, i * 3], label="Plot " + str(i)) plt.xlabel("X") plt.xlabel("Y") plt.legend() plt.tight_layout() figures.append(figure) writer.add_figure("add_figure/figure_list", figures, 0, close=False) assert all([plt.fignum_exists(figure.number) is True for figure in figures]) writer.add_figure("add_figure/figure_list", figures, 1) assert all([plt.fignum_exists(figure.number) is False for figure in figures]) writer.close() ================================================ FILE: tests/test_hparams.py ================================================ import unittest import numpy as np from tensorboardX import SummaryWriter hparam = {'lr': [0.1, 0.01, 0.001], 'bsize': [1, 2, 4], 'n_hidden': [100, 200], 'bn': [True, False]} metrics = {'accuracy', 'loss'} def train(lr, bsize, n_hidden): x = lr + bsize + n_hidden return x, x*5 class HparamsTest(unittest.TestCase): def test_smoke(self): i = 0 with SummaryWriter() as w: for lr in hparam['lr']: for bsize in hparam['bsize']: for n_hidden in hparam['n_hidden']: for bn in hparam['bn']: accu, loss = train(lr, bsize, n_hidden) i = i + 1 w.add_hparams({'lr': lr, 'bsize': bsize, 'n_hidden': n_hidden, 'bn': bn}, {'accuracy': accu, 'loss': loss}, name="trial"+str(i)) ================================================ FILE: tests/test_lint.py ================================================ def test_linting(): import subprocess subprocess.check_output(['ruff', 'check', 'tensorboardX']) ================================================ FILE: tests/test_multiprocess_write.py ================================================ # the file name is intended. pytest don't play well with multiprocessing from tensorboardX import GlobalSummaryWriter as SummaryWriter from tensorboard.compat.tensorflow_stub.pywrap_tensorflow import PyRecordReader_New from tensorboardX.proto import event_pb2 import multiprocessing as mp import numpy as np import pytest import unittest import time mp.set_start_method('fork') class GlobalWriterTest(unittest.TestCase): def test_flush(self): N_TEST = 5 w = SummaryWriter(flush_secs=1) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # all of the data should be flushed r.GetNext() def test_flush_timer_is_long_so_data_is_not_there(self): with self.assertRaises(BaseException): N_TEST = 5 w = SummaryWriter(flush_secs=20) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # missing data r.GetNext() def test_flush_after_close(self): N_TEST = 5 w = SummaryWriter(flush_secs=20) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) w.close() r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # all of the data should be flushed r.GetNext() def test_auto_close(self): pass def test_writer(self): TEST_LEN = 100 N_PROC = 4 writer = SummaryWriter() event_filename = writer.file_writer.event_writer._ev_writer._file_name predifined_values = list(range(TEST_LEN)) def train3(): for i in range(TEST_LEN): writer.add_scalar('many_write_in_func', predifined_values[i]) time.sleep(0.01*np.random.randint(0, 10)) processes = [] for i in range(N_PROC): p1 = mp.Process(target=train3) processes.append(p1) p1.start() for p in processes: p.join() writer.close() collected_values = [] r = PyRecordReader_New(event_filename) r.GetNext() # meta data, so skip for _ in range(TEST_LEN*N_PROC): # all of the data should be flushed r.GetNext() ev = event_pb2.Event() value = ev.FromString(r.record()).summary.value collected_values.append(value[0].simple_value) collected_values = sorted(collected_values) for i in range(TEST_LEN): for j in range(N_PROC): assert collected_values[i*N_PROC+j] == i ================================================ FILE: tests/test_numpy.py ================================================ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import numpy as np import unittest from tensorboardX import x2num class NumpyTest(unittest.TestCase): def test_scalar(self): res = x2num.make_np(1.1) assert isinstance(res, np.ndarray) and res.shape == (1,) res = x2num.make_np(1 << 64 - 1) # uint64_max assert isinstance(res, np.ndarray) and res.shape == (1,) res = x2num.make_np(np.float16(1.00000087)) assert isinstance(res, np.ndarray) and res.shape == (1,) if hasattr(np, 'float128'): res = x2num.make_np(np.float128(1.00008 + 9)) assert isinstance(res, np.ndarray) and res.shape == (1,) res = x2num.make_np(np.int64(100000000000)) assert isinstance(res, np.ndarray) and res.shape == (1,) def test_make_grid(self): pass def test_numpy_vid(self): shapes = [(16, 3, 30, 28, 28), (19, 3, 30, 28, 28), (19, 3, 29, 23, 19)] for s in shapes: x = np.random.random_sample(s) # assert x2num.make_np(x, 'VID').shape[3] == 3 def test_numpy_vid_uint8(self): x = np.random.randint(0, 256, (16, 3, 30, 28, 28)).astype(np.uint8) # x2num.make_np(x, 'VID').shape[3] == 3 ================================================ FILE: tests/test_onnx_graph.py ================================================ import unittest import torch from tensorboardX import SummaryWriter # https://github.com/onnx/models/blob/master/vision/classification/mnist/model/mnist-8.onnx class ONNXGraphTest(unittest.TestCase): def test_onnx_graph(self): with SummaryWriter() as w: w.add_onnx_graph('tests/mnist-8.onnx') ================================================ FILE: tests/test_openvino_graph.py ================================================ import unittest from tensorboardX import SummaryWriter class OPENVINOGraphTest(unittest.TestCase): def test_openvino_graph(self): with SummaryWriter() as w: w.add_openvino_graph('examples/mobilenetv2.xml') ================================================ FILE: tests/test_pr_curve.py ================================================ import unittest import torch import numpy as np from tensorboardX import SummaryWriter from tensorboardX import summary from .expect_reader import compare_proto np.random.seed(0) true_positive_counts = [75, 64, 21, 5, 0] false_positive_counts = [150, 105, 18, 0, 0] true_negative_counts = [0, 45, 132, 150, 150] false_negative_counts = [0, 11, 54, 70, 75] precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0] recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0] class PRCurveTest(unittest.TestCase): def test_smoke(self): with SummaryWriter() as writer: writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand( 100), 1) writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, 1) def test_pr_purve(self): random_labels = np.array([0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0]) random_probs = np.array([0.33327776, 0.30032885, 0.79012837, 0.04306813, 0.65221544, 0.58481968, 0.28305522, 0.53795795, 0.00729739, 0.52266951, 0.22464247, 0.11262435, 0.41573075, 0.92493992, 0.73066758, 0.43867735, 0.27955449, 0.56975382, 0.53933028, 0.34392824, 0.30312509, 0.81732807, 0.55408544, 0.3969487 , 0.31768033, 0.24353266, 0.47198005, 0.19999122, 0.05788022, 0.24046305, 0.04651082, 0.30061738, 0.78321545, 0.82670207, 0.49200517, 0.80904619, 0.96711993, 0.3160946 , 0.01049424, 0.60108337, 0.56508792, 0.83729429, 0.9717386 , 0.46306053, 0.80232138, 0.24166823, 0.7393237 , 0.50820418, 0.04944932, 0.53854157, 0.10765172, 0.84723855, 0.20518299, 0.3143431 , 0.51299074, 0.47065695, 0.54267833, 0.1812676 , 0.06265177, 0.34110327, 0.30915171, 0.91870169, 0.91309447, 0.31395817, 0.36780571, 0.98297986, 0.00594547, 0.52839042, 0.70229202, 0.37779588, 0.15207045, 0.59759632, 0.72397032, 0.71502195, 0.90135725, 0.43970107, 0.17123532, 0.08785938, 0.04986818, 0.62702444, 0.69171023, 0.30537792, 0.30285433, 0.27124347, 0.27693729, 0.7136039 , 0.48022489, 0.20916285, 0.2018599 , 0.92401008, 0.30189681, 0.46862626, 0.96353024, 0.30468533, 0.68281294, 0.30623562, 0.40795975, 0.76824531, 0.89824215, 0.69845035], dtype=np.float16) compare_proto(summary.pr_curve('tag', random_labels, random_probs, 1), self) def test_pr_purve_raw(self): compare_proto(summary.pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, 1), self) ================================================ FILE: tests/test_pytorch_graph.py ================================================ from __future__ import absolute_import, division, print_function, unicode_literals import unittest import torch from tensorboardX import SummaryWriter class PytorchGraphTest(unittest.TestCase): def test_pytorch_graph(self): dummy_input = (torch.zeros(1, 3),) class myLinear(torch.nn.Module): def __init__(self): super(myLinear, self).__init__() self.linear = torch.nn.Linear(3, 5) def forward(self, x): return self.linear(x) with SummaryWriter(comment='LinearModel') as w: w.add_graph(myLinear(), dummy_input, True) def test_wrong_input_size(self): print('expect error here:') with self.assertRaises(RuntimeError): dummy_input = torch.rand(1, 9) model = torch.nn.Linear(3, 5) with SummaryWriter(comment='expect_error') as w: w.add_graph(model, dummy_input) # error ================================================ FILE: tests/test_pytorch_np.py ================================================ from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals from tensorboardX import x2num, SummaryWriter import torch import numpy as np import unittest class PyTorchNumpyTest(unittest.TestCase): def test_pytorch_np(self): tensors = [torch.rand(3, 10, 10), torch.rand(1), torch.rand(1, 2, 3, 4, 5)] for tensor in tensors: # regular tensor assert isinstance(x2num.make_np(tensor), np.ndarray) # CUDA tensor if torch.cuda.device_count() > 0: assert isinstance(x2num.make_np(tensor.cuda()), np.ndarray) # regular variable assert isinstance(x2num.make_np(torch.autograd.Variable(tensor)), np.ndarray) # CUDA variable if torch.cuda.device_count() > 0: assert isinstance(x2num.make_np(torch.autograd.Variable(tensor).cuda()), np.ndarray) # python primitive type assert(isinstance(x2num.make_np(0), np.ndarray)) assert(isinstance(x2num.make_np(0.1), np.ndarray)) def test_pytorch_write(self): with SummaryWriter() as w: w.add_scalar('scalar', torch.autograd.Variable(torch.rand(1)), 0) def test_pytorch_histogram(self): with SummaryWriter() as w: w.add_histogram('float histogram', torch.rand((50,))) w.add_histogram('int histogram', torch.randint(0, 100, (50,))) def test_pytorch_histogram_raw(self): with SummaryWriter() as w: num = 50 floats = x2num.make_np(torch.rand((num,))) bins = [0.0, 0.25, 0.5, 0.75, 1.0] counts, limits = np.histogram(floats, bins) sum_sq = floats.dot(floats).item() w.add_histogram_raw('float histogram raw', min=floats.min().item(), max=floats.max().item(), num=num, sum=floats.sum().item(), sum_squares=sum_sq, bucket_limits=limits[1:].tolist(), bucket_counts=counts.tolist()) ints = x2num.make_np(torch.randint(0, 100, (num,))) bins = [0, 25, 50, 75, 100] counts, limits = np.histogram(ints, bins) sum_sq = ints.dot(ints).item() w.add_histogram_raw('int histogram raw', min=ints.min().item(), max=ints.max().item(), num=num, sum=ints.sum().item(), sum_squares=sum_sq, bucket_limits=limits[1:].tolist(), bucket_counts=counts.tolist()) ================================================ FILE: tests/test_record_writer.py ================================================ from tensorboardX import SummaryWriter import unittest from tensorboardX.record_writer import S3RecordWriter, make_valid_tf_name, GCSRecordWriter import os import boto3 import shutil from moto import mock_s3 os.environ.setdefault("AWS_ACCESS_KEY_ID", "foobar_key") os.environ.setdefault("AWS_SECRET_ACCESS_KEY", "foobar_secret") class RecordWriterTest(unittest.TestCase): @mock_s3 def test_record_writer_s3(self): client = boto3.client('s3', region_name='us-east-1') client.create_bucket(Bucket='this') writer = S3RecordWriter('s3://this/is/apen') bucket, path = writer.bucket_and_path() assert bucket == 'this' assert path == 'is/apen' writer.write(bytes(42)) writer.flush() shutil.rmtree('s3:') def test_make_valid_tf_name(self): newname = make_valid_tf_name('$ave/&sound') assert newname == '._ave/_sound' def test_record_writer_gcs(self): pass # we don't have mock test, so expect error here. However, # Travis CI env won't raise exception for the following code, # so I commented it out. # with self.assertRaises(Exception): # writer = GCSRecordWriter('gs://this/is/apen') # writer.write(bytes(42)) # writer.flush() ================================================ FILE: tests/test_summary.py ================================================ from __future__ import absolute_import, division, print_function, unicode_literals import io from tensorboardX import summary from .expect_reader import compare_proto, write_proto import numpy as np import pytest import unittest import torch from PIL import Image, ImageSequence # compare_proto = write_proto # massive update expect def tensor_N(shape, dtype=float): numel = np.prod(shape) x = (np.arange(numel, dtype=dtype)).reshape(shape) return x class SummaryTest(unittest.TestCase): def test_uint8_image(self): ''' Tests that uint8 image (pixel values in [0, 255]) is not changed ''' test_image = tensor_N(shape=(3, 32, 32), dtype=np.uint8) compare_proto(summary.image('dummy', test_image), self) def test_float32_image(self): ''' Tests that float32 image (pixel values in [0, 1]) are scaled correctly to [0, 255] ''' test_image = tensor_N(shape=(3, 32, 32)) compare_proto(summary.image('dummy', test_image), self) def test_float_1_converts_to_uint8_255(self): green_uint8 = np.array([[[0, 255, 0]]], dtype='uint8') green_float32 = np.array([[[0, 1, 0]]], dtype='float32') a = summary.image(tensor=green_uint8, tag='') b = summary.image(tensor=green_float32, tag='') self.assertEqual(a, b) def test_list_input(self): with pytest.raises(Exception): summary.histogram('dummy', [1, 3, 4, 5, 6], 'tensorflow') def test_0d_input(self): x = torch.rand(1) summary.scalar('0d', x[0]) def test_1d_input(self): x = torch.rand(1) summary.scalar('0d', x) def test_empty_input(self): print('expect error here:') with pytest.raises(Exception): summary.histogram('dummy', np.ndarray(0), 'tensorflow') def test_image_with_boxes(self): compare_proto(summary.image_boxes('dummy', tensor_N(shape=(3, 32, 32)), np.array([[10, 10, 40, 40]])), self) def test_image_with_one_channel(self): compare_proto(summary.image('dummy', tensor_N(shape=(1, 8, 8)), dataformats='CHW'), self) def test_image_with_four_channel(self): compare_proto(summary.image('dummy', tensor_N(shape=(4, 8, 8)), dataformats='CHW'), self) def test_image_with_one_channel_batched(self): compare_proto(summary.image('dummy', tensor_N(shape=(2, 1, 8, 8)), dataformats='NCHW'), self) def test_image_with_3_channel_batched(self): compare_proto(summary.image('dummy', tensor_N(shape=(2, 3, 8, 8)), dataformats='NCHW'), self) def test_image_with_four_channel_batched(self): compare_proto(summary.image('dummy', tensor_N(shape=(2, 4, 8, 8)), dataformats='NCHW'), self) def test_image_without_channel(self): compare_proto(summary.image('dummy', tensor_N(shape=(8, 8)), dataformats='HW'), self) @staticmethod def _iter_gif(encoded_image): image_io = io.BytesIO(encoded_image) im = Image.open(image_io, ) for frame in ImageSequence.Iterator(im): yield frame.getchannel(0) @staticmethod def _load_expected_test_video(): with Image.open("tests/expect/test_summary.test_video.expect.gif") as im: return list(ImageSequence.Iterator(im)) def assert_grayscale(self, image) -> None: channels = image.split() c0colors = channels[0].getcolors() for c in channels[1:]: self.assertEqual(c0colors, c.getcolors()) def test_video(self): try: import moviepy except ImportError: self.skipTest('moviepy not installed') t1 = tensor_N(shape=(4, 3, 1, 8, 8)) v1 = summary.video("dummy", t1) frames = list(self._iter_gif(v1.value[0].image.encoded_image_string)) self.assertEqual(len(frames), 3) prepared = self._load_expected_test_video() for image, expected in zip(frames, prepared): self.assert_grayscale(image) self.assert_grayscale(expected) self.assertEqual( image.getchannel(0).getcolors(), expected.getchannel(0).getcolors() ) summary.video('dummy', tensor_N(shape=(16, 48, 1, 28, 28))) summary.video('dummy', tensor_N(shape=(20, 7, 1, 8, 8))) def test_audio(self): compare_proto(summary.audio('dummy', tensor_N(shape=(42,))), self) def test_text(self): compare_proto(summary.text('dummy', 'text 123'), self) def test_histogram_auto(self): compare_proto(summary.histogram('dummy', tensor_N(shape=(1024,)), bins='auto', max_bins=5), self) def test_histogram_fd(self): compare_proto(summary.histogram('dummy', tensor_N(shape=(1024,)), bins='fd', max_bins=5), self) def test_histogram_doane(self): compare_proto(summary.histogram('dummy', tensor_N(shape=(1024,)), bins='doane', max_bins=5), self) def test_custom_scalars(self): layout = {'Taiwan': {'twse': ['Multiline', ['twse/0050', 'twse/2330']]}, 'USA': {'dow': ['Margin', ['dow/aaa', 'dow/bbb', 'dow/ccc']], 'nasdaq': ['Margin', ['nasdaq/aaa', 'nasdaq/bbb', 'nasdaq/ccc']]}} summary.custom_scalars(layout) # smoke test only. def test_mesh(self): vertices_tensor = np.array([[ [1, 1, 1], [-1, -1, 1], [1, -1, -1], [-1, 1, -1], ]], dtype=float) colors_tensor = np.array([[ [255, 0, 0], [0, 255, 0], [0, 0, 255], [255, 0, 255], ]], dtype=int) faces_tensor = np.array([[ [0, 2, 3], [0, 3, 1], [0, 1, 2], [1, 3, 2], ]], dtype=int) compare_proto(summary.mesh('my_mesh', vertices=vertices_tensor, colors=colors_tensor, faces=faces_tensor), self) # It's hard to get dictionary sorted with same result in various envs. So only use one key per dict. def test_hparams(self): hp = {'lr': 0.1} mt = {'accuracy': 0.1} compare_proto(summary.hparams(hp, mt), self) def test_hparams_bool(self): hp = {'bool_var': True} mt = {'accuracy': 0.1} compare_proto(summary.hparams(hp, mt), self) def test_hparams_string(self): hp = {'string_var': "hi"} mt = {'accuracy': 0.1} compare_proto(summary.hparams(hp, mt), self) def test_hparams_smoke(self): hp = {'lr': 0.1, 'bsize': 4} mt = {'accuracy': 0.1, 'loss': 10} summary.hparams(hp, mt) hp = {'string': "1b", 'use magic': True} summary.hparams(hp, mt) ================================================ FILE: tests/test_summary_writer.py ================================================ from tensorboardX import SummaryWriter import tempfile import unittest class SummaryWriterTest(unittest.TestCase): def test_summary_writer_ctx(self): # after using a SummaryWriter as a ctx it should be closed with SummaryWriter(filename_suffix='.test') as writer: writer.add_scalar('test', 1) assert writer.file_writer is None def test_summary_writer_backcompat(self): with tempfile.TemporaryDirectory() as tmp_dir: with SummaryWriter(log_dir=tmp_dir) as writer: writer.add_scalar('test', 1) def test_summary_writer_close(self): # Opening and closing SummaryWriter a lot should not run into # OSError: [Errno 24] Too many open files for i in range(1000): writer = SummaryWriter() writer.close() def test_windowsPath(self): dummyPath = "C:\\Downloads\\fjoweifj02utj43tj430" with SummaryWriter(dummyPath) as writer: writer.add_scalar('test', 1) import shutil shutil.rmtree(dummyPath) def test_pathlib(self): import sys if sys.version_info.major == 2: import pathlib2 as pathlib else: import pathlib p = pathlib.Path('./pathlibtest') with SummaryWriter(p) as writer: writer.add_scalar('test', 1) import shutil shutil.rmtree(str(p)) def test_dummy_summary_writer(self): # You can't write to root folder without sudo. with SummaryWriter('/', write_to_disk=False) as writer: writer.add_scalar('test', 1) writer.flush() ================================================ FILE: tests/test_utils.py ================================================ from tensorboardX import summary from tensorboardX.utils import make_grid, _prepare_video, convert_to_HWC import numpy as np import pytest import unittest class UtilsTest(unittest.TestCase): def test_to_HWC(self): np.random.seed(1) test_image = np.random.randint(0, 256, size=(3, 32, 32), dtype=np.uint8) converted = convert_to_HWC(test_image, 'chw') assert converted.shape == (32, 32, 3) test_image = np.random.randint(0, 256, size=(16, 3, 32, 32), dtype=np.uint8) converted = convert_to_HWC(test_image, 'nchw') assert converted.shape == (64, 256, 3) test_image = np.random.randint(0, 256, size=(32, 32), dtype=np.uint8) converted = convert_to_HWC(test_image, 'hw') assert converted.shape == (32, 32, 3) def test_prepare_video(self): # at each timestep the sum over all other dimensions of the video should stay the same np.random.seed(1) V_before = np.random.random((4, 10, 3, 20, 20)) V_after = _prepare_video(np.copy(V_before)) V_before = np.swapaxes(V_before, 0, 1) V_before = np.reshape(V_before, newshape=(10, -1)) V_after = np.reshape(V_after, newshape=(10, -1)) np.testing.assert_array_almost_equal(np.sum(V_before, axis=1), np.sum(V_after, axis=1)) ================================================ FILE: tests/test_visdom.py ================================================ from tensorboardX import TorchVis import numpy as np import pytest import unittest true_positive_counts = [75, 64, 21, 5, 0] false_positive_counts = [150, 105, 18, 0, 0] true_negative_counts = [0, 45, 132, 150, 150] false_negative_counts = [0, 11, 54, 70, 75] precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0] recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0] class VisdomTest(unittest.TestCase): def test_TorchVis(self): w = TorchVis('visdom') w.add_scalar('scalar_visdom', 1, 0) w.add_scalar('scalar_visdom', 2, 1) w.add_histogram('histogram_visdom', np.array([1, 2, 3, 4, 5]), 1) w.add_image('image_visdom', np.ndarray((3, 20, 20)), 2) # w.add_video('video_visdom', np.random.randn(1, 3, 100, 200, 200), 3) w.add_audio('audio_visdom', [1, 2, 3, 4, 5]) w.add_text('text_visdom', 'mystring') w.add_pr_curve('pr_curve_visdom', np.random.randint(2, size=100), np.random.rand(100), 10) w.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, 20) del w ================================================ FILE: tests/test_writer.py ================================================ from tensorboardX import SummaryWriter from tensorboard.compat.tensorflow_stub.pywrap_tensorflow import PyRecordReader_New from tensorboardX.proto import event_pb2 import os import numpy as np import pytest import unittest import time freqs = [262, 294, 330, 349, 392, 440, 440, 440, 440, 440, 440] true_positive_counts = [75, 64, 21, 5, 0] false_positive_counts = [150, 105, 18, 0, 0] true_negative_counts = [0, 45, 132, 150, 150] false_negative_counts = [0, 11, 54, 70, 75] precision = [0.3333333, 0.3786982, 0.5384616, 1.0, 0.0] recall = [1.0, 0.8533334, 0.28, 0.0666667, 0.0] class WriterTest(unittest.TestCase): def test_flush(self): N_TEST = 5 w = SummaryWriter(flush_secs=1) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # all of the data should be flushed r.GetNext() def test_flush_timer_is_long_so_data_is_not_there(self): with self.assertRaises(BaseException): N_TEST = 5 w = SummaryWriter(flush_secs=20) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # missing data r.GetNext() def test_flush_after_close(self): N_TEST = 5 w = SummaryWriter(flush_secs=20) f = w.file_writer.event_writer._ev_writer._file_name for i in range(N_TEST): w.add_scalar('a', i) time.sleep(2) w.close() r = PyRecordReader_New(f) r.GetNext() # meta data, so skip for _ in range(N_TEST): # all of the data should be flushed r.GetNext() def test_auto_close(self): pass def test_reuse_writer_after_closed(self): w = SummaryWriter() w.close() w.add_text("reuse writer", "dont reuse without creating a new writer", 0) def test_writer(self): with SummaryWriter() as writer: sample_rate = 44100 n_iter = 0 writer.add_scalar('data/scalar_systemtime', 0.1, n_iter) writer.add_scalar('data/scalar_customtime', 0.2, n_iter, walltime=n_iter) writer.add_scalars('data/scalar_group', {"xsinx": n_iter * np.sin(n_iter), "xcosx": n_iter * np.cos(n_iter), "arctanx": np.arctan(n_iter)}, n_iter) x = np.zeros((32, 3, 64, 64)) # output from network writer.add_images('Image', x, n_iter) # Tensor writer.add_image_with_boxes('imagebox', np.zeros((3, 64, 64)), np.array([[10, 10, 40, 40], [40, 40, 60, 60]]), n_iter) x = np.zeros(sample_rate * 2) writer.add_audio('myAudio', x, n_iter) writer.add_video('myVideo', np.random.rand(16, 48, 1, 28, 28).astype(np.float32), n_iter) writer.add_text('Text', 'text logged at step:' + str(n_iter), n_iter) writer.add_text('markdown Text', '''a|b\n-|-\nc|d''', n_iter) writer.add_histogram('hist', np.random.rand(100, 100), n_iter) writer.add_pr_curve('xoxo', np.random.randint(2, size=100), np.random.rand( 100), n_iter) # needs tensorboard 0.4RC or later writer.add_pr_curve_raw('prcurve with raw data', true_positive_counts, false_positive_counts, true_negative_counts, false_negative_counts, precision, recall, n_iter) # export scalar data to JSON for external processing writer.export_scalars_to_json("./all_scalars.json") os.remove("./all_scalars.json") imgs = [] for i in range(5): imgs.append(np.ones((3, 100, 110))) with SummaryWriter() as w: w.add_images('img_list', imgs, dataformats='CHW') def test_writer_with_default_metadata(self): step = 17 walltime = 13.0 with ( unittest.mock.patch("tensorboardX.event_file_writer.EventFileWriter.add_event") as fn, SummaryWriter() as writer, ): # Check defaults are used unless explicitly specified. with writer.use_metadata(global_step=step, walltime=walltime): writer.add_scalar('data/scalar_defaults', 0.1) event = fn.call_args[0][0] assert event.wall_time == walltime assert event.step == step writer.add_scalar('data/scalar_default_with_step', 0.2, global_step=7) event = fn.call_args[0][0] assert event.wall_time == walltime assert event.step == 7 writer.add_scalar('data/scalar_default_with_walltime', 0.3, walltime=18.0) event = fn.call_args[0][0] assert event.wall_time == 18.0 assert event.step == step # Check default behavior outside the context. writer.add_scalar('data/standard_behavior', 0.4) event = fn.call_args[0][0] assert time.time() - event.wall_time < 1 assert event.step == 0